scripts/update: add a --dry-run option
This commit is contained in:
parent
111c69b368
commit
86482e922c
|
@ -9,6 +9,7 @@ usage() {
|
|||
echo "update nixpkgs: update only the nixpkgs input"
|
||||
echo "update sane: update every package under the 'sane' attribute"
|
||||
echo "update: update everything i know how to update"
|
||||
exit 1
|
||||
}
|
||||
|
||||
warn() {
|
||||
|
@ -18,6 +19,14 @@ info() {
|
|||
echo "$@"
|
||||
}
|
||||
|
||||
hasEffect() {
|
||||
if [ -n "$dryRun" ]; then
|
||||
echo "dry-run: skip $@"
|
||||
else
|
||||
eval "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
# usage: getPkgs outVar prefix
|
||||
getPkgs() {
|
||||
local -n attrsArr="$1"
|
||||
|
@ -27,7 +36,7 @@ getPkgs() {
|
|||
fi
|
||||
|
||||
local attrs="$(nix-env -f . --query --available --attr-path --no-name -A $attrPrefix)"
|
||||
attrsArr=($attrs)
|
||||
attrsArr+=($attrs)
|
||||
}
|
||||
|
||||
updateOnePkg() {
|
||||
|
@ -45,9 +54,35 @@ updateOnePkg() {
|
|||
UPDATE_NIX_NAME="$UPDATE_NIX_NAME" UPDATE_NIX_PNAME="$UPDATE_NIX_PNAME" UPDATE_NIX_OLD_VERSION="$UPDATE_NIX_OLD_VERSION" UPDATE_NIX_ATTR_PATH="$attrPath" eval $updateScript
|
||||
}
|
||||
|
||||
dryRun=
|
||||
toplevelsToUpdate=()
|
||||
parseArgs() {
|
||||
while [ "$#" -ne 0 ]; do
|
||||
local arg=$1
|
||||
shift
|
||||
case "$arg" in
|
||||
(--help)
|
||||
usage
|
||||
;;
|
||||
(--dry-run)
|
||||
dryRun=1
|
||||
;;
|
||||
(*)
|
||||
toplevelsToUpdate+=("$arg")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ "${#toplevelsToUpdate[@]}" -eq 0 ]; then
|
||||
toplevelsToUpdate=(sane)
|
||||
fi
|
||||
}
|
||||
|
||||
parseArgs "$@"
|
||||
pkgsToUpdate=()
|
||||
getPkgs pkgsToUpdate
|
||||
for t in "${toplevelsToUpdate[@]}"; do
|
||||
getPkgs pkgsToUpdate "$t"
|
||||
done
|
||||
|
||||
for p in "${pkgsToUpdate[@]}"; do
|
||||
updateOnePkg "$p"
|
||||
hasEffect updateOnePkg "$p"
|
||||
done
|
||||
|
|
Loading…
Reference in New Issue
Block a user