aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md18
-rwxr-xr-xchanged_update.pl122
2 files changed, 140 insertions, 0 deletions
diff --git a/README.md b/README.md
index 51c7dcf..f333829 100644
--- a/README.md
+++ b/README.md
@@ -110,3 +110,21 @@ Many of my scripts require [uberprompt](https://github.com/shabble/irssi-scripts
dependency. Those that do will say so in the comments at the top of the file,
and will probably refuse to load without it.
+## Reminders for myself
+
+### Deployment Process
+
+* Commit messages should be prefixed with something approximating the name of
+ the script or directory to make it obvious what thing is being worked on.
+
+* `./readme_generator.pl <dir> [<dirs]` to generate README files for each script
+ that has POD in it. Use `--overwrite` from time to time to clean things out.
+
+* `./changed_update.pl <script_name>` changes the %IRSSI{changed} timestamp
+ to the current time, which is something I always forget to do.
+
+* Think about bumping the internal version number if it's a big change.
+
+* Commit!
+
+
diff --git a/changed_update.pl b/changed_update.pl
new file mode 100755
index 0000000..15f6667
--- /dev/null
+++ b/changed_update.pl
@@ -0,0 +1,122 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use feature qw/say/;
+use DateTime;
+
+my $infile = $ARGV[0] // die "No File provided"; #'feature-tests/template.pl.copy';
+my $transform = PPI::Transform::UpdateTimestamp->new
+ (
+ updated => DateTime->now,
+ quiet => 1
+ );
+
+
+my $ret = $transform->file($infile);
+
+#say "Return value: " .
+
+exit (defined $ret && $ret ? 0 : 1);
+
+
+
+package PPI::Transform::UpdateTimestamp;
+
+use strict;
+use warnings;
+
+use PPI;
+use PPI::Dumper;
+use DateTime;
+use Carp qw/carp/;
+
+use base 'PPI::Transform';
+
+our $VERSION = '3.14';
+
+use feature qw/say/;
+
+sub new {
+ my ($class, @args) = @_;
+ my $self = $class->SUPER::new(@args);
+
+ # Must provide an updated timestamp.
+ unless ( exists ($self->{updated}) ) {
+ #PPI::Exception->throw("Did not provide a valid updated timestamp.");
+ my $now = DateTime->now();
+ carp("No updated value provided, using $now");
+ $self->set_updated($now);
+ }
+
+ return $self;
+}
+
+sub updated {
+ $_[0]->{updated};
+}
+sub quiet {
+ $_[0]->{quiet}
+}
+
+sub set_updated {
+ my ($self, $val) = shift;
+ $self->{updatd} = $val;
+}
+
+sub document {
+ my ($self, $doc) = @_;
+ die "Transform requires PPI::Document" unless ref($doc) eq 'PPI::Document';
+
+ my $vars = $doc->find('PPI::Statement::Variable');
+ my $ret = 0;
+ foreach my $var (@$vars) {
+ foreach my $vc ($var->children) {
+ if ($vc->class eq 'PPI::Token::Symbol' and
+ $vc->canonical eq '%IRSSI') {
+ say "Found IRSSI Hash, processing it" unless $self->quiet;
+ $ret = $self->examine_struct($vc->statement);
+ }
+ }
+ }
+ return $ret;
+}
+
+sub examine_struct {
+ my ($self, $stmt) = @_;
+ my $ret = 0;
+
+ unless ($self->quiet) {
+ my $dumper = PPI::Dumper->new($stmt);
+ $dumper->print();
+ say "-" x 60;
+ }
+
+ foreach my $node ($stmt->schildren) {
+
+ if ($node->class eq 'PPI::Structure::List') {
+
+ foreach my $t ($node->tokens) {
+ next unless $t->significant;
+ if ($t->class eq 'PPI::Token::Word' and
+ $t->content =~ m/updated/) {
+
+ my $val = $t->snext_sibling->snext_sibling;
+ $val->set_content($self->updated);
+
+ if ($val->content eq $self->updated) {
+ $ret = 1;
+ }
+
+ say "Thingie: " . $t->content unless $self->quiet;
+ say "value set to: " . $val->content unless $self->quiet;
+ }
+ }
+ }
+ }
+ return $ret;
+}
+
+1;
+