dsh 0.2.0-rc.2: in-container update (experimental channel), path-agnostic compose, upstream patches adapted to 0.1.x/0.2.x
This commit is contained in:
commit
e6dcef9bf5
302 files changed
+75178
No files matched your search
Executable
+65
@@ -0,0 +1,65 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo 'usage: bump-environment.sh <new-environment-version>' >&2
|
||||
exit 64
|
||||
fi
|
||||
|
||||
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
repository_root=$(CDPATH= cd -- "$script_dir/.." && pwd)
|
||||
definition="$repository_root/container/environment/definition.json"
|
||||
target="$repository_root/release/supported-target.json"
|
||||
contract="$repository_root/container/platform/tools/supported-target.mjs"
|
||||
library="$repository_root/container/platform/lib/supported-target.mjs"
|
||||
new_version=$1
|
||||
|
||||
node "$contract" validate "$target" "$definition" >/dev/null
|
||||
current_version=$(jq -er '.version' "$definition")
|
||||
comparison=$(node --input-type=module - "$library" "$new_version" "$current_version" <<'EOF'
|
||||
import { pathToFileURL } from 'node:url'
|
||||
|
||||
const [libraryPath, nextVersion, currentVersion] = process.argv.slice(2)
|
||||
const { compareSemanticVersions } = await import(pathToFileURL(libraryPath).href)
|
||||
process.stdout.write(String(compareSemanticVersions(
|
||||
nextVersion,
|
||||
currentVersion,
|
||||
'new Environment version',
|
||||
'current Environment version',
|
||||
)))
|
||||
EOF
|
||||
)
|
||||
|
||||
if [ "$comparison" -lt 0 ]; then
|
||||
echo 'new Environment version would roll back the current version' >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ "$comparison" -eq 0 ]; then
|
||||
jq -cn --arg version "$current_version" '{changed:false,version:$version}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
definition_tmp=$(mktemp "${definition}.XXXXXX.tmp")
|
||||
target_tmp=$(mktemp "${target}.XXXXXX.tmp")
|
||||
cleanup() {
|
||||
rm -f "$definition_tmp" "$target_tmp"
|
||||
}
|
||||
trap cleanup EXIT HUP INT TERM
|
||||
|
||||
jq --arg version "$new_version" '.version = $version' "$definition" > "$definition_tmp"
|
||||
jq --arg version "$new_version" '.environment = $version' "$target" > "$target_tmp"
|
||||
chmod --reference="$definition" "$definition_tmp"
|
||||
chmod --reference="$target" "$target_tmp"
|
||||
node "$contract" validate "$target_tmp" "$definition_tmp" >/dev/null
|
||||
|
||||
mv "$definition_tmp" "$definition"
|
||||
mv "$target_tmp" "$target"
|
||||
sync -f "$definition"
|
||||
sync -f "$target"
|
||||
trap - EXIT HUP INT TERM
|
||||
|
||||
jq -cn \
|
||||
--arg previousVersion "$current_version" \
|
||||
--arg version "$new_version" \
|
||||
'{changed:true,previousVersion:$previousVersion,version:$version}'
|
||||
Reference in new issue
Block a user