v0.3
rcsm
1#!/bin/rc
2
3flag e +
4
5basedir=/etc/rcsm
6
7fn usage {
8 printf 'Usage: -a|-d|-c|-h|-k|-l|-s|-r\n'
9}
10
11fn run {
12 switch($#*) {
13 case 1
14 for (serv in $basedir/run/*) {
15 $serv $1 >/dev/null >[2=1] &
16 }
17 case *
18 cmd=$1
19 shift 1
20 for (serv in $basedir/avail/$*) {
21 $serv $cmd >/dev/null >[2=1] &
22 }
23 }
24}
25
26switch($1) {
27case -a
28 switch($#*) {
29 case 1
30 find $basedir/run -type l
31 case *
32 cmd=$1
33 shift 1
34 for (serv in $basedir/avail/$*) {
35 ln -sf $serv $basedir/run/
36 }
37 }
38case -c
39 test -d $basedir/run || mkdir -p $basedir/run
40 test -d $basedir/avail || mkdir -p $basedir/avail
41case -d
42 cmd=$1
43 shift 1
44 for (serv in $basedir/run/$*) rm -r $serv
45case -h
46 usage
47case -k
48 run $*
49case -l
50 find $basedir/avail -type f
51case -r
52 shift 1
53 for (serv in $*) {
54 run -k $serv
55 sleep 1
56 run -s $serv
57 }
58case -s
59 run $*
60case *
61 printf 'Invalid argument\n'
62 usage && exit 1
63}