Skip to content

Order pre-release labels when comparing versions - #132

Merged
MickLesk merged 1 commit into
mainfrom
fix/forge-prerelease-version-order
Oct 12, 2026
Merged

MickLesk merged 1 commit into
mainfrom
fix/forge-prerelease-version-order

Conversation

@MickLesk

Copy link
Copy Markdown
Member

✍️ Description

The version key kept only the digit runs of a tag, so 1.0.0-beta38 became 1.0.0.38 and ranked above 1.0.0-rc.1 (1.0.0.1). Containers on beta38 reported "No update available" although upstream marks rc.1 as latest (Pelican Panel).

The key now pads the numeric core to one width and ranks the pre-release label (dev < alpha < beta < pre < rc < final) before the remaining digits. _forge_highest_version uses the same jq key as the release sort.

🔗 Related Issue

Fixes community-scripts/ProxmoxVE#17887

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected (Proxmox VE and/or Incus, as applicable).
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.
  • API.txt regenerated – If a function signature or behavior changed, API.txt was updated to match.

🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any code in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Code was written without AI assistance.
  • AI was used – The output has been reviewed and corrected, and I take responsibility for it matching this repo's conventions.

🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing behavior in a way that may require updates in every downstream script.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, docs/, CONTRIBUTING.md, or other docs.

The version key kept only the digit runs of a tag, so 1.0.0-beta38 became
1.0.0.38 and ranked above 1.0.0-rc.1 (1.0.0.1). Containers on beta38 reported
"No update available" although upstream marks rc.1 as latest (Pelican Panel).

The key now pads the numeric core to one width and ranks the pre-release
label (dev < alpha < beta < pre < rc < final) before the remaining digits.
_forge_highest_version uses the same jq key as the release sort.
@github-actions

Copy link
Copy Markdown
Contributor

Try this branch

The engine and the scripts resolve independently, so a production script can
be run against the engine from this PR by setting one variable:

COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/community-scripts/core/fix/forge-prerelease-version-order \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"

Swap ct/debian.sh for whatever exercises the change.

Run a script from a fork as well
curl -fsSL https://raw.githubusercontent.com/community-scripts/core/fix/forge-prerelease-version-order/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/DevScripts/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/fix/forge-prerelease-version-order

Note that run.sh is reached through a pipe, so the script it starts inherits
an exhausted stdin. Whiptail is fine — it opens /dev/tty — but a plain read
would see EOF. The single-variable form above does not have that problem.

Useful flags while testing

dev_mode=net logs every engine fetch with status and duration, which is the
quickest way to confirm the branch is really being used. dev_mode=keep stops a
failed build from deleting the container along with the evidence.

@MickLesk
MickLesk merged commit be8ed40 into main Oct 12, 2026
5 checks passed
@MickLesk MickLesk mentioned this pull request Oct 13, 2026
5 of 11 tasks
MickLesk added a commit that referenced this pull request Oct 13, 2026
label is a jq keyword; 1.7 tolerates it as a binding name, the 1.6 in
Bookworm, Jammy and EL9 does not, and every release lookup there failed
closed as 'no update available' since #132. The test now runs the key
and its three callers under jq 1.6 as well.
@github-actions
github-actions Bot deleted the fix/forge-prerelease-version-order branch October 13, 2026 09:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pelican Panel can not update

1 participant