diff --git a/hack/pin-release-image.sh b/hack/pin-release-image.sh new file mode 100755 index 00000000000..d9d6695fc82 --- /dev/null +++ b/hack/pin-release-image.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Usage: +# +# pin-release-image PATH PULLSPEC +# +# edits the openshift-install executable at PATH in place to replace +# the default release pullspec with the user-provided PULLSPEC. + +set -e + +OPENSHIFT_INSTALL="${1}" +RELEASE_IMAGE="${2}" +PLACEHOLDER_A='_RELEASE_IMAGE_LOCATION_' +PLACEHOLDER_B='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + +MAX_LENGTH="$((1 + ${#PLACEHOLDER_A} + 1 + ${#PLACEHOLDER_B}))" +PADDING_COUNT="$((MAX_LENGTH - ${#RELEASE_IMAGE}))" +if test 0 -gt "${PADDING_COUNT}" +then + printf 'release image is %d characters long, but the limit is %d\n' "${#RELEASE_IMAGE}" "${MAX_LENGTH}" >&2 + exit 1 +fi + +PADDING='' +while test "${PADDING_COUNT}" -gt "${#PADDING}" +do + PADDING="${PADDING}X" +done + +exec sed -i "s|\\x0${PLACEHOLDER_A}\\x0${PLACEHOLDER_B}\\x0|${RELEASE_IMAGE}\\x0${PADDING}|" "${OPENSHIFT_INSTALL}"