Updated telemetry to support game dumps.
This commit is contained in:
@@ -7,8 +7,8 @@ usage()
|
||||
cat <<'EOF'
|
||||
Usage: ./scripts/release.sh CHANNEL VERSION [OPTIONS]
|
||||
|
||||
Build a verified local release package in dist/vVERSION/. This command does not
|
||||
commit, tag, push, create a Gitea release, or upload files.
|
||||
Build a verified local release package in .artifacts/releases/vVERSION/. This
|
||||
command does not commit, tag, push, create a Gitea release, or upload files.
|
||||
|
||||
Channels:
|
||||
stable
|
||||
@@ -22,7 +22,8 @@ Options:
|
||||
--editor Edit the final notes with ${EDITOR:-nano}
|
||||
--dry-run Build and verify in a temporary directory only
|
||||
--skip-tests Skip configured local preflight checks
|
||||
--signing-key PATH Use PATH instead of the local release signing key
|
||||
--signing-key PATH Use an external private signing key at PATH
|
||||
--output-directory PATH Write the version package to PATH
|
||||
-h, --help Show this help
|
||||
EOF
|
||||
}
|
||||
@@ -68,6 +69,7 @@ OPEN_EDITOR=0
|
||||
DRY_RUN=0
|
||||
SKIP_TESTS=0
|
||||
SIGNING_KEY="${PTLINUX_SIGNING_KEY:-}"
|
||||
REQUESTED_OUTPUT_DIRECTORY=""
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
@@ -107,6 +109,11 @@ do
|
||||
SIGNING_KEY="$2"
|
||||
shift 2
|
||||
;;
|
||||
--output-directory)
|
||||
[[ $# -ge 2 ]] || { printf '%s\n' '--output-directory requires a path.' >&2; exit 2; }
|
||||
REQUESTED_OUTPUT_DIRECTORY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
@@ -145,6 +152,7 @@ then
|
||||
exit 1
|
||||
fi
|
||||
cd -- "$PROJECT_ROOT"
|
||||
export PYTHONPATH="${PROJECT_ROOT}/src${PYTHONPATH:+:${PYTHONPATH}}"
|
||||
|
||||
"$PYTHON_BIN" -m ptlinux.update_resolver validate "$CHANNEL" "$VERSION"
|
||||
TAG="v${VERSION}"
|
||||
@@ -171,6 +179,17 @@ cleanup()
|
||||
}
|
||||
trap cleanup EXIT
|
||||
NOTES_PATH="${TEMPORARY_ROOT}/release-notes.md"
|
||||
if [[ "$DRY_RUN" -eq 1 && "$CHANGELOG_ONLY" -eq 0 ]]
|
||||
then
|
||||
OUTPUT_CANDIDATE="${TEMPORARY_ROOT}/releases/${TAG}"
|
||||
else
|
||||
OUTPUT_CANDIDATE="${REQUESTED_OUTPUT_DIRECTORY:-${PROJECT_ROOT}/.artifacts/releases/${TAG}}"
|
||||
fi
|
||||
OUTPUT_DIRECTORY="$(
|
||||
"$PYTHON_BIN" -c \
|
||||
'import sys; from pathlib import Path; from scripts.release_lib import _safe_output_directory; print(_safe_output_directory(Path(sys.argv[1])))' \
|
||||
"$OUTPUT_CANDIDATE"
|
||||
)"
|
||||
|
||||
if [[ -z "$DESCRIPTION" && -z "$DESCRIPTION_FILE" && -t 0 && "$CHANGELOG_ONLY" -eq 0 ]]
|
||||
then
|
||||
@@ -237,14 +256,33 @@ printf '%s\n' '--------------------------------------------------'
|
||||
|
||||
if [[ "$CHANGELOG_ONLY" -eq 1 ]]
|
||||
then
|
||||
NOTES_OUTPUT_DIRECTORY="${PROJECT_ROOT}/dist/${TAG}"
|
||||
mkdir -p -- "$NOTES_OUTPUT_DIRECTORY"
|
||||
cp -- "$NOTES_PATH" "${NOTES_OUTPUT_DIRECTORY}/release-notes.md"
|
||||
mkdir -p -- "$OUTPUT_DIRECTORY"
|
||||
cp -- "$NOTES_PATH" "${OUTPUT_DIRECTORY}/release-notes.md"
|
||||
printf 'Release notes written to %s\n' \
|
||||
"${NOTES_OUTPUT_DIRECTORY}/release-notes.md"
|
||||
"${OUTPUT_DIRECTORY}/release-notes.md"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -z "$SIGNING_KEY" ]]
|
||||
then
|
||||
printf '%s\n' 'A release signing key is required.' >&2
|
||||
printf '%s\n' \
|
||||
'Use --signing-key PATH or set PTLINUX_SIGNING_KEY to a path outside the repository.' >&2
|
||||
exit 1
|
||||
fi
|
||||
SIGNING_KEY="$(
|
||||
"$PYTHON_BIN" -c \
|
||||
'import sys
|
||||
from pathlib import Path
|
||||
from scripts.release_lib import ReleaseToolError, _safe_signing_key_path
|
||||
try:
|
||||
print(_safe_signing_key_path(Path(sys.argv[1]), output_directory=Path(sys.argv[2])))
|
||||
except ReleaseToolError as exc:
|
||||
print(f"Invalid release signing key: {exc}", file=sys.stderr)
|
||||
raise SystemExit(2)' \
|
||||
"$SIGNING_KEY" "$OUTPUT_DIRECTORY"
|
||||
)"
|
||||
|
||||
if [[ "$SKIP_TESTS" -ne 1 ]]
|
||||
then
|
||||
mapfile -t PREFLIGHT_COMMANDS < <(
|
||||
@@ -261,11 +299,6 @@ then
|
||||
else
|
||||
printf '%s\n' 'Skipping local preflight checks by request.'
|
||||
fi
|
||||
|
||||
if [[ -z "$SIGNING_KEY" ]]
|
||||
then
|
||||
SIGNING_KEY="${PROJECT_ROOT}/release-keys/launcher-update-private.pem"
|
||||
fi
|
||||
if [[ ! -f "$SIGNING_KEY" || -L "$SIGNING_KEY" ]]
|
||||
then
|
||||
printf 'Release signing key is missing: %s\n' "$SIGNING_KEY" >&2
|
||||
@@ -273,13 +306,6 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$DRY_RUN" -eq 1 ]]
|
||||
then
|
||||
OUTPUT_DIRECTORY="${TEMPORARY_ROOT}/dist/${TAG}"
|
||||
else
|
||||
OUTPUT_DIRECTORY="${PROJECT_ROOT}/dist/${TAG}"
|
||||
fi
|
||||
|
||||
SOURCE_DATE_EPOCH="$SOURCE_DATE_EPOCH" \
|
||||
RELEASE_COMMIT="$COMMIT" \
|
||||
RELEASE_TAG="$TAG" \
|
||||
@@ -297,7 +323,7 @@ REQUIRE_RELEASE_SIGNATURE=1 \
|
||||
if [[ "$DRY_RUN" -eq 1 ]]
|
||||
then
|
||||
printf '%s\n' \
|
||||
'Dry run complete. The release built and verified in a temporary directory; dist/ was not changed.'
|
||||
'Dry run complete. The release built and verified in a temporary directory; .artifacts/ was not changed.'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user