Subversion Repositories DevTools

Rev

Rev 1273 | Rev 2053 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1273 Rev 1328
Line 54... Line 54...
54
my $opt_verbose = $ENV{'GBE_VERBOSE'};      # Allow global verbose
54
my $opt_verbose = $ENV{'GBE_VERBOSE'};      # Allow global verbose
55
my $opt_help = 0;                           # Help level
55
my $opt_help = 0;                           # Help level
56
my $opt_exact = 0;                          # Exact (escrow) build
56
my $opt_exact = 0;                          # Exact (escrow) build
57
my $opt_toPackage;                          # Control recursion
57
my $opt_toPackage;                          # Control recursion
58
my $opt_fromPackage;                        # Control recursion
58
my $opt_fromPackage;                        # Control recursion
59
my @opt_exactPackage;                       # Control recursion
59
my @opt_justPackage;                        # Control recursion
60
my @opt_ignorePackage;                      # Control recursion
60
my @opt_ignorePackage;                      # Control recursion
61
 
61
 
62
#
62
#
63
#   Globals - Provided by the JATS environment
63
#   Globals - Provided by the JATS environment
64
#
64
#
Line 89... Line 89...
89
#
89
#
90
# Description     :
90
# Description     :
91
#
91
#
92
# Inputs          :
92
# Inputs          :
93
#
93
#
94
my $result = GetOptions (
-
 
95
                "help|h:+"      => \$opt_help,
-
 
96
                "manual:3"      => \$opt_help,
-
 
97
                "verbose:+"     => \$opt_verbose,           # flag, multiple use allowed
-
 
98
                );
-
 
99
 
-
 
100
                #
-
 
101
                #   UPDATE THE DOCUMENTATION AT THE END OF THIS FILE !!!
-
 
102
                #
-
 
103
 
94
 
104
#
95
#
105
#   Process help and manual options
96
#   Process help and manual options
106
#
97
#
-
 
98
my $result = getOptionsFromArray ( \@ARGV );
107
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
99
pod2usage(-verbose => 0, -message => "Version: $VERSION")  if ($opt_help == 1  || ! $result);
108
pod2usage(-verbose => 1)  if ($opt_help == 2 );
100
pod2usage(-verbose => 1)  if ($opt_help == 2 );
109
pod2usage(-verbose => 2)  if ($opt_help > 2 );
101
pod2usage(-verbose => 2)  if ($opt_help > 2 );
110
 
102
 
111
#
103
#
Line 234... Line 226...
234
#
226
#
235
# Returns         : Will exit
227
# Returns         : Will exit
236
#
228
#
237
sub info
229
sub info
238
{
230
{
239
    GetOptions (
231
    my (@cmd_opts ) = @_;
240
                "help:+"        => \$opt_help,
232
    my $show = 0;
241
                "manual:3"      => \$opt_help,
-
 
242
                "verbose:+"     => \$opt_verbose,
-
 
243
                'topackage:s'   => \$opt_toPackage,
-
 
244
                'frompackage:s' => \$opt_fromPackage,
-
 
245
                'justpackage:s' => \@opt_exactPackage,
-
 
246
                'ignorepackage:s' => \@opt_ignorePackage,
-
 
247
                ) || Error ("Invalid command line" );
-
 
248
 
233
 
-
 
234
    Getopt::Long::Configure('pass_through');
-
 
235
    getOptionsFromArray ( \@cmd_opts,
-
 
236
                           'verbose:+'  => \$show,
-
 
237
                        ) || Error ("Invalid command line" );
249
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#ARGV >=0 );
238
    SubCommandHelp( $opt_help, "Sandbox Information") if ($opt_help || $#cmd_opts >=0 );
250
 
239
 
251
    #
240
    #
252
    #   Determine Sandbox information
241
    #   Determine Sandbox information
253
    #   Populate global variables
242
    #   Populate global variables
254
    #
243
    #
Line 268... Line 257...
268
        Message( "    Level:" . "-"  . " Name: " . $pname . ' (Stopped)');
257
        Message( "    Level:" . "-"  . " Name: " . $pname . ' (Stopped)');
269
    }
258
    }
270
    foreach my $fe ( @build_order )
259
    foreach my $fe ( @build_order )
271
    {
260
    {
272
        Message( "    Level:" . $fe->{level} . " Name: " . $fe->{dname} . ($fe->{buildActive} ? '' : ' (Build Suppressed)'));
261
        Message( "    Level:" . $fe->{level} . " Name: " . $fe->{dname} . ($fe->{buildActive} ? '' : ' (Build Suppressed)'));
273
        Message( DisplayPath ("        Path: $fe->{dir}" )) if $opt_verbose;
262
        Message( DisplayPath ("        Path: $fe->{dir}" )) if $show;
274
 
263
 
275
        if ( $opt_verbose )
264
        if ( $show )
276
        {
265
        {
277
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
266
            foreach my $idep ( sort values %{$fe->{'ideps'}} )
278
            {
267
            {
279
                Message ("        I:$idep");
268
                Message ("        I:$idep");
280
            }
269
            }
Line 302... Line 291...
302
        {
291
        {
303
            my ($pn,$pv) = split( $; , $pve );
292
            my ($pn,$pv) = split( $; , $pve );
304
            my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
293
            my $exists = check_package_existance($pn,$pv  ) ? '' : '*';
305
            my $flags = sprintf ("%4.4s", $flag . $exists);
294
            my $flags = sprintf ("%4.4s", $flag . $exists);
306
            Message ("${flags}${pn} ${pv}");
295
            Message ("${flags}${pn} ${pv}");
307
            if ( $opt_verbose )
296
            if ( $show )
308
            {
297
            {
309
                foreach my $pkg ( @{$extern_deps{$de}{$pve}} )
298
                foreach my $pkg ( @{$extern_deps{$de}{$pve}} )
310
                {
299
                {
311
                    my $ppn = join ('.', split( $; , $pkg));
300
                    my $ppn = join ('.', split( $; , $pkg));
312
                    Message ("        U:$ppn");
301
                    Message ("        U:$ppn");
Line 314... Line 303...
314
            }
303
            }
315
 
304
 
316
        }
305
        }
317
    }
306
    }
318
 
307
 
319
    if ( $opt_verbose > 2 )
308
    if ( $show > 2 || $opt_verbose > 2 )
320
    {
309
    {
321
        DebugDumpData( "extern_deps", \%extern_deps);
310
        DebugDumpData( "extern_deps", \%extern_deps);
322
        DebugDumpData( "build_order", \@build_order);
311
        DebugDumpData( "build_order", \@build_order);
323
        DebugDumpData( "packages", \%packages);
312
        DebugDumpData( "packages", \%packages);
324
    }
313
    }
Line 365... Line 354...
365
#                   information
354
#                   information
366
#
355
#
367
#                   Operation will be modified by
356
#                   Operation will be modified by
368
#                       $opt_toPackage
357
#                       $opt_toPackage
369
#                       $opt_fromPackage
358
#                       $opt_fromPackage
370
#                       @opt_exactPackage
359
#                       @opt_justPackage
371
#                       @opt_ignorePackage
360
#                       @opt_ignorePackage
372
#
361
#
373
# Inputs          : info                - True: Just for info
362
# Inputs          : info                - True: Just for info
374
#                                               Keep supressed packages
363
#                                               Keep supressed packages
375
#
364
#
Line 512... Line 501...
512
    #       Scan the list of packages in the build set and determine
501
    #       Scan the list of packages in the build set and determine
513
    #       those with no dependencies. These can be built.
502
    #       those with no dependencies. These can be built.
514
    #       Remove those packages as dependents from all packages
503
    #       Remove those packages as dependents from all packages
515
    #       Repeat.
504
    #       Repeat.
516
    #
505
    #
-
 
506
    my %found    = map { $_ => 1 } @opt_ignorePackage;
517
    my $scan_active = $opt_fromPackage ? 0 : 1;
507
    my %notFound = map { $_ => 1 } @opt_justPackage;
518
    my $scan_start = 0;
508
    my $scan_start = 0;
519
    my $scan_stop = 0;
509
    my $scan_stop = 0;
520
    my %notFound;
-
 
521
    my %found;
-
 
522
 
-
 
523
    #   Elements in @opt_exactPackage may be comma seperated names
-
 
524
    #   Split them out
-
 
525
    if ( @opt_exactPackage )
-
 
526
    {
-
 
527
        foreach ( @opt_exactPackage )
510
    my $scan_active = ($opt_fromPackage) ? 0 : 1;
528
        {
-
 
529
            $notFound{$_} = 1 foreach ( split(/\s*,\s*/,$_) );
511
    $scan_active = 0 if ( !$opt_fromPackage && !$opt_fromPackage && !@opt_ignorePackage && @opt_justPackage );
530
        }
-
 
531
        @opt_exactPackage = keys %notFound;
-
 
532
    }
-
 
533
 
-
 
534
    if ( @opt_ignorePackage )
-
 
535
    {
-
 
536
        foreach ( @opt_ignorePackage )
-
 
537
        {
-
 
538
            $found{$_} = 1 foreach ( split(/\s*,\s*/,$_) );
-
 
539
        }
-
 
540
        @opt_ignorePackage = keys %found;
-
 
541
    }
-
 
542
    
-
 
543
 
512
 
544
    while ( $more )
513
    while ( $more )
545
    {
514
    {
546
        $more = 0;
515
        $more = 0;
547
        $level++;
516
        $level++;
Line 559... Line 528...
559
        foreach my $build ( @build )
528
        foreach my $build ( @build )
560
        {
529
        {
561
            $more = 1;
530
            $more = 1;
562
            my $fe = $depends{$build};
531
            my $fe = $depends{$build};
563
            my $scan_add = $scan_active ? 1 : 0;
532
            my $scan_add = $scan_active ? 1 : 0;
564
            
-
 
565
 
533
 
-
 
534
            if ( $opt_fromPackage && (($fe->{mname} eq $opt_fromPackage) || ($fe->{name} eq $opt_fromPackage)))
-
 
535
            {
-
 
536
                $scan_add = 1;
566
            if ( @opt_exactPackage )
537
                $scan_active = 1;
-
 
538
                $scan_start = 1;
-
 
539
            }
-
 
540
 
-
 
541
            if ( $opt_toPackage && (($fe->{mname} eq $opt_toPackage) || ($fe->{name} eq $opt_toPackage)))
567
            {
542
            {
568
                $scan_add = 0;
543
                $scan_add = 0;
-
 
544
                $scan_active = 0;
-
 
545
                $scan_stop = 1;
-
 
546
            }
-
 
547
 
-
 
548
            if ( @opt_justPackage )
-
 
549
            {
569
                foreach my $pname ( @opt_exactPackage )
550
                foreach my $pname ( @opt_justPackage )
570
                {
551
                {
571
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
552
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
572
                    {
553
                    {
573
                        $scan_add = 1;
554
                        $scan_add = 1;
574
                        delete $notFound{$pname};
555
                        delete $notFound{$pname};
575
                    }
556
                    }
576
                }
557
                }
577
            }
558
            }
578
 
559
            
579
            if ( @opt_ignorePackage )
560
            if ( @opt_ignorePackage )
580
            {
561
            {
581
                foreach my $pname ( @opt_ignorePackage )
562
                foreach my $pname ( @opt_ignorePackage )
582
                {
563
                {
583
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
564
                    if ( (($fe->{mname} eq $pname) || ($fe->{name} eq $pname)))
Line 585... Line 566...
585
                        $scan_add = 0;
566
                        $scan_add = 0;
586
                        delete $found{$pname};
567
                        delete $found{$pname};
587
                    }
568
                    }
588
                }
569
                }
589
            }
570
            }
590
            
-
 
591
            
-
 
592
            if ( $opt_toPackage && (($fe->{mname} eq $opt_toPackage) || ($fe->{name} eq $opt_toPackage)))
-
 
593
            {
-
 
594
                $scan_add = 0;
-
 
595
                $scan_active = 0;
-
 
596
                $scan_stop = 1;
-
 
597
            }
-
 
598
 
-
 
599
            if ( $opt_fromPackage && (($fe->{mname} eq $opt_fromPackage) || ($fe->{name} eq $opt_fromPackage)))
-
 
600
            {
-
 
601
                $scan_add = 1;
-
 
602
                $scan_active = 1;
-
 
603
                $scan_start = 1;
-
 
604
            }
-
 
605
 
571
 
606
            $fe->{level} = $level;
572
            $fe->{level} = $level;
607
            $fe->{buildActive} = $scan_add;
573
            $fe->{buildActive} = $scan_add;
608
            $packages{$build} = $fe;
574
            $packages{$build} = $fe;
609
            push (@build_order, $fe) if ( $scan_add || $info );
575
            push (@build_order, $fe) if ( $scan_add || $info );
Line 684... Line 650...
684
#
650
#
685
# Returns         : Will exit
651
# Returns         : Will exit
686
#
652
#
687
sub cmd
653
sub cmd
688
{
654
{
689
    my ($hcmd, @cmds ) = @_;
655
    my ($hcmd, @cmd_opts ) = @_;
690
 
656
 
691
    Getopt::Long::Configure('pass_through');
657
    Getopt::Long::Configure('pass_through');
692
    getOptionsFromArray ( \@cmds,
-
 
693
                "help:+"        => \$opt_help,
-
 
694
                "manual:3"      => \$opt_help,
-
 
695
                'topackage:s'   => \$opt_toPackage,
-
 
696
                'frompackage:s' => \$opt_fromPackage,
-
 
697
                'justpackage:s' => \@opt_exactPackage,
-
 
698
                'ignorepackage:s' => \@opt_ignorePackage,
-
 
699
                ) || Error ("Invalid command line" );
658
    getOptionsFromArray ( \@cmd_opts ) || Error ("Invalid command line" );
700
 
-
 
701
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
659
    SubCommandHelp( $opt_help, $hcmd) if ($opt_help  );
702
 
660
 
703
    #
661
    #
704
    #   Determine Sandbox information
662
    #   Determine Sandbox information
705
    #   Populate global variables
663
    #   Populate global variables
Line 709... Line 667...
709
    {
667
    {
710
        my $dir = $fe->{dir};
668
        my $dir = $fe->{dir};
711
        Message( "Level:" . $fe->{level} . " Name: " . $fe->{dname} ,
669
        Message( "Level:" . $fe->{level} . " Name: " . $fe->{dname} ,
712
                  DisplayPath ("        Path: $fe->{dir}" ));
670
                  DisplayPath ("        Path: $fe->{dir}" ));
713
 
671
 
714
        my $result = JatsCmd( "-cd=$dir", @cmds);
672
        my $result = JatsCmd( "-cd=$dir", @cmd_opts);
715
        Error ("Cmd failure") if ( $result );
673
        Error ("Cmd failure") if ( $result );
716
    }
674
    }
717
 
675
 
718
    exit 0;
676
    exit 0;
719
}
677
}
Line 740... Line 698...
740
 
698
 
741
    #
699
    #
742
    #   Extract and options
700
    #   Extract and options
743
    #
701
    #
744
    Getopt::Long::Configure('pass_through');
702
    Getopt::Long::Configure('pass_through');
745
    getOptionsFromArray ( \@cmd_opts,
-
 
746
                "help:+"        => \$opt_help,
-
 
747
                "manual:3"      => \$opt_help,
-
 
748
                'topackage:s'   => \$opt_toPackage,
-
 
749
                'frompackage:s' => \$opt_fromPackage,
-
 
750
                'justpackage:s' => \@opt_exactPackage,
-
 
751
                'ignorepackage:s' => \@opt_ignorePackage,
-
 
752
                ) || Error ("Invalid command line" );
703
    getOptionsFromArray ( \@cmd_opts ) || Error ("Invalid command line" );
753
 
-
 
754
    SubCommandHelp( $opt_help, "Command $cmd") if ($opt_help );
704
    SubCommandHelp( $opt_help, "Command $cmd") if ($opt_help );
755
 
705
 
756
    #
706
    #
757
    #   Insert default options
707
    #   Insert default options
758
    #
708
    #
Line 807... Line 757...
807
#
757
#
808
# Returns         : Will exit
758
# Returns         : Will exit
809
#
759
#
810
sub clean
760
sub clean
811
{
761
{
812
    my ($mode, @cmds ) = @_;
762
    my ($mode, @cmd_opts ) = @_;
813
 
763
 
814
    #
764
    #
815
    #   Extract and options
765
    #   Extract and options
816
    #
766
    #
817
    Getopt::Long::Configure('pass_through');
767
    Getopt::Long::Configure('pass_through');
818
    getOptionsFromArray ( \@cmds,
-
 
819
                "help:+"        => \$opt_help,
-
 
820
                "manual:3"      => \$opt_help,
-
 
821
                'topackage:s'   => \$opt_toPackage,
-
 
822
                'frompackage:s' => \$opt_fromPackage,
-
 
823
                'justpackage:s' => \@opt_exactPackage,
-
 
824
                'ignorepackage:s' => \@opt_ignorePackage,
-
 
825
                ) || Error ("Invalid command line" );
768
    getOptionsFromArray ( \@cmd_opts ) || Error ("Invalid command line" );
826
 
-
 
827
    SubCommandHelp( $opt_help, "Clean") if ($opt_help );
769
    SubCommandHelp( $opt_help, "Clean") if ($opt_help );
828
 
770
 
829
    #
771
    #
830
    #   Determine Sandbox information
772
    #   Determine Sandbox information
831
    #   Populate global variables
773
    #   Populate global variables
Line 841... Line 783...
841
    {
783
    {
842
        my $dir = $fe->{dir};
784
        my $dir = $fe->{dir};
843
        Message( "Level:" . $fe->{level} . " Name: " . $fe->{dname} ,
785
        Message( "Level:" . $fe->{level} . " Name: " . $fe->{dname} ,
844
                  DisplayPath ("        Path: $fe->{dir}" ));
786
                  DisplayPath ("        Path: $fe->{dir}" ));
845
 
787
 
846
        my $result = JatsCmd( "-cd=$dir", @cmd, @cmds);
788
        my $result = JatsCmd( "-cd=$dir", @cmd, @cmd_opts);
847
        Error ("Cmd failure") if ( $result );
789
        Error ("Cmd failure") if ( $result );
848
    }
790
    }
849
 
791
 
850
    exit 0;
792
    exit 0;
851
}
793
}
Line 860... Line 802...
860
#
802
#
861
# Returns         : Nothing
803
# Returns         : Nothing
862
#
804
#
863
sub cache
805
sub cache
864
{
806
{
865
    my (@opts) = @_;
807
    my (@cmd_opts) = @_;
866
 
808
 
867
    getOptionsFromArray ( \@opts,
-
 
868
                "help:+"        => \$opt_help,
-
 
869
                "manual:3"      => \$opt_help,
-
 
870
                'topackage:s'   => \$opt_toPackage,
-
 
871
                'frompackage:s' => \$opt_fromPackage,
-
 
872
                'justpackage:s' => \@opt_exactPackage,
-
 
873
                'ignorepackage:s' => \@opt_ignorePackage,
-
 
874
                ) || Error ("Invalid command line" );
809
    getOptionsFromArray ( \@cmd_opts ) || Error ("Invalid command line" );
875
 
-
 
876
    SubCommandHelp( $opt_help, "Cache") if ($opt_help || $#ARGV >= 0 );
810
    SubCommandHelp( $opt_help, "Cache") if ($opt_help || $#cmd_opts >= 0 );
877
 
811
 
878
    #
812
    #
879
    #   Determine Sandbox information
813
    #   Determine Sandbox information
880
    #   Populate global variables
814
    #   Populate global variables
881
    #
815
    #
Line 933... Line 867...
933
my @StrayPackages;
867
my @StrayPackages;
934
my @PopBase;
868
my @PopBase;
935
 
869
 
936
sub populate
870
sub populate
937
{
871
{
-
 
872
    my (@cmd_opts ) = @_;
938
    my $opt_missing = 0;
873
    my $opt_missing = 0;
939
    my $opt_recurse = 0;
874
    my $opt_recurse = 0;
940
    my $opt_test = 0;
875
    my $opt_test = 0;
-
 
876
    my $opt_show = 0;
941
    my $opt_extractfiles;
877
    my $opt_extractfiles;
942
    my @opt_extract = qw(-extract);
878
    my @opt_extract = qw(-extract);
943
    my @opt_fnames;
879
    my @opt_fnames;
-
 
880
    my @opt_exclude;
-
 
881
    my $opt_all;
-
 
882
 
944
 
883
 
945
    Getopt::Long::Configure('pass_through');
884
    Getopt::Long::Configure('pass_through');
946
    GetOptions (
885
    getOptionsFromArray ( \@cmd_opts,
947
                "help:+"        => \$opt_help,
886
                "all"               => \$opt_all,
948
                "manual:3"      => \$opt_help,
887
                "missing"           => \$opt_missing,
949
                "missing"       => \$opt_missing,
888
                "test"              => \$opt_test,
950
                "test"          => \$opt_test,
889
                "show"              => \$opt_show,
951
                "recurse:100"   => \$opt_recurse,
890
                "recurse:100"       => \$opt_recurse,
-
 
891
                'excludePackage:s'  => sub{ opts_add2List( \@opt_exclude, @_ )},
952
                ) || Error ("Invalid command line" );
892
                ) || Error ("Invalid command line" );
953
 
893
 
954
    SubCommandHelp( $opt_help, "Populate Sandbox") if ($opt_help );
894
    SubCommandHelp( $opt_help, "Populate Sandbox") if ($opt_help );
955
 
895
 
956
    #
896
    #
-
 
897
    #   Sanity tests
-
 
898
    #
-
 
899
    Error ("Populate: -missing and -all options are mutually exclusive")
-
 
900
        if ( $opt_missing && $opt_all );
-
 
901
 
-
 
902
    #
957
    #   Extract options for the jats extract utility
903
    #   Extract options for the jats extract utility
958
    #
904
    #
959
    foreach ( @ARGV )
905
    foreach ( @cmd_opts )
960
    {
906
    {
961
        if ( m~^-~ ) {
907
        if ( m~^-~ ) {
962
            push ( @opt_extract, $_);
908
            push ( @opt_extract, $_);
963
        } else {
909
        } else {
964
            push ( @opt_fnames, $_);
910
            push ( @opt_fnames, $_);
Line 973... Line 919...
973
    {
919
    {
974
        Error ("Populate: Must specify both a package name and version")
920
        Error ("Populate: Must specify both a package name and version")
975
            if ( $#opt_fnames != 1 );
921
            if ( $#opt_fnames != 1 );
976
        push @PopBase, join( $;, @opt_fnames );
922
        push @PopBase, join( $;, @opt_fnames );
977
    }
923
    }
978
    elsif ( $opt_missing )
924
    elsif ( $opt_missing || $opt_all )
979
    {
925
    {
980
        #
926
        #
981
        #   User has not provided a package name to extract
927
        #   User has not provided a package name to extract
982
        #   Assume that the user will want missing dependencies
928
        #   Assume that the user will want all or missing dependencies
983
        #
929
        #
984
        #   Determine packages that are not present
930
        #   Determine packages that are not present
985
        #
931
        #
986
        calc_sandbox_info();
932
        calc_sandbox_info();
987
 
933
 
Line 992... Line 938...
992
        {
938
        {
993
            my @vlist = keys %{$extern_deps{$de}};
939
            my @vlist = keys %{$extern_deps{$de}};
994
            foreach my $pve ( @vlist )
940
            foreach my $pve ( @vlist )
995
            {
941
            {
996
                my ($pn,$pv) = split( $; , $pve );
942
                my ($pn,$pv) = split( $; , $pve );
997
                unless (check_package_existance( $pn, $pv ))
943
                unless ($opt_missing && check_package_existance( $pn, $pv ))
998
                {
944
                {
999
                    push @PopBase, join( $;, $pn , $pv );
945
                    push @PopBase, join( $;, $pn , $pv );
1000
                }
946
                }
1001
            }
947
            }
1002
        }
948
        }
Line 1025... Line 971...
1025
    #   If recursing then process packages that have yet to
971
    #   If recursing then process packages that have yet to
1026
    #   be processed. At the start there will be the initial user specified
972
    #   be processed. At the start there will be the initial user specified
1027
    #   packages on the list. Place a marker at the end so that we can
973
    #   packages on the list. Place a marker at the end so that we can
1028
    #   determine how far we are recursing down the dependency tree.
974
    #   determine how far we are recursing down the dependency tree.
1029
    #
975
    #
-
 
976
    $opt_recurse = ($opt_all ? 100 : $opt_recurse);
1030
    if ( $opt_recurse )
977
    if ( $opt_recurse )
1031
    {
978
    {
1032
        my $marker = join($; , '_NEXT_LEVEL_', 0, 0 );
979
        my $marker = join($; , '_NEXT_LEVEL_', 0, 0 );
1033
        push @StrayPackages, $marker;
980
        push @StrayPackages, $marker;
1034
        $PopLevel++;
981
        $PopLevel++;
Line 1058... Line 1005...
1058
    }
1005
    }
1059
    #DebugDumpData("Data", \%PopPackage );
1006
    #DebugDumpData("Data", \%PopPackage );
1060
 
1007
 
1061
    #
1008
    #
1062
    #   Determine packages that need to be extracted
1009
    #   Determine packages that need to be extracted
1063
    #   Not ordered in any way. Could order by level if we wanted
1010
    #   Sort alphabetically - case insensitive
1064
    #
1011
    #
1065
    foreach my $pname ( sort keys %PopPackage )
1012
    foreach my $pname ( sort {lc($a) cmp lc($b)} keys %PopPackage )
1066
    {
1013
    {
-
 
1014
        pkgscan:
1067
        foreach my $pver ( sort keys %{$PopPackage{$pname}} )
1015
        foreach my $pver ( sort keys %{$PopPackage{$pname}} )
1068
        {
1016
        {
1069
            #
1017
            #
1070
            #   Create a nice view name for the extraction
1018
            #   Create a nice view name for the extraction
1071
            #   Will also be used to test for package existence
1019
            #   Will also be used to test for package existence
Line 1094... Line 1042...
1094
                    next;
1042
                    next;
1095
                }
1043
                }
1096
            }
1044
            }
1097
 
1045
 
1098
            #
1046
            #
-
 
1047
            #   Has the user specifically excluded this package
-
 
1048
            #   Allow three forms
-
 
1049
            #       packageName
-
 
1050
            #       packageName_Version
-
 
1051
            #       packageName.projectName
-
 
1052
            #
-
 
1053
            my $excluded;
-
 
1054
            foreach my $ename ( @opt_exclude )
-
 
1055
            {
-
 
1056
                if ( $ename eq $pname ) {
-
 
1057
                    $excluded = 1;
-
 
1058
                } elsif ($ename eq $pname .'_' . $pver ) {
-
 
1059
                    $excluded = 1;
-
 
1060
                } else {
-
 
1061
                    if ( $pver =~ m~(\.[a-z]{2,4})$~ )
-
 
1062
                    {
-
 
1063
                        $excluded = ($ename eq $pname . $1 );
-
 
1064
                    }
-
 
1065
                }
-
 
1066
 
-
 
1067
                if ( $excluded )
-
 
1068
                {
-
 
1069
                    Message ("Package excluded by user - skipped: $pname, $pver");
-
 
1070
                    next pkgscan;
-
 
1071
                }
-
 
1072
            }
-
 
1073
 
-
 
1074
            #
1099
            #   Generate commands to extract the package
1075
            #   Generate commands to extract the package
1100
            #
1076
            #
1101
            my $vcstag = $PopPackage{$pname}{$pver}{vcstag};
1077
            my $vcstag = $PopPackage{$pname}{$pver}{vcstag};
1102
            my @cmd = qw(jats_vcsrelease);
1078
            my @cmd = qw(jats_vcsrelease);
1103
            push @cmd, "-view=$vname", "-label=$vcstag", @opt_extract;
1079
            push @cmd, "-view=$vname", "-label=$vcstag", @opt_extract;
-
 
1080
            if ( $opt_show )
-
 
1081
            {
-
 
1082
                Message ("$pname $pver");
-
 
1083
            }
1104
            if ( $opt_test )
1084
            elsif ( $opt_test )
1105
            {
1085
            {
1106
                Message "jats " . QuoteCommand (@cmd );
1086
                Message "jats " . QuoteCommand (@cmd );
1107
            }
1087
            }
1108
            else
1088
            else
1109
            {
1089
            {
Line 1297... Line 1277...
1297
#
1277
#
1298
sub getOptionsFromArray
1278
sub getOptionsFromArray
1299
{
1279
{
1300
    my ($pArray, %args) = @_;
1280
    my ($pArray, %args) = @_;
1301
 
1281
 
-
 
1282
    #
-
 
1283
    #   Common arguments
-
 
1284
    #
-
 
1285
    my %commonOptions = (
-
 
1286
        'help|h:+'          => \$opt_help,
-
 
1287
        'manual:3'          => \$opt_help,
-
 
1288
        'verbose:+'         => \$opt_verbose,
-
 
1289
        'topackage:s'       => \$opt_toPackage,
-
 
1290
        'frompackage:s'     => \$opt_fromPackage,
-
 
1291
        'justpackage:s'     => sub{ opts_add2List( \@opt_justPackage, @_ )},
-
 
1292
        'ignorepackage:s'   => sub{ opts_add2List( \@opt_ignorePackage, @_ )},
-
 
1293
        );
-
 
1294
 
-
 
1295
    #
-
 
1296
    #   Merge in the user options
-
 
1297
    #
-
 
1298
    @commonOptions{keys %args} = values %args;
-
 
1299
 
1302
    local ( @ARGV );
1300
    local ( @ARGV );
1303
    @ARGV = @$pArray;
1301
    @ARGV = @$pArray;
1304
    my $rv = GetOptions ( %args );
1302
    my $rv = GetOptions ( %commonOptions );
1305
    @$pArray = @ARGV;
1303
    @$pArray = @ARGV;
1306
 
1304
 
-
 
1305
    ErrorConfig('verbose' => $opt_verbose );
1307
    return $rv;
1306
    return $rv;
1308
}
1307
}
1309
 
1308
 
-
 
1309
#-------------------------------------------------------------------------------
-
 
1310
# Function        : opts_add2List
-
 
1311
#
-
 
1312
# Description     : Option processing helper
-
 
1313
#                   Add comma separated options to an array
-
 
1314
#                   User can then add items one at a time, or several at once
-
 
1315
#
-
 
1316
# Inputs          : aref        - Ref to an array to extent
-
 
1317
#                   arg2        - Option name
-
 
1318
#                   arg3        - Option value
-
 
1319
#
-
 
1320
# Returns         : 
-
 
1321
#
-
 
1322
sub opts_add2List
-
 
1323
{
-
 
1324
    my( $ref, $name, $value) = @_;
-
 
1325
    if ( $value )
-
 
1326
    {
-
 
1327
        foreach ( split(/\s*,\s*/,$value) )
-
 
1328
        {
-
 
1329
            push @{$ref}, $_;
-
 
1330
        }
-
 
1331
    }
-
 
1332
}
1310
 
1333
 
1311
#-------------------------------------------------------------------------------
1334
#-------------------------------------------------------------------------------
1312
# Function        : SubCommandHelp
1335
# Function        : SubCommandHelp
1313
#
1336
#
1314
# Description     : Provide help on a subcommand
1337
# Description     : Provide help on a subcommand
Line 1369... Line 1392...
1369
=head1 SYNOPSIS
1392
=head1 SYNOPSIS
1370
 
1393
 
1371
  jats sandbox [options] command [command options]
1394
  jats sandbox [options] command [command options]
1372
 
1395
 
1373
 Options:
1396
 Options:
1374
    -help[=n]          - Display help with specified detail
1397
    -help[=n]                  - Display help with specified detail
1375
    -help -help        - Detailed help message
1398
    -help -help                - Detailed help message
1376
    -man               - Full documentation
1399
    -man                       - Full documentation
1377
 
1400
 
1378
 Common Options:
1401
 Options for recursion control:
1379
    -fromPackage=name          - Start building from package
-
 
1380
    -toPackage=name            - Stop building after package
1402
    -toPackage=name            - Stop building after package
-
 
1403
    -fromPackage=name          - Start building from package
1381
    -justPackage=name[,name]   - Build named packages
1404
    -justPackage=name[,name]   - Build named packages
1382
    -ignorePackage=name[,name] - Do not build named packages
1405
    -ignorePackage=name[,name] - Do not build named packages
1383
 
1406
 
1384
 Commands:
1407
 Commands:
1385
    help                - Same as -help
1408
    help                - Same as -help
1386
    create              - Create a sandbox in the current directory
1409
    create              - Create a sandbox in the current directory
1387
    populate            - Populate the sandbox with packages
1410
    populate            - Populate the sandbox with packages
1388
    delete              - Delete the sandbox
1411
    delete              - Delete the sandbox
1389
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
1412
    info [[-v]-v]       - Sandbox information. -v: Be more verbose
1390
    cmd                 - Do commands in all sandbox components
1413
    cmd                 - Do commands in all sandbox components
1391
    all                 - Do 'build', if required, then a make in all sandbox components
1414
    all                 - Do 'build', if required, then a make in all components
1392
    build               - Force 'build and make' in all sandbox components
1415
    build               - Force 'build and make' in all sandbox components
1393
    make                - Do 'make' in all sandbox components
1416
    make                - Do 'make' in all sandbox components
1394
    clean               - Do 'make clean' in all sandbox components
1417
    clean               - Do 'make clean' in all sandbox components
1395
    clobber             - Do 'build clobber' is all sandbox components
1418
    clobber             - Do 'build clobber' is all sandbox components
1396
    cache               - Cache external dependent packages
1419
    cache               - Cache external dependent packages
Line 1430... Line 1453...
1430
 
1453
 
1431
=item B<-man>
1454
=item B<-man>
1432
 
1455
 
1433
Prints the manual page and exits. This is the same a -help=3
1456
Prints the manual page and exits. This is the same a -help=3
1434
 
1457
 
1435
=item B<-fromPackage=name>
1458
=item B<-toPackage=name>
1436
 
1459
 
1437
This option is available in all commands that process multiple packages.
1460
This option is available in all commands that process multiple packages.
1438
Package processing will start at the named package.
1461
Package processing will stop at the named package.
1439
 
1462
 
1440
The default operation is to process all packages.
1463
The default operation is to process all packages.
1441
 
1464
 
1442
=item B<-toPackage=name>
1465
=item B<-fromPackage=name>
1443
 
1466
 
1444
This option is available in all commands that process multiple packages.
1467
This option is available in all commands that process multiple packages.
1445
Package processing will stop at the named package.
1468
Package processing will start at the named package.
1446
 
1469
 
1447
The default operation is to process all packages.
1470
The default operation is to process no packages.
1448
 
1471
 
1449
=item B<-justPackge=name[,name]>
1472
=item B<-justPackage=name[,name]>
1450
 
1473
 
1451
This option is available in all commands that process multiple packages. The
1474
This option is available in all commands that process multiple packages. The
1452
named packages will be processed in the correct build order. Packages that are not
1475
named packages will be processed in the correct build order. Packages that are
1453
named will be skipped.
1476
not named will be skipped, unless the package is being processed due to
-
 
1477
being in the 'fromPackage' to 'toPackage' range.
1454
 
1478
 
1455
Multiple packages can be named either by separating names with a comma, or
1479
Multiple packages can be named either by separating names with a comma, or
1456
with multiple options.
1480
with multiple options.
1457
 
1481
 
1458
=item B<-ignorePackge=name[,name]>
1482
=item B<-ignorePackage=name[,name]>
1459
 
1483
 
1460
This option is available in all commands that process multiple packages. The
1484
This option is available in all commands that process multiple packages. The
1461
named packages will not be processed.
1485
named packages will not be processed.
1462
 
1486
 
1463
Multiple packages can be named either by separating names with a comma, or
1487
Multiple packages can be named either by separating names with a comma, or
Line 1504... Line 1528...
1504
 
1528
 
1505
Create Sandbox
1529
Create Sandbox
1506
 
1530
 
1507
=head2 SYNOPSIS
1531
=head2 SYNOPSIS
1508
 
1532
 
1509
jats sandbox [options] create [command options]
1533
jats sandbox create [command options]
1510
 
-
 
1511
 Options:
-
 
1512
    -help[=n]               - Help message, [n=1,2,3]
-
 
1513
    -man                    - Full documentation [-help=3]
-
 
1514
    -verbose[=n]            - Verbose command operation
-
 
1515
 
1534
 
1516
 Command Options
1535
 Command Options
1517
    -help[=n]               - Command specific help, [n=1,2,3]
1536
    -help[=n]               - Command specific help, [n=1,2,3]
1518
    -verbose[=n]            - Verbose operation
1537
    -verbose[=n]            - Verbose operation
1519
    -exact                  - Create sandbox to reproduce exact versions
1538
    -exact                  - Create sandbox to reproduce exact versions
Line 1552... Line 1571...
1552
 
1571
 
1553
Populate a Sandbox
1572
Populate a Sandbox
1554
 
1573
 
1555
=head2 SYNOPSIS
1574
=head2 SYNOPSIS
1556
 
1575
 
1557
jats sandbox [options] populate [command options] [packageName packageVersion]
1576
jats sandbox populate [command options] [packageName packageVersion]
1558
 
-
 
1559
 Options:
-
 
1560
    -help[=n]               - Help message, [n=1,2,3]
-
 
1561
    -man                    - Full documentation [-help=3]
-
 
1562
    -verbose[=n]            - Verbose command operation
-
 
1563
 
1577
 
1564
 Command Options
1578
 Command Options
1565
    -help[=n]               - Command specific help, [n=1,2,3]
1579
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
1580
    -toPackage=name            - Stop building after package
-
 
1581
    -fromPackage=name          - Start building from package
-
 
1582
    -justPackage=name[,name]   - Build named packages
-
 
1583
    -ignorePackage=name[,name] - Do not build named packages
-
 
1584
    -excludePackage=name[,name]- Do not extract named package
1566
    -recurse[=n]            - Locate dependencies within packages
1585
    -recurse[=n]               - Locate dependencies within packages
-
 
1586
    -all                       - Populate with all dependencies
1567
    -missing                - Locate missing packages
1587
    -missing                   - Locate missing packages
-
 
1588
    -show                      - Show packages that would be extracted
1568
    -test                   - Do not extract packages
1589
    -test                      - Do not extract packages
1569
    -<Other>                - Pass options to jats extract
1590
    -<Other>                   - Pass options to jats extract
1570
 
1591
 
1571
=head2 ARGUMENTS
1592
=head2 ARGUMENTS
1572
 
1593
 
1573
The 'populate' command can take a package name and version as arguments. It will
1594
The 'populate' command can take a package name and version as arguments. It will
1574
then populate the sandbox with this package. See 'DESCRIPTION' for details.
1595
then populate the sandbox with this package. See 'DESCRIPTION' for details.
Line 1577... Line 1598...
1577
 
1598
 
1578
The 'populate' command takes the following options:
1599
The 'populate' command takes the following options:
1579
 
1600
 
1580
=over 4
1601
=over 4
1581
 
1602
 
-
 
1603
=item -excludePackage=name[,name]
-
 
1604
 
-
 
1605
This option prevents one, or more, packages from populating the sandbox.
-
 
1606
Packages specified with this option will not be extracted from version control
-
 
1607
and added to the sandbox.
-
 
1608
 
-
 
1609
Packages can be itentified in three ways:
-
 
1610
 
-
 
1611
=over 4
-
 
1612
 
-
 
1613
=item 1. Package Name
-
 
1614
 
-
 
1615
All package versions matching the named package will be excluded.
-
 
1616
 
-
 
1617
=item 2. Package Name and Version
-
 
1618
 
-
 
1619
Only the specified version of the named package will be excluded. The
-
 
1620
user specifies the package name and version as a single string separated with
-
 
1621
an underscore. ie: core_devl_2.100.5000.cr
-
 
1622
 
-
 
1623
=item 3. Package Name and Suffix
-
 
1624
 
-
 
1625
All packages matching the named package and project will be excluded. The
-
 
1626
user specifies the package name and project as a single string separated with
-
 
1627
a dot. ie: core_devl.cr
-
 
1628
 
-
 
1629
 
-
 
1630
=back
-
 
1631
 
1582
=item -recurse[=N]
1632
=item -recurse[=N]
1583
 
1633
 
1584
This option will modify the operation of the command such that dependencies
1634
This option will modify the operation of the command such that dependencies
1585
of named packages can also be extracted into the sandbox.
1635
of named packages can also be extracted into the sandbox.
1586
 
1636
 
1587
The default operation is to only extract named packages. If the option is
1637
The default operation is to only extract named packages. If the option is
1588
specified then all dependent packages are processed. An optional numeric argument
1638
specified then all dependent packages are processed. An optional numeric argument
1589
can be specified to limit the depth of the recursion.
1639
can be specified to limit the depth of the recursion.
1590
 
1640
 
-
 
1641
=item -all
-
 
1642
 
-
 
1643
This option will populate the sandbox will all dependencies of packages that are
-
 
1644
currently in the sandbox.
-
 
1645
 
-
 
1646
The global options that control recursion will affect the packages that are
-
 
1647
processed.
-
 
1648
 
-
 
1649
This option cannot be used with the '-missing' option.
-
 
1650
 
1591
=item -missing
1651
=item -missing
1592
 
1652
 
1593
This option will modify the operation of the dependency recursion scanning such
1653
This option will modify the operation of the dependency recursion scanning such
1594
that dependent packages that exist in a package archive will not be extracted.
1654
that dependent packages that exist in a package archive will not be extracted.
1595
 
1655
 
1596
Use of this option allows a sandbox to be populated with packages that are
1656
Use of this option allows a sandbox to be populated with packages that are
1597
required by packages in the sandbox, but are not available in a package archive.
1657
required by packages in the sandbox, but are not available in a package archive.
1598
 
1658
 
-
 
1659
The global options that control recursion will affect the packages that are
-
 
1660
processed.
-
 
1661
 
-
 
1662
This option cannot be used with the '-all' option.
-
 
1663
 
-
 
1664
=item -show
-
 
1665
 
-
 
1666
This option will prevent the command from performing the extraction. It will
-
 
1667
simply display the names of the packages that would be extracted.
-
 
1668
 
1599
=item -test
1669
=item -test
1600
 
1670
 
1601
This option will prevent the command from performing the extraction. It will
1671
This option will prevent the command from performing the extraction. It will
1602
simply display the JATS commands that can be used to perform the extraction.
1672
simply display the JATS commands that can be used to perform the extraction.
1603
 
1673
 
Line 1712... Line 1782...
1712
 
1782
 
1713
Display Sandbox Information
1783
Display Sandbox Information
1714
 
1784
 
1715
=head2 SYNOPSIS
1785
=head2 SYNOPSIS
1716
 
1786
 
1717
jats sandbox [options] info [command options]
1787
jats sandbox info [command options]
1718
 
-
 
1719
 Options:
-
 
1720
    -help[=n]               - Help message, [n=1,2,3]
-
 
1721
    -man                    - Full documentation [-help=3]
-
 
1722
    -verbose[=n]            - Verbose command operation
-
 
1723
 
1788
 
1724
 Command Options
1789
 Command Options
1725
    -help[=n]               - Command specific help, [n=1,2,3]
1790
    -help[=n]                  - Command specific help, [n=1,2,3]
1726
    -verbose[=n]            - Display more information
1791
    -verbose[=n]               - Display more information
-
 
1792
    -toPackage=name            - Stop building after package
-
 
1793
    -fromPackage=name          - Start building from package
-
 
1794
    -justPackage=name[,name]   - Build named packages
-
 
1795
    -ignorePackage=name[,name] - Do not build named packages
1727
 
1796
 
1728
=head2 OPTIONS
1797
=head2 OPTIONS
1729
 
1798
 
1730
=over
1799
=over
1731
 
1800
 
Line 1802... Line 1871...
1802
 
1871
 
1803
Build packages in the sandbox
1872
Build packages in the sandbox
1804
 
1873
 
1805
=head2 SYNOPSIS
1874
=head2 SYNOPSIS
1806
 
1875
 
1807
jats sandbox [options] all [command options] [arguments]
1876
jats sandbox all [command options] [arguments]
1808
 
-
 
1809
 Options:
-
 
1810
    -help[=n]               - Help message, [n=1,2,3]
-
 
1811
    -man                    - Full documentation [-help=3]
-
 
1812
    -verbose[=n]            - Verbose command operation
-
 
1813
 
1877
 
1814
 Command Options
1878
 Command Options
1815
    -help[=n]               - Command specific help, [n=1,2,3]
1879
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
1880
    -toPackage=name            - Stop building after package
-
 
1881
    -fromPackage=name          - Start building from package
-
 
1882
    -justPackage=name[,name]   - Build named packages
-
 
1883
    -ignorePackage=name[,name] - Do not build named packages
1816
 
1884
 
1817
=head2 ARGUMENTS
1885
=head2 ARGUMENTS
1818
 
1886
 
1819
Arguments are passed to the 'make' phase of the process.
1887
Arguments are passed to the 'make' phase of the process.
1820
 
1888
 
Line 1850... Line 1918...
1850
 
1918
 
1851
Build packages in the sandbox
1919
Build packages in the sandbox
1852
 
1920
 
1853
=head2 SYNOPSIS
1921
=head2 SYNOPSIS
1854
 
1922
 
1855
jats sandbox [options] build [command options] [arguments]
1923
jats sandbox build [command options] [arguments]
1856
 
-
 
1857
 Options:
-
 
1858
    -help[=n]               - Help message, [n=1,2,3]
-
 
1859
    -man                    - Full documentation [-help=3]
-
 
1860
    -verbose[=n]            - Verbose command operation
-
 
1861
 
1924
 
1862
 Command Options
1925
 Command Options
1863
    -help[=n]               - Command specific help, [n=1,2,3]
1926
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
1927
    -toPackage=name            - Stop building after package
-
 
1928
    -fromPackage=name          - Start building from package
-
 
1929
    -justPackage=name[,name]   - Build named packages
-
 
1930
    -ignorePackage=name[,name] - Do not build named packages
1864
 
1931
 
1865
=head2 ARGUMENTS
1932
=head2 ARGUMENTS
1866
 
1933
 
1867
Arguments are passed to the 'make' phase of the process.
1934
Arguments are passed to the 'make' phase of the process.
1868
 
1935
 
Line 1885... Line 1952...
1885
 
1952
 
1886
Clean all sandbox components
1953
Clean all sandbox components
1887
 
1954
 
1888
=head2 SYNOPSIS
1955
=head2 SYNOPSIS
1889
 
1956
 
1890
jats sandbox [options] clean|clobber [command options]
1957
jats sandbox clean|clobber [command options]
1891
 
-
 
1892
 Options:
-
 
1893
    -help[=n]               - Help message, [n=1,2,3]
-
 
1894
    -man                    - Full documentation [-help=3]
-
 
1895
    -verbose[=n]            - Verbose command operation
-
 
1896
 
1958
 
1897
 Command Options
1959
 Command Options
1898
    -help[=n]               - Command specific help, [n=1,2,3]
1960
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
1961
    -toPackage=name            - Stop building after package
-
 
1962
    -fromPackage=name          - Start building from package
-
 
1963
    -justPackage=name[,name]   - Build named packages
-
 
1964
    -ignorePackage=name[,name] - Do not build named packages
1899
 
1965
 
1900
=head2 ARGUMENTS
1966
=head2 ARGUMENTS
1901
 
1967
 
1902
None
1968
None
1903
 
1969
 
Line 1919... Line 1985...
1919
 
1985
 
1920
Make packages in the sandbox
1986
Make packages in the sandbox
1921
 
1987
 
1922
=head2 SYNOPSIS
1988
=head2 SYNOPSIS
1923
 
1989
 
1924
jats sandbox [options] make [command options] [arguments]
1990
jats sandbox make [command options] [arguments]
1925
 
-
 
1926
 Options:
-
 
1927
    -help[=n]               - Help message, [n=1,2,3]
-
 
1928
    -man                    - Full documentation [-help=3]
-
 
1929
    -verbose[=n]            - Verbose command operation
-
 
1930
 
1991
 
1931
 Command Options
1992
 Command Options
1932
    -help[=n]               - Command specific help, [n=1,2,3]
1993
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
1994
    -toPackage=name            - Stop building after package
-
 
1995
    -fromPackage=name          - Start building from package
-
 
1996
    -justPackage=name[,name]   - Build named packages
-
 
1997
    -ignorePackage=name[,name] - Do not build named packages
1933
 
1998
 
1934
=head2 ARGUMENTS
1999
=head2 ARGUMENTS
1935
 
2000
 
1936
Arguments are passed to the 'make' phase of the process.
2001
Arguments are passed to the 'make' phase of the process.
1937
 
2002
 
Line 1952... Line 2017...
1952
 
2017
 
1953
Process each package with a specified command.
2018
Process each package with a specified command.
1954
 
2019
 
1955
=head2 SYNOPSIS
2020
=head2 SYNOPSIS
1956
 
2021
 
1957
jats sandbox [options] cmd [command options] [arguments]
2022
jats sandbox cmd [command options] [arguments]
1958
 
-
 
1959
 Options:
-
 
1960
    -help[=n]               - Help message, [n=1,2,3]
-
 
1961
    -man                    - Full documentation [-help=3]
-
 
1962
    -verbose[=n]            - Verbose command operation
-
 
1963
 
2023
 
1964
 Command Options
2024
 Command Options
1965
    -help[=n]               - Command specific help, [n=1,2,3]
2025
    -help[=n]                  - Command specific help, [n=1,2,3]
-
 
2026
    -toPackage=name            - Stop building after package
-
 
2027
    -fromPackage=name          - Start building from package
-
 
2028
    -justPackage=name[,name]   - Build named packages
-
 
2029
    -ignorePackage=name[,name] - Do not build named packages
1966
 
2030
 
1967
=head2 ARGUMENTS
2031
=head2 ARGUMENTS
1968
 
2032
 
1969
Arguments are passed to a JATS command.
2033
Arguments are passed to a JATS command.
1970
 
2034