init: v2 of dot
This commit is contained in:
parent
0a8b09ca65
commit
7991035935
13 changed files with 156 additions and 12 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.installed
|
13
README.md
13
README.md
|
@ -1,12 +1 @@
|
||||||
# Raine's Dotfiles
|
# Strix's Dotfiles
|
||||||
|
|
||||||
## Crates
|
|
||||||
Everything is a crate.
|
|
||||||
If something is distro specific you should follow the following naming scheme:
|
|
||||||
`crate.<DISTRO>.sh`
|
|
||||||
|
|
||||||
## Using it
|
|
||||||
Just use the script tbh
|
|
||||||
```sh
|
|
||||||
curl -L https://via.ixvd.net/sh | sh
|
|
||||||
```
|
|
3
configs/default.sh
Normal file
3
configs/default.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
crate_apply ssh
|
3
configs/laptop.sh
Normal file
3
configs/laptop.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
crate_apply tlp
|
0
crates/example/.invalid
Normal file
0
crates/example/.invalid
Normal file
0
crates/example/apply.sh
Normal file
0
crates/example/apply.sh
Normal file
0
crates/example/remove.sh
Normal file
0
crates/example/remove.sh
Normal file
9
crates/ssh/apply.sh
Normal file
9
crates/ssh/apply.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "pulling ssh key..."
|
||||||
|
scp \
|
||||||
|
strix@hydrogen.red.helix.saluco.nl:.ssh/config \
|
||||||
|
strix@hydrogen.red.helix.saluco.nl:.ssh/authorized_keys \
|
||||||
|
strix@hydrogen.red.helix.saluco.nl:.ssh/id_rsa \
|
||||||
|
strix@hydrogen.red.helix.saluco.nl:.ssh/id_rsa.pub \
|
||||||
|
~/.ssh
|
3
crates/ssh/remove.sh
Normal file
3
crates/ssh/remove.sh
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm -rf ~/.ssh
|
2
crates/tlp/apply.sh
Normal file
2
crates/tlp/apply.sh
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
79
lib/crates.sh
Normal file
79
lib/crates.sh
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
DF_CRATE_STRICT=${DF_CRATE_STRICT:-0}
|
||||||
|
|
||||||
|
# crate_validate <crate> <exit_on_invalid>
|
||||||
|
# example:
|
||||||
|
# crate_validate $1 1
|
||||||
|
# crate_validate $1 0 || return 1
|
||||||
|
crate_validate() {
|
||||||
|
a=$DF_RUNNER_VERBOSE
|
||||||
|
DF_RUNNER_VERBOSE=
|
||||||
|
err=0
|
||||||
|
[ -d "crates/$1" ] || err=1
|
||||||
|
[ -f "crates/$1/apply.sh" ] || err=1
|
||||||
|
[ -f "crates/$1/.invalid" ] && err=1
|
||||||
|
if [ $err = 1 ]; then
|
||||||
|
if [ "${2:-$DF_CRATE_STRICT}" = "1" ]; then
|
||||||
|
echo "$1 is an invalid crate"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
DF_RUNNER_VERBOSE=$a
|
||||||
|
}
|
||||||
|
|
||||||
|
in_crate() {
|
||||||
|
crate=$1
|
||||||
|
crate_validate $1 0 || return 1
|
||||||
|
shift
|
||||||
|
DF_RUNNER_WORKDIR="$(pwd)/crates/$crate" ./runner $@
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_applied() {
|
||||||
|
crate_validate $1 0 || return 1
|
||||||
|
in_crate "$1" [ -f ".installed" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_has_root_apply() {
|
||||||
|
crate_validate $1 0 || return 1
|
||||||
|
in_crate "$1" [ -f "apply_root.sh" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_has_root_remove() {
|
||||||
|
crate_validate $1 0 || return 1
|
||||||
|
in_crate "$1" [ -f "remove_root.sh" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_removable() {
|
||||||
|
crate_validate $1 0 || return 1
|
||||||
|
in_crate "$1" [ -f "remove.sh" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_info() {
|
||||||
|
if ! crate_validate $1 0; then
|
||||||
|
printf "%s " "!"
|
||||||
|
else
|
||||||
|
if crate_applied $1; then
|
||||||
|
if crate_removable $1; then
|
||||||
|
printf "%s " "+"
|
||||||
|
else
|
||||||
|
printf "%s " "*"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "%s " "-"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
printf "%s " $1
|
||||||
|
crate_removable $1 && printf "[removable] "
|
||||||
|
crate_has_root_apply $1 && printf "[has root apply] "
|
||||||
|
crate_has_root_remove $1 && printf "[has root remove] "
|
||||||
|
printf "\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
crate_apply() {
|
||||||
|
crate_validate $1 1
|
||||||
|
echo "applying crates/$1..."
|
||||||
|
in_crate $1 sh apply.sh
|
||||||
|
}
|
26
main
Executable file
26
main
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. lib/crates.sh
|
||||||
|
|
||||||
|
cmd=$1
|
||||||
|
if [ -z "$cmd" ]; then
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $cmd in
|
||||||
|
apply-crates) crate_apply $@ ;;
|
||||||
|
remove-crate)
|
||||||
|
if crate_removable $1; then
|
||||||
|
crate_remove $1
|
||||||
|
else
|
||||||
|
echo "crate can't be removed"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
list-crates)
|
||||||
|
for c in ${@:-$(ls crates)}; do
|
||||||
|
crate_info $c
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
29
runner
Executable file
29
runner
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# DF_SRC_ROOT: dotfiles source root
|
||||||
|
# DF_RUNNER_WORKDIR: runner workdir
|
||||||
|
# DF_RUNNER_LIBS: libs to include in runner
|
||||||
|
# DF_RUNNER_VERBOSE: verbosity runner
|
||||||
|
|
||||||
|
|
||||||
|
if [ -n "$DF_RUNNER_WORKDIR" ]; then
|
||||||
|
[ $DF_RUNNER_VERBOSE ] && echo "workdir: $DF_RUNNER_WORKDIR"
|
||||||
|
DF_SRC_ROOT=${DF_SRC_ROOT:-$(pwd)}
|
||||||
|
cd $DF_RUNNER_WORKDIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
for lib in ${DF_RUNNER_LIBS:-}; do
|
||||||
|
if [ -n "$DF_SRC_ROOT" ]; then
|
||||||
|
oldpwd=$(pwd)
|
||||||
|
cd $DF_SRC_ROOT
|
||||||
|
fi
|
||||||
|
[ $DF_RUNNER_VERBOSE ] && echo "include: lib/$lib.sh"
|
||||||
|
. lib/$lib.sh
|
||||||
|
if [ -n "$DF_SRC_ROOT" ]; then
|
||||||
|
cd $oldpwd
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
[ $DF_RUNNER_VERBOSE ] && echo "command: $@"
|
||||||
|
|
||||||
|
$@
|
Loading…
Reference in a new issue