Skip to content

core: load an app's own settings from its .vars file - #216

Merged
michelroegl-brunner merged 4 commits into
mainfrom
feat/app-vars-files
Nov 9, 2026
Merged

michelroegl-brunner merged 4 commits into
mainfrom
feat/app-vars-files

Conversation

@MickLesk

@MickLesk MickLesk commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

✍️ Description

One VAR_WHITELIST instead of three copies. VAR_RESERVED keys never come from a file. Updating app defaults keeps the app's settings and writes the file 0600. CI checks that every var_* the engine reads is classified.

🔗 Related Issue

Fixes #

✅ 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.

🛠️ 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.

🤖 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.

One VAR_WHITELIST instead of three copies. VAR_RESERVED keys never come from a file. Updating app defaults keeps the app's settings and writes the file 0600. CI checks that every var_* the engine reads is classified.
@github-actions

github-actions Bot commented Nov 6, 2026

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/feat/app-vars-files \
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/feat/app-vars-files/tools/run.sh |
  bash -s -- https://raw.githubusercontent.com/YOU/DevScripts/your-branch ct/debian.sh \
             https://raw.githubusercontent.com/community-scripts/core/feat/app-vars-files

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.

# Conflicts:
#	.github/workflows/verify-split-files.yml
#	ui/defaults.func
var_external_installer is a safety confirmation, so it joins VAR_RESERVED
like the other per-run overrides; var_docker_lxcfs is a harmless app
setting. The new test covers what default.vars and an app's own file
each accept.
Saving app defaults took every exported var_* outside the two lists as
the app's own setting, so a one-off var_appversion pin, var_full_verbose
or var_unattended became permanent for the app. VAR_PER_RUN still loads
from an app file written by hand, but a save no longer captures it.
@MickLesk
MickLesk marked this pull request as ready for review November 6, 2026 16:56
@MickLesk MickLesk changed the title Load an app's own settings from its .vars file core: load an app's own settings from its .vars file Nov 6, 2026
@michelroegl-brunner
michelroegl-brunner merged commit cebab15 into main Nov 9, 2026
4 checks passed
@github-actions
github-actions Bot deleted the feat/app-vars-files branch November 9, 2026 09:27
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.

2 participants