cleaned up demo scripts locations
[urisagit/Stem.git] / bin / boot_stem
CommitLineData
4536f655 1#!/usr/local/bin/perl -w
2
3use strict ;
4
5use Getopt::Std ;
6
7use YAML ;
8
9my %opts ;
10
11getopts( 'v', \%opts ) ;
12
13my $cmds = Load do{ local $/ ; <> } ;
14
15foreach 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}