|
@@ -52,6 +52,29 @@ version_info() {
|
52
|
52
|
exit $FFOO_EXIT_OK
|
53
|
53
|
}
|
54
|
54
|
|
|
55
|
+run_hook() {
|
|
56
|
+ saturnin conf -p hook.$SATURNIN_SUBCOMMAND.$1 \
|
|
57
|
+ | debug_pipe hook_$1 \
|
|
58
|
+ | bash
|
|
59
|
+}
|
|
60
|
+
|
|
61
|
+subcommand() {
|
|
62
|
+ local sc_es=0 # future exit (return) status
|
|
63
|
+ local lexpath="$SATURNIN_LIBEXEC/saturnin-$SATURNIN_SUBCOMMAND"
|
|
64
|
+ debug -v lexpath
|
|
65
|
+ debug "\$*='$*'"
|
|
66
|
+ test -x "$lexpath" || {
|
|
67
|
+ warn "invalid sub-command: $SATURNIN_SUBCOMMAND"
|
|
68
|
+ print_help
|
|
69
|
+ return $FFOO_EXIT_USAGE
|
|
70
|
+ }
|
|
71
|
+ run_hook pre
|
|
72
|
+ "$lexpath" "$@" || return $?
|
|
73
|
+ sc_es=$?
|
|
74
|
+ run_hook post
|
|
75
|
+ return $sc_es
|
|
76
|
+}
|
|
77
|
+
|
55
|
78
|
while true; do case $1 in
|
56
|
79
|
-d|--debug) export FFOO_DEBUG=true; shift ;;
|
57
|
80
|
-v|--verbose) export FFOO_VERBOSE=true; shift ;;
|
|
@@ -67,18 +90,11 @@ esac done
|
67
|
90
|
debug -v FFOO_PATH SATURNIN_LIBEXEC FFOO_CONFIG_PATH
|
68
|
91
|
debug "\$*='$*'"
|
69
|
92
|
|
70
|
|
-SATURNIN_SUBCOMMAND="$1"
|
|
93
|
+export SATURNIN_SUBCOMMAND="$1"
|
71
|
94
|
shift
|
72
|
95
|
|
73
|
96
|
case "$SATURNIN_SUBCOMMAND" in
|
74
|
|
- conf) inigrep "$@"; exit $? ;;
|
75
|
|
- help) print_help; exit $FFOO_EXIT_OK ;;
|
76
|
|
- *)
|
77
|
|
- lexpath="$SATURNIN_LIBEXEC/saturnin-$SATURNIN_SUBCOMMAND"
|
78
|
|
- debug -v lexpath
|
79
|
|
- debug "\$*='$*'"
|
80
|
|
- test -x "$lexpath" && exec "$lexpath" "$@"
|
81
|
|
- warn "invalid sub-command: $SATURNIN_SUBCOMMAND"
|
82
|
|
- print_help; exit $FFOO_EXIT_USAGE
|
83
|
|
- ;;
|
|
97
|
+ conf) inigrep "$@" ;;
|
|
98
|
+ help) print_help ;;
|
|
99
|
+ *) subcommand "$@" ;;
|
84
|
100
|
esac
|