root/lang/perl/Archer/archer.pl @ 3707

Revision 3707, 2.6 kB (checked in by tokuhirom, 6 years ago)

r3854@mnk (orig r504): tokuhiro | 2007-08-03 22:03:01 -0700
apply the franck patch.thanks franck++.
added configmaker & recipe.


  • Property svn:executable set to *
Line 
1#!/usr/bin/perl
2use strict;
3use warnings;
4
5use Getopt::Long;
6use Pod::Usage;
7use FindBin ();
8use Path::Class;
9use File::Util;
10use Cwd;
11
12use lib dir( $FindBin::RealBin, 'lib' )->stringify;
13
14use Archer;
15
16my $argv_str = "@ARGV";
17my $fork_num = 1;
18my $config   = file( $FindBin::RealBin, 'config.yaml' )->stringify;
19Getopt::Long::GetOptions(
20    '--para=i'       => \$fork_num,
21    '--dry-run'      => \my $dry_run_fg,
22    '--skip=s'       => \my $skips,
23    '--shell',       => \my $shell,
24    '--man'          => \my $man,
25    '--config=s'     => \$config,
26    '--write-config' => \my $wc,
27) or pod2usage( 2 );
28Getopt::Long::Configure( "bundling" );    # allows -p
29pod2usage( -verbose => 2 ) if $man;
30
31if ( !@ARGV ) {
32
33    # name of the current dir, will be the project name
34    my $dir     = getcwd;
35    my $f       = File::Util->new;
36    my $project = $f->strip_path( $dir );
37    $config = '.archer.yaml';
38    if ( $f->existent( $config ) ) {
39        Archer->new(
40            {   project      => $project,
41                dry_run_fg   => $dry_run_fg,
42                parallel_num => $fork_num,
43                skips => +{ map { $_ => 1 } split /,/, ( $skips || '' ) },
44                config_yaml => $config,
45                argv_str    => $argv_str,
46                shell       => $shell,
47            }
48        )->run;
49        exit;
50    }
51    else {
52        Archer->new(
53            {   project      => $project,
54                dry_run_fg   => $dry_run_fg,
55                config_yaml  => $config,
56                write_config => $wc,
57            }
58        )->run;
59        exit;
60    }
61    pod2usage( 2 ) unless @ARGV;
62}
63
64for my $proj ( @ARGV ) {
65    Archer->new(
66        {   project      => $proj,
67            dry_run_fg   => $dry_run_fg,
68            parallel_num => $fork_num,
69            skips        => +{ map { $_ => 1 } split /,/, ( $skips || '' ) },
70            config_yaml  => $config,
71            argv_str     => $argv_str,
72            shell        => $shell,
73            write_config => $wc,
74        }
75    )->run;
76}
77
78__END__
79
80=head1 SYNOPSIS
81
82    $ archer.pl Caspeee
83   
84    Options:
85        --para=5         parallel run for process phase.
86        --dry-run        dry-run.
87        --skip=restart   skip the task(csv).
88        --man            show manual
89        --config         config.yaml path
90        --shell          shell mode
91
92=head1 DESCRIPTION
93
94Automating Application Deployment.
95
96=head1 TODO
97
98    logging.
99    para=half.
100
101=head1 TIPS
102
103add to .zshrc.
104
105    compctl -k '(--skip-restart --skip-mysqldiff --para --skip-svn-up)' deploy.pl
106
107=head1 AUTHORS
108
109Tokuhiro Matsuno <tokuhiro at mobilefactory.jp>.
Note: See TracBrowser for help on using the browser.