# $Id: Bugzilla.pm 1689 2007-06-28 22:44:24Z guillomovitch $ package Youri::Submit::Action::Bugzilla; =head1 NAME Youri::Submit::Action::Bugzilla - Bugzilla synchronisation =head1 DESCRIPTION This action ensures synchronisation with Bugzilla. It assumes given package set is canonical, with source package first. =cut use warnings; use strict; use Carp; use Youri::BTS::Bugzilla; use base qw/Youri::Submit::Step/; sub _init { my $self = shift; my %options = ( lib => undef, project => undef, contact => undef, @_ ); $self->{_bugzilla} = Youri::BTS::Bugzilla->new( $options{lib} ? (lib => $options{lib}) : (), $options{project} ? (project => $options{project}) : (), ); $self->{_contact} = $options{contact}; } sub process_packages { my ($self, $packages, $repository, $target, $context) = @_; croak "Not a class method" unless ref $self; my $package = $packages->[0]; my $name = $package->get_name(); my $version = $package->get_version(); my $summary = $package->get_summary(); my $packager = $package->get_packager(); $packager =~ s/.*<(.*)>/$1/; if ($self->{_bugzilla}->has_package($name)) { my %versions = map { $_ => 1 } $self->{_bugzilla}->get_versions($name); unless ($versions{$version}) { print "adding version $version to bugzilla\n" if $self->{_verbose}; $self->{_bugzilla}->add_version($name, $version) unless $self->{_test}; } } else { print "adding package $name to bugzilla\n" if $self->{_verbose}; $self->{_bugzilla}->add_package( $name, $summary, $version, $packager, $self->{_contact} ) unless $self->{_test}; } } =head1 COPYRIGHT AND LICENSE Copyright (C) 2002-2006, YOURI project This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;