Hooks
Earlier in
Crontab
I made use of Hooks.runUnless
to only run crontab
when it needed updating.
MCM.Hooks
can be used to generate a script to perform system checks and make desired changes.
MCM.Hooks
is written somewhat in the style of MCM itself, in that it first runs readonly commands and then, after prompting, makes changes to the system.
MCM MCM.Hooks import MCM.ScriptRegister as ScriptRegister import MCM.Require as Require define actionhook(action cond mode description = echo -n "Action will be: "; cat <<"EOF_Hook4" + @action + EOF_Hook4 + key = @cond@action ) case mode when unless join = || when when join = && .readonlyhook cond> @cond key> @key mode> @mode readonlycmd: something=1; @description Fragment group> actions name> @key content: { @cond + } @join { @action + } define readonlyhook(cond mode readonlycmd key = @cond@readonlycmd ) case mode when unless join = || when when join = && Fragment group> readonly name> @key content: { @cond + } @join { @readonlycmd + } define readonlyhookUnless(readonlycmd unless key = @unless@readonlycmd ) .readonlyhook cond> @unless key> @key mode> unless readonlycmd> @readonlycmd define readonlyhookWhen(readonlycmd when key = @when@readonlycmd ) .readonlyhook cond> @when mode> when readonlycmd> @readonlycmd define runUnless(command cond) .actionhook action> @command cond> @cond mode> unless define runWhen(command cond) .actionhook action> @command cond> @cond mode> when define writeScript() ScriptRegister.register name> 50_hooks content: #!/bin/bash + something=0 +$fragments(readonly,,@NEWLINE,) + if [ $something -eq 0 ];then exit; fi + + echo 'Implement the above actions?' + select ii in "Implement" "Ignore"; do + case $ii in + Implement ) break;; + Ignore ) exit;; + esac + done +$fragments(actions,,@NEWLINE,) + true