| Shipwright documentation | Contained in the Shipwright distribution. |
Shipwright::Script::Delete - Delete source(s)
shipwright delete cpan-Jifty cpan-Catalyst
--unreferenced : to delete all unreferenced dists except the last one --check-only : show the lists, not really delete
-r [--repository] REPOSITORY : specify the repository uri of our shipyard
-l [--log-level] LOGLEVEL : specify the log level
(info, debug, warn, error, or fatal)
--log-file FILENAME : specify the log file
sunnavy <sunnavy@bestpractical.com>
Shipwright is Copyright 2007-2011 Best Practical Solutions, LLC.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Shipwright documentation | Contained in the Shipwright distribution. |
package Shipwright::Script::Delete; use strict; use warnings; use base qw/App::CLI::Command Shipwright::Base Shipwright::Script/; __PACKAGE__->mk_accessors(qw/unreferenced check_only/); use Shipwright; use Shipwright::Util; sub options { ( 'unreferenced' => 'unreferenced', 'C|check-only' => 'check_only', ); } sub run { my $self = shift; my @sources = @_; unless ( @sources || $self->unreferenced ) { confess_or_die "need name arg or --unreferenced\n"; } if ( @sources && $self->unreferenced ) { confess_or_die "please choose only one thing: a dist name or --unreferenced"; } my $shipwright = Shipwright->new( repository => $self->repository, ); my @names; if (@sources) { for my $name (@sources) { my $map = $shipwright->backend->map; if ( $map && $map->{$name} ) { # it's a cpan module $name = $map->{$name}; } push @names, $name; } } else { # unreferenced dists except the last one my $refs = $shipwright->backend->refs; my $order = $shipwright->backend->order; if ($refs) { for my $name ( keys %$refs ) { next if $name eq $order->[-1]; push @names, $name unless $refs->{$name}; } } } if ( $self->check_only ) { $self->log->fatal( "dists to be deleted are: @names" ); } else { for my $name (@names) { $shipwright->backend->trim( name => $name ); } $self->log->fatal( "successfully deleted @names" ); } } 1; __END__