MRenvoize/RMaintTrack.pl

From Koha Wiki
Jump to navigation Jump to search
#!/usr/bin/env perl

use 5.24.1;

use Mojo::File;
use Mojo::UserAgent;
use Git::Raw;

# todoist api key
my $api_key = 'your_todoist_key';

# ua
my $ua  = Mojo::UserAgent->new;

# open repository
my $repo = Git::Raw::Repository->open('/home/reposync/kohaclone');

# ensure we are looking at master
$repo->checkout('master',{ checkout_strategy => { safe => 1}});

# create a new walker
my $log  = $repo->walker;

# lookup last synced commit
my $file = Mojo::File->new('/home/reposync/last_sync_commit');
chomp(my $commit = $file->slurp);

# push commit range to walker
$log->push_range("$commit..HEAD");

# reverse walker
$log->sorting(['reverse']);

# print all commit messages
my $commitref;
while (my $commit = $log->next) {
  my $summary = $commit->summary;
  say $commit->id ." - ". $commit->summary;
  if ($commit->summary =~ /Bug (\d+)/) {
      my $bug_number = $1;
      $summary .= " [(Bugzilla)](https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=".$bug_number.")";
  }
  $commitref = $commit->id;
  $summary .= " [(Commit)](https://gitlab.com/mrenvoize/Koha/commit/".$commit->id.")";
  my $task = {
          content    => $summary,
          due_string => "next Monday",
          due_lang   => "en",
          priority   => 4,
          project_id => 2187026049
  };
  my $tx = $ua->post('https://beta.todoist.com/API/v8/tasks' => { Authorization=> "Bearer $api_key" } => json => $task );
}

say "Todoist Synced";
$file->spurt($commitref) if $commitref;