#!/usr/bin/perl

use strict;
use lib 'lib';
use Cwd;
use ShipIt;
use Getopt::Long;

use constant CONFFILE => ".shipit";

my $opt_dry;
my $opt_wc;
my $opt_skiptests;
exit(1) unless
    GetOptions("dry-run|n"    => \$opt_dry,
               "write-config" => \$opt_wc,
               "skip-test"    => \$opt_skiptests,
               );

my $dir = shift || getcwd;
die "Usage: shipit [<dir>]\n" unless -d $dir;
chdir($dir) or die "Failed to chdir to $dir\n";

if ($opt_wc) {
    die "This directory already has a " . CONFFILE . " config file.  I won't overwrite it.  Aborting.\n"
        if -e CONFFILE;
    ShipIt::Conf->write_template(CONFFILE);
    ShipIt::Util::edit_file(CONFFILE);
    print "Config file written.\n";
    exit(0);
}

unless (-e CONFFILE) {
    die "No " . CONFFILE . " configuration file in $dir.\n" .
        "Re-run with --write-config to get default config in \$EDITOR.\n";
}

my $conf  = ShipIt::Conf->parse(CONFFILE);
my $state = ShipIt::State->new($conf);
$state->set_dry_run($opt_dry);
$state->set_skip_tests($opt_skiptests);

foreach my $step ($conf->steps) {
    warn "Running step $step\n";
    $step->run($state);
}

=head1 NAME

shipit - Executable for ShipIt

=head1 SYNOPSIS

 $ shipit
 $ shipit --dry-run       # or -n
 $ shipit --write-config
 $ shipit --skip-tests    # but please don't.

=head1 SEE ALSO

L<ShipIt>

L<ShipIt::Conf>

=head1 AUTHOR

Brad Fitzpatrick - brad@danga.com

=head1 COPYRIGHT, LICENSE, and WARRANTY

ShipIt is copyright 2007 by SixApart, Ltd.

It's licensed under the same terms as Perl itself.

ShipIt comes with no warranty, either expressed or implied.


syntax highlighted by Code2HTML, v. 0.9.1