From 86482e922c6777408338b6ed15511f6f27595444 Mon Sep 17 00:00:00 2001 From: Colin Date: Wed, 12 Jun 2024 08:44:02 +0000 Subject: [PATCH] scripts/update: add a --dry-run option --- scripts/update | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/scripts/update b/scripts/update index 94a6c311..b297733b 100755 --- a/scripts/update +++ b/scripts/update @@ -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