BugCli

 view release on metacpan or  search on metacpan

BugCli.pm  view on Meta::CPAN

    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 )