BugCli
view release on metacpan or search on metacpan
foreach my $cmd ( keys %{ $config->{command} } ) {
my ($code) = ord eval "\"$config->{command}->{$cmd}\"";
$self->term()
->add_defun( 'process_bind', sub { process_bind( $self, $cmd ) },
$code );
}
$dbh = DBIx::SQLEngine->new(
"DBI:mysql:$config->{server}->{table}:$config->{server}->{host}",
$config->{server}->{user},
$config->{server}->{password},
{
RaiseError => 1,
ShowErrorStatement => 1,
}
);
my ($uth) = $dbh->fetch_select(
table => 'profiles',
columns => [ 'userid', 'login_name' ]
);
foreach my $uid ( @{$uth} ) {
$login_to_uid{ $$uid{login_name} } = $$uid{userid};
$uid_to_login{ $$uid{userid} } = $$uid{login_name};
}
$llogin = $config->{server}->{login};
}
sub idle {
%lastbugs = query_to_bugs( $dbh->fetch_select( sql => $lastquery ) )
if defined $lastquery;
}
sub run_history {
my ($self) = @_;
print join( "\n", $self->term()->GetHistory() ) . "\n";
}
sub add_bug {
my ( $dbh, $assignee, $subject, $text, $version, $milestone, $severity ) =
@_;
my ($time) = strftime "%Y-%m-%d %H:%M:%S", localtime;
my ($sth) = $dbh->do_insert(
'table' => 'bugs',
'columns' => [
qw(assigned_to bug_severity bug_status creation_ts short_desc product_id reporter version target_milestone component_id)
],
'values' => [
$login_to_uid{$assignee}, $severity,
$time, $subject,
$config->{product}->{product_id}, $login_to_uid{$llogin},
$version, $milestone,
$config->{product}->{component_id}
]
);
my ($bugid) = $dbh->fetch_one_value( sql => $Query{AutoIncrement} );
update_bug( $dbh, $bugid, undef, undef, $text );
return $bugid;
}
sub update_bug {
my ( $dbh, $bug_id, $bug_resolution, $bug_status, $text ) = @_;
if ( defined $bug_resolution ) {
$dbh->do_update(
'table' => 'bugs',
'values' => { resolution => "'$bug_resolution'" },
'criteria' => { bug_id => $bug_id }
);
}
if ( defined $bug_status ) {
$dbh->do_update(
'table' => 'bugs',
'values' => { bug_status => "'$bug_status'" },
'criteria' => { bug_id => $bug_id }
);
}
my ($time) = strftime "%Y-%m-%d %H:%M:%S", localtime;
$dbh->do_insert(
'table' => 'longdescs',
'columns' => [qw(bug_id who bug_when work_time thetext)],
'values' => [ $bug_id, $login_to_uid{$llogin}, "'$time'", 0.00, $text ]
);
}
#only delete a certain description
sub bugs_to_table {
my (%bugs) = @_;
my (@b);
foreach my $bid ( keys %bugs ) {
push @b,
[
$bid, $bugs{$bid}->{bug_severity},
$bugs{$bid}->{bug_status}, $bugs{$bid}->{short_desc},
$bugs{$bid}->{version}, $bugs{$bid}->{resolution}
];
}
return @b;
}
sub query_to_bugs {
my ($sth) = @_;
my (%bugs);
foreach my $a ( @{$sth} ) {
$bugs{ $$a{bug_id} } = $a;
$bugs{ $$a{bug_id} }{COMMENTS} = get_comments( $dbh, $$a{bug_id} );
}
return %bugs;
}
sub print_bug {
my ( $id, $bug ) = @_;
return <<EOT;
=====================
Bug #$id Information
Subject: $$bug{short_desc}
Severity: $$bug{bug_severity}
Status: $$bug{bug_status}
( run in 0.465 second using v1.01-cache-2.11-cpan-2398b32b56e )