mirror of
https://github.com/ivuorinen/actions.git
synced 2026-01-26 11:34:00 +00:00
* chore: remove bylines from actions * feat: new daily release action * chore(ci): ignore false positive in codeql, fix others * fix: cr comments
91 lines
2.6 KiB
Bash
Executable File
91 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# Bump from one major version to another (annual version bump)
|
|
set -eu
|
|
|
|
OLD_VERSION="${1:-}"
|
|
NEW_VERSION="${2:-}"
|
|
|
|
# Source shared utilities
|
|
# shellcheck source=_tools/shared.sh
|
|
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
# shellcheck disable=SC1091
|
|
. "$SCRIPT_DIR/shared.sh"
|
|
|
|
# Check git availability
|
|
require_git
|
|
|
|
if [ -z "$OLD_VERSION" ] || [ -z "$NEW_VERSION" ]; then
|
|
printf '%b' "${RED}Error: OLD_VERSION and NEW_VERSION arguments required${NC}\n"
|
|
printf 'Usage: %s v2025 v2026\n' "$0"
|
|
exit 1
|
|
fi
|
|
|
|
# Validate major version format
|
|
if ! validate_major_version "$OLD_VERSION"; then
|
|
printf '%b' "${RED}Error: Invalid old version format: $OLD_VERSION${NC}\n"
|
|
printf 'Expected: vYYYY (e.g., v2025)\n'
|
|
exit 1
|
|
fi
|
|
|
|
if ! validate_major_version "$NEW_VERSION"; then
|
|
printf '%b' "${RED}Error: Invalid new version format: $NEW_VERSION${NC}\n"
|
|
printf 'Expected: vYYYY (e.g., v2026)\n'
|
|
exit 1
|
|
fi
|
|
|
|
printf '%b' "${BLUE}Bumping major version from $OLD_VERSION to $NEW_VERSION${NC}\n"
|
|
printf '\n'
|
|
|
|
# Get SHA for new version tag
|
|
if ! git rev-parse "$NEW_VERSION" >/dev/null 2>&1; then
|
|
printf '%b' "${YELLOW}Warning: Tag $NEW_VERSION not found${NC}\n"
|
|
printf 'Creating tag %s pointing to current HEAD...\n' "$NEW_VERSION"
|
|
|
|
if ! current_sha=$(git rev-parse HEAD 2>&1); then
|
|
printf '%b' "${RED}Error: Failed to get current HEAD SHA${NC}\n" >&2
|
|
printf 'Git command failed: git rev-parse HEAD\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
git tag -a "$NEW_VERSION" -m "Major version $NEW_VERSION"
|
|
printf '%b' "${GREEN}✓ Created tag $NEW_VERSION pointing to $current_sha${NC}\n"
|
|
printf '\n'
|
|
fi
|
|
|
|
if ! new_sha=$(git rev-list -n 1 "$NEW_VERSION" 2>&1); then
|
|
printf '%b' "${RED}Error: Failed to get SHA for tag $NEW_VERSION${NC}\n" >&2
|
|
printf 'Git command failed: git rev-list -n 1 "%s"\n' "$NEW_VERSION" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$new_sha" ]; then
|
|
printf '%b' "${RED}Error: Empty SHA returned for tag $NEW_VERSION${NC}\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
printf '%b' "Target SHA for $NEW_VERSION: ${GREEN}$new_sha${NC}\n"
|
|
printf '\n'
|
|
|
|
# Update all action references
|
|
printf '%b' "${BLUE}Updating action references...${NC}\n"
|
|
"$SCRIPT_DIR/update-action-refs.sh" "$NEW_VERSION" "tag"
|
|
|
|
# Commit the changes
|
|
if ! git diff --quiet; then
|
|
git add -- */action.yml
|
|
git commit -m "chore: bump major version from $OLD_VERSION to $NEW_VERSION
|
|
|
|
This commit updates all internal action references from $OLD_VERSION
|
|
to $NEW_VERSION."
|
|
|
|
printf '%b' "${GREEN}✅ Committed version bump${NC}\n"
|
|
else
|
|
printf '%b' "${BLUE}No changes to commit${NC}\n"
|
|
fi
|
|
|
|
printf '\n'
|
|
printf '%b' "${GREEN}✅ Major version bumped successfully${NC}\n"
|
|
printf '\n'
|
|
printf '%b' "${YELLOW}Remember to update READMEs:${NC}\n"
|
|
printf ' make docs\n'
|