more stuff
This commit is contained in:
parent
adf4cf3e0e
commit
462b92cb00
14 changed files with 257 additions and 0 deletions
6
crates/alacritty/crate.sh
Normal file
6
crates/alacritty/crate.sh
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
name="alacritty"
|
||||||
|
description="Set up alacritty"
|
||||||
|
|
||||||
|
files() {
|
||||||
|
descfile -l files/alacritty.yml {{home}}/.config/alacritty/alacritty.yml
|
||||||
|
}
|
0
crates/alacritty/files/alacritty.yml
Normal file
0
crates/alacritty/files/alacritty.yml
Normal file
1
crates/alacritty/package.list
Normal file
1
crates/alacritty/package.list
Normal file
|
@ -0,0 +1 @@
|
||||||
|
alacritty
|
11
crates/arch/crate.arch.sh
Normal file
11
crates/arch/crate.arch.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
name="arch custom"
|
||||||
|
description="install's custom arch things"
|
||||||
|
|
||||||
|
suscript ./
|
||||||
|
|
||||||
|
conditionfn is_arch
|
||||||
|
|
||||||
|
is_arch() {
|
||||||
|
grep -q "arch" /etc/os-release
|
||||||
|
}
|
0
crates/arch/package.arch.list
Normal file
0
crates/arch/package.arch.list
Normal file
8
crates/i3/crate.sh
Executable file
8
crates/i3/crate.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
name="i3"
|
||||||
|
description="Installs i3 with config"
|
||||||
|
|
||||||
|
files() {
|
||||||
|
descfile -l ./files/i3config {{home}}/.config/i3/config
|
||||||
|
}
|
0
crates/i3/files/i3config
Normal file
0
crates/i3/files/i3config
Normal file
2
crates/i3/package.list
Normal file
2
crates/i3/package.list
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
i3
|
||||||
|
i3blocks
|
13
dot.sh
Normal file
13
dot.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for lib in $(find ./lib -type f -name *.lib.sh); do
|
||||||
|
. $lib
|
||||||
|
done
|
||||||
|
|
||||||
|
__log_lvl=0
|
||||||
|
|
||||||
|
for crate in $(crates); do
|
||||||
|
debug "loading $crate..."
|
||||||
|
|
||||||
|
done
|
||||||
|
echo "OK"
|
88
lib/crate-runner.sh
Normal file
88
lib/crate-runner.sh
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ${LIB_DIR:-./lib}/crate.common.sh
|
||||||
|
. ${LIB_DIR:-./lib}/log.lib.sh
|
||||||
|
. ${LIB_DIR:-./lib}/vars.lib.sh
|
||||||
|
|
||||||
|
file=$1
|
||||||
|
action=$2
|
||||||
|
|
||||||
|
|
||||||
|
run_crate_config_hooks() {
|
||||||
|
debug "running conditional functions..."
|
||||||
|
for condfn in $conditionfns; do
|
||||||
|
debug "running \"$condfn\"..."
|
||||||
|
$condfn || return 1
|
||||||
|
done
|
||||||
|
files
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_pending_actions() {
|
||||||
|
echo "This crate (${crate:-${1:-unknown}}) wants to make the following changes:"
|
||||||
|
if [ -n "$packages_marked_for_install" ]; then
|
||||||
|
echo "Install these packages:"
|
||||||
|
for pkg in $packages_marked_for_install; do
|
||||||
|
echo " $pkg"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$packages_marked_for_removal" ]; then
|
||||||
|
echo "Remove these packages:"
|
||||||
|
for pkg in $packages_marked_for_removal; do
|
||||||
|
echo " $pkg"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$files_to_link" ]; then
|
||||||
|
echo "Link these files:"
|
||||||
|
for link in $files_to_link; do
|
||||||
|
echo " $(echo $link | sed 's/:/ \-\> /')"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$files_to_copy" ]; then
|
||||||
|
echo "Copy these files:"
|
||||||
|
for file in $files_to_copy; do
|
||||||
|
echo " $(echo $file | sed 's/:/ \-\> /')"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
printf "Is this okay? [press enter to continue] "
|
||||||
|
read
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
case $action in
|
||||||
|
config_check)
|
||||||
|
if ! run_crate_config_hooks; then
|
||||||
|
warn "crate config failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
skip=0
|
||||||
|
trap 'skip=1' INT
|
||||||
|
prompt_pending_actions
|
||||||
|
[ $skip -eq 1 ] && exit 1
|
||||||
|
trap - INT
|
||||||
|
;;
|
||||||
|
run)
|
||||||
|
if [ "$UID" = "0" ]; then
|
||||||
|
.
|
||||||
|
for script in $scripts_to_run_as_su; do
|
||||||
|
debug "script $script"
|
||||||
|
$script
|
||||||
|
done
|
||||||
|
pm -i $packages_marked_for_install
|
||||||
|
pm -r $packages_marked_for_removal
|
||||||
|
else
|
||||||
|
for file in $files_to_copy; do
|
||||||
|
debug "link $(echo "$file" | sed 's/:/ \-\> /g')"
|
||||||
|
cp $(echo "$file" | sed s'/:.*//g') $(echo "$file" | sed s'/.*://g')
|
||||||
|
done
|
||||||
|
for file in $files_to_link; do
|
||||||
|
debug "link $(echo "$file" | sed 's/:/ \-\> /g')"
|
||||||
|
ln $(echo "$file" | sed s'/:.*//g') $(echo "$file" | sed s'/.*://g')
|
||||||
|
done
|
||||||
|
for script in $scripts_to_run; do
|
||||||
|
debug "script $script"
|
||||||
|
$script
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
44
lib/crate.common.sh
Normal file
44
lib/crate.common.sh
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
script() {
|
||||||
|
scripts_to_run="$scripts_to_run $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
suscript() {
|
||||||
|
scripts_to_run_as_su="$scripts_to_run_as_su $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
pkgs() {
|
||||||
|
for pkg in $@; do
|
||||||
|
pkgname="$(echo $pkg | cut -c 2-)"
|
||||||
|
case $(echo $pkg | cut -c 1) in
|
||||||
|
+)
|
||||||
|
packages_marked_for_install="$packages_marked_for_install $pkgname"
|
||||||
|
;;
|
||||||
|
-)
|
||||||
|
packages_marked_for_removal="$packages_marked_for_removal $pkgname"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
conditionfn() {
|
||||||
|
conditionfns="$conditionfns $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
descfile() {
|
||||||
|
islink=${ALWAYS_LINK:-0}
|
||||||
|
while getopts "l" opt; do
|
||||||
|
case $opt in
|
||||||
|
l)
|
||||||
|
islink=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
if [ $islink -eq 1 ]; then
|
||||||
|
files_to_link="$files_to_link $(subvars $1):$(subvars $2)"
|
||||||
|
else
|
||||||
|
files_to_copy="$files_to_copy $(subvars $1):$(subvars $2)"
|
||||||
|
fi
|
||||||
|
}
|
13
lib/crates.lib.sh
Normal file
13
lib/crates.lib.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
crates() {
|
||||||
|
for c in $(find ./crates -mindepth 1 -maxdepth 1 -type d); do
|
||||||
|
[ -f "$c/crate.sh" ] && echo $(basename $c)
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_runner() {
|
||||||
|
[ -d "$1" ] || return 1
|
||||||
|
sh ./lib/crate-runner.sh $1 $2
|
||||||
|
}
|
||||||
|
|
60
lib/log.lib.sh
Normal file
60
lib/log.lib.sh
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
__log_lvl=1
|
||||||
|
|
||||||
|
__log_get_lvl() {
|
||||||
|
case ${1:-$__log_lvl} in
|
||||||
|
0)
|
||||||
|
echo debug
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
echo info
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo warn
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo err
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo fatal
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
__log() {
|
||||||
|
[ $1 -ge $__log_lvl ] || return
|
||||||
|
level=$(__log_get_lvl $1)
|
||||||
|
shift
|
||||||
|
printf "[%s] %s\n" "$level" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
debug() {
|
||||||
|
__log 0 "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
info() {
|
||||||
|
__log 1 "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
warn() {
|
||||||
|
__log 2 "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
err() {
|
||||||
|
__log 3 "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
fatal() {
|
||||||
|
while getopts "e:" opt; do
|
||||||
|
case $opt in
|
||||||
|
e)
|
||||||
|
exitnum=$OPTARG
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
__log 4 "$@"
|
||||||
|
exit ${exitnum:-1}
|
||||||
|
}
|
11
lib/vars.lib.sh
Normal file
11
lib/vars.lib.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
safevar() {
|
||||||
|
echo "$@" | sed 's_/_\\/_g'
|
||||||
|
}
|
||||||
|
|
||||||
|
subvars() {
|
||||||
|
echo "$@" \
|
||||||
|
| sed "s/{{home}}/$(safevar $HOME)/g" \
|
||||||
|
| sed "s/{{user}}/$USER/g"
|
||||||
|
}
|
Loading…
Reference in a new issue