From 5a3e0dcfcc587edec65246fc5320dbe9b95bf987 Mon Sep 17 00:00:00 2001 From: Dominik Meyer Date: Tue, 11 Sep 2018 20:18:53 +0200 Subject: [PATCH] ADD: method to delete an issue from the issue list --- lib/Git/IssueManager.pm | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/Git/IssueManager.pm b/lib/Git/IssueManager.pm index a68cb0e..6ceadfc 100644 --- a/lib/Git/IssueManager.pm +++ b/lib/Git/IssueManager.pm @@ -285,16 +285,43 @@ sub list return @issues; } +=method delete + delete an issue from the issue list + +=cut sub delete { my $self = shift; my $id = shift; + my @statusse = ("open","closed","assigned","inprogress"); die("IssueManager not initialized") unless $self->ready(); - my $ref = $self->repository->getReference('refs/heads/issues'); - my $root = $ref->getTree(); - + my $ref = $self->repository->getReference('refs/heads/issues'); + my $tag = $ref->find(".tag")->content(); + my $root = $ref->getTree(); + + + for my $s (@statusse) + { + for my $status ($root->find("open")) + { + for my $i ($status->get()) + { + if (ref($i) eq "Git::LowLevel::Tree") + { + my $mytag = $tag . "-" . substr($i->hash(),0,8); + if ($id eq $mytag) + { + $status->del($i); + $ref->commit("removed issue " . $i->mypath); + return; + } + } + } + } + } + die("issue " . $id . " not found\n"); } 1;