diff --git a/scripts/update-component-sha.sh b/scripts/update-component-sha.sh index 63fb811a5..ec7ef5bbf 100755 --- a/scripts/update-component-sha.sh +++ b/scripts/update-component-sha.sh @@ -1,10 +1,67 @@ #!/bin/sh set -e -if [ $# -ne 2 ] ; then - echo "Need and as arguments" >&2 + +## +# +# script to replace hashes in config files +# see usage() for usage and functionality +# + +function usage() { + cat >&2 < + +Available modes: --hash and --image + +Replace by hash: + $0 --hash + Example: $0 8675309abcdefg abcdef567899 + Will replace all instances of 8675309abcdefg with abcdef567899 + +Replace by image: $0 --image + $0 --image + Example: $0 linuxkit/foo abcdef567899 + Will tag all instances of linuxkit/foo with abcdef567899 + +By default, for convenience, if no mode is given (--image or --hash), the first method (--hash) is assumed. +Thus the following are equivalent: + $0 + $0 --hash + +EOF +} + + +# backwards compatibility +if [ $# -eq 2 ]; then + set -- "--hash" "$1" "$2" +fi + +# sufficient arguments +if [ $# -ne 3 ] ; then + usage exit 1 fi -old=$1 -new=$2 -git grep -l "$old" | xargs sed -i -e "s,$old,$new,g" + +# which mode? +case "$1" in + --hash) + old=$2 + new=$3 + + git grep -w -l "\b$old\b" | xargs sed -i.bak -e "s,$old,$new,g" + ;; + --image) + image=$2 + hash=$3 + git grep -E -l "\b$image:" | xargs sed -i.bak -e "s,$image:[[:xdigit:]]"'\{40\}'",$image:$hash,g" + ;; + *) + echo "Unknown mode $1" + usage + exit 1 + ;; +esac + +find . -name '*.bak' | xargs rm