test for symbol table/package lookup bug
[urisagit/Stem.git] / bin / boot_stem
1 #!/usr/local/bin/perl -w
2
3 use strict ;
4
5 use Getopt::Std ;
6
7 use YAML ;
8
9 my %opts ;
10
11 getopts( 'v', \%opts ) ;
12
13 my $cmds = Load do{ local $/ ; <> } ;
14
15 foreach my $boot ( @{$cmds} ) {
16
17         if ( my $skip = $boot->{'skip'} ) {
18
19                 next if $skip eq 'yes' ;
20         }
21         my $wrap = $boot->{'wrap'} || '/bin/sh -c' ;
22         my $cd = $boot->{'cd'} || '.' ;
23         my $cmd = $boot->{'cmd'} ;
24
25         my $user = $boot->{'user'} || '';
26
27         my $env = $boot->{'env'} || {} ;
28         my $stem_env = $boot->{'stem_env'} || {} ;
29
30         local( %ENV ) = ( %ENV, %{$env} ) ;
31
32         my $cmd_env = join ' ', map( "$_='$stem_env->{$_}'", keys %$stem_env ) ;
33
34         $cmd =~ s/run_stem/run_stem $cmd_env/ ;
35
36         my $system;
37         $system = "su - $user;" if $user && getpwuid($<) ne $user;
38         $system .= qq|$wrap "cd $cd ; $cmd" &| ;
39
40         print "$system\n" if $opts{'v'} ;
41
42         system $system ;
43
44         my $delay = $boot->{'delay'} || 3 ;
45
46         print "waiting $delay seconds\n" if $opts{'v'};
47
48         sleep $delay ;
49 }