The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use YAML::XS;

use Vulcan::OptConf;
use Data::Dumper;
use File::Spec;
$Vulcan::OptConf::ARGC = 1;

$| ++;

=head1 SYNOPSIS

 $0 app [--stage] [--clean] [--switch] [--status] 
      [--rollback apps,conf,data ]  [ --limit KBPS ] [--verbose]

=cut

use constant SWITCHDIR => '/home/s/var/hdp/home/cloudops/deploy';

my ( $option, %seco );
BEGIN { $option = Vulcan::OptConf->load(); %seco = $option->dump( 'seco' ) }

use lib $seco{lib};
use Deploy;

my %o = $option->get( qw( stage clean switch status rollback=s limit=i verbose ) )->dump;
my $deploy = Deploy->new( File::Spec->join( SWITCHDIR, $ARGV[0] ) );

$Deploy::VERBOSE = $o{verbose};
$deploy->stage( limit => $o{limit} ) if $o{stage};
$deploy->clean() if $o{clean};
$deploy->switch( ) if $o{switch};
$deploy->rollback( split ',', $o{rollback} ) if $o{rollback};
YAML::XS::DumpFile \*STDOUT, scalar $deploy->status() if $o{status};

YAML::XS::DumpFile \*STDOUT, @$deploy
unless grep{ $o{$_} } qw( stage clean switch rollback status );