stuff
This commit is contained in:
parent
11187dc11c
commit
05595c2e14
28 changed files with 210 additions and 246 deletions
85
dot
Executable file
85
dot
Executable file
|
@ -0,0 +1,85 @@
|
|||
#!/bin/sh
|
||||
|
||||
ask=0
|
||||
|
||||
is_function() {
|
||||
type "$1" 2> /dev/null | sed "s/$1//" | grep -qwi function
|
||||
}
|
||||
|
||||
curr_distro() {
|
||||
cat /etc/os-release | grep -G "^ID=" | sed 's/ID=//'
|
||||
}
|
||||
|
||||
include() {
|
||||
[ -f "$1" ] || return 1
|
||||
. $1
|
||||
return 0
|
||||
}
|
||||
|
||||
func() {
|
||||
if is_function $(echo "super_$2"); then
|
||||
sudo sh -c ". $1 && super_$2"
|
||||
fi
|
||||
is_function $2 && $2
|
||||
}
|
||||
|
||||
get_command() {
|
||||
case $1 in
|
||||
a*)
|
||||
printf "apply"
|
||||
;;
|
||||
u*)
|
||||
printf "undo"
|
||||
;;
|
||||
*)
|
||||
echo "err: not supported" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# only run this *in crate dir*
|
||||
run_crate() {
|
||||
include ./crate.sh || exit 1
|
||||
if [ -n "$describe" ]; then
|
||||
echo "desc($(basename $PWD)): $describe"
|
||||
fi
|
||||
cmd=$(get_command $1)
|
||||
scripts=${scripts:-"@self @distro"}
|
||||
for s in $scripts; do
|
||||
echo "exec($(basename $PWD)): $s/$cmd"
|
||||
case $s in
|
||||
@self)
|
||||
func ./crate.sh $cmd
|
||||
;;
|
||||
@distro)
|
||||
unset -f super_$cmd
|
||||
unset -f $cmd
|
||||
include ./crate.$(curr_distro).sh
|
||||
func ./crate.$(curr_distro).sh $cmd
|
||||
unset -f super_$cmd
|
||||
unset -f $cmd
|
||||
include ./crate.sh
|
||||
;;
|
||||
*)
|
||||
sh $s
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
if [ $# -eq 2 ]; then
|
||||
[ -d crates/*$1 ] || exit 1
|
||||
cd crates/*$1
|
||||
run_crate $2
|
||||
cd ../..
|
||||
else
|
||||
[ $# -eq 0 ] && exit 2
|
||||
for crate in $(find ./crates -mindepth 1 -maxdepth 1 -type d | sort); do
|
||||
cd $crate
|
||||
run_crate $1
|
||||
cd ../..
|
||||
done
|
||||
fi
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue