# $Id$ package Youri::Submit::Action::Dependencies; =head1 NAME Youri::Submit::Action::Dependencies - Creates .deps files =head1 DESCRIPTION This action plugin ensures the creation of .deps files based on 'dependencies' define =cut use warnings; use strict; use Carp; use File::Basename; use base qw/Youri::Submit::Action/; sub _init { my $self = shift; my %options = ( perms => 644, uphost => '', user => '', ssh_key => '', verbose => '', @_ ); croak "undefined upload host" unless $options{uphost}; croak "undefined ssh key" unless $options{ssh_key}; foreach my $var ('perms', 'user', 'uphost', 'ssh_key', 'verbose') { $self->{"_$var"} = $options{$var}; } return $self; } sub run { my ($self, $package, $repository, $target, $define) = @_; croak "Not a class method" unless ref $self; return unless $define->{dependencies} =~ /^[\d,]+$/; my $file = $package->as_file(); my $dest = $repository->get_upload_dir($package, $target, $define); my $base = basename ($file); $dest =~ s/\/[0-9]{14}\./\/*./; my $deps = $define->{dependencies}; $deps =~ tr/,/\n/; my $cmd = "ssh -i $self->{_ssh_key} $self->{_user}\@$self->{_uphost} \"file=`echo $dest$base`; echo '$deps' > \\\$file.deps\""; print "Submit::Action::Dependencies: doing $cmd\n" if $self->{_verbose}; if (!$self->{_test}) { if (!system($cmd)) { print "Submit::Action::Dependencies: succeeded!\n"; return 1 } print "Submit::Action::Dependencies: failed!\n"; } } =head1 COPYRIGHT AND LICENSE Copyright (C) 2002-2014, YOURI project This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut 1;