Add 'hey swap'
For swapping out symlinked store files so I can tweak them without doing a complete rebuild each time.
This commit is contained in:
parent
40005d0e88
commit
87b24626ea
33
bin/hey
33
bin/hey
|
@ -45,6 +45,7 @@ function main {
|
|||
echo " vm TODO"
|
||||
echo " push Push thie config to a remote NixOS system and rebuild it"
|
||||
echo " generations (gen) TODO"
|
||||
echo " swap TODO"
|
||||
}
|
||||
|
||||
function _rebuild {
|
||||
|
@ -76,6 +77,38 @@ function main {
|
|||
fi
|
||||
}
|
||||
|
||||
function _swap {
|
||||
for target in $@; do
|
||||
if [ -d "$target" ]; then
|
||||
files=( "$target"/**/*.nix-store-backup )
|
||||
links=( $(find "$target" -type l) )
|
||||
if [[ "$files" ]]; then
|
||||
echo "There are swapped files here. Unswapping!"
|
||||
for file in $files[@]; do
|
||||
_swap "$link"
|
||||
done
|
||||
else
|
||||
echo "Swapping files in $target"
|
||||
for link in $links[@]; do
|
||||
if [[ "$(readlink $link)" == /nix/store/* ]]; then
|
||||
_swap "$link"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
elif [ -f "$target.nix-store-backup" ]; then
|
||||
echo "Unswapping $target"
|
||||
_do mv -i "$target.nix-store-backup" "$target"
|
||||
elif [ -f "$target" ]; then
|
||||
echo "Swapping $target"
|
||||
_do mv "$target" "$target.nix-store-backup"
|
||||
_do cp "$target.nix-store-backup" "$target"
|
||||
else
|
||||
>&2 echo "Not a valid target: $target"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
###
|
||||
cmd="$1"
|
||||
[[ $# > 0 ]] && shift
|
||||
|
|
Loading…
Reference in a new issue