diff --git a/lib/App/Git/IssueManager/Modify.pm b/lib/App/Git/IssueManager/Modify.pm new file mode 100644 index 0000000..dce3d14 --- /dev/null +++ b/lib/App/Git/IssueManager/Modify.pm @@ -0,0 +1,112 @@ +package App::Git::IssueManager::Modify; +#ABSTRACT: class implementing the modify issue command of the GIT IssueManager +use strict; +use warnings; +use MooseX::App::Command; +extends qw(App::Git::IssueManager); +use Git::LowLevel; +use Git::IssueManager; +use Git::IssueManager::Issue; +use App::Git::IssueManager::Config; +use File::Temp qw/ tempfile/; +use File::Slurp; +use Term::ANSIColor; +use Try::Tiny; + + +command_short_description 'create an issue within a project'; +command_usage 'git issue add -s Humbug'; + +option 'subject' => ( + is => 'ro', + isa => 'Str', + required => 0, + documentation => q[the subject/title of the issue], + cmd_aliases => [qw(s)] +); + +option 'priority' => ( + is => 'ro', + isa => 'Str', + required => 0, + documentation => q[the priority of the issue (low, medium, high, urgent)], + cmd_aliases => [qw(p)], + default => "" +); + +option 'severity' => ( + is => 'ro', + isa => 'Str', + required => 0, + documentation => q[the severity of the issue (low, medium, high, critical)], + cmd_aliases => [qw(e)], + default => "" +); + +option 'type' => ( + is => 'ro', + isa => 'Str', + required => 0, + documentation => q[the type of the issue (bug, security-bug, improvement, feature, task)], + cmd_aliases => [qw(t)], + default => "" +); + +option 'description' => ( + is => 'ro', + isa => 'Str', + required => 0, + documentation => q[the description of the issue, only plain text or markdown. If not given an editor is started.], + cmd_aliases => [qw(d)], + default => "" +); + +option 'id' => ( + is => 'ro', + isa => 'Str', + required => 1, + documentation => q[the id of the issue], + cmd_aliases => [qw(i)] +); + +sub run +{ + my $self = shift; + my $manager = Git::IssueManager->new(repository=>Git::LowLevel->new(git_dir=> ".")); + if (!$manager->ready) + { + print("IssueManager not initialized yet. Please call \"init\" command to do so."); + exit(-1); + } + + my $modifications={}; + + if ($self->type) + { + $modifications->{type}=$self->type; + } + + if ($self->subject) + { + $modifications->{subject}=$self->subject; + } + + if ($self->priority) + { + $modifications->{priority}=$self->priority; + } + + if ($self->severity) + { + $modifications->{severity}=$self->severity; + } + + if ($self->description) + { + $modifications->{description}=$self->description; + } + + $manager->modify($self->id,$modifications); +} + +1;