Skip to content

Add constrained install commands (9/24)#23186

Draft
MikeMcQuaid wants to merge 5 commits into
install-step-08-formula-permissionsfrom
install-step-09-commands
Draft

Add constrained install commands (9/24)#23186
MikeMcQuaid wants to merge 5 commits into
install-step-08-formula-permissionsfrom
install-step-09-commands

Conversation

@MikeMcQuaid

Copy link
Copy Markdown
Member

Many remaining hooks invoke one packaged or system executable and do not
need a Ruby block or shell command string.

  • serialise literal arguments, environments, streams and directories
  • resolve path bases, templates and guards through shared contexts
  • make privilege, output and required-success policies explicit
  • replace the one-use GIO action with the general command step

AI disclosure: using OpenAI Codex 5.6 Sol max with local review and
testing.

The runtime DSL already supports scoped guards, template identifiers and
`move_contents`, but the validator rejects them. This blocks incremental
tap migrations which use those existing APIs.

- validate nested platform and path guard blocks recursively
- allow formula and cask identifiers in serialised step strings
- accept `move_contents` in formula and cask step blocks
- continue rejecting arbitrary Ruby inside nested scopes
Many cask flight hooks only write a fixed launcher and link it into the
configured binary directory.

- generate executable wrapper content as a first-class cask artifact
- reuse binary linking, collision and uninstall behaviour
- serialise the stanza so cask JSON preserves its definition
Some cask flight hooks only materialise a fixed helper before another
artifact or install step consumes it.

- write literal executable content as a serialisable cask artifact
- restrict generated paths to the staged cask and reject traversal
- order generated scripts before dependent installer artifacts
Three core formulae adjust modes on persistent paths after installation
but do not need ownership changes or arbitrary Ruby.

- admit the existing `set_permissions` step in formula blocks
- keep `set_ownership` limited to cask blocks
- document and audit the formula capability explicitly
Many remaining hooks invoke one packaged or system executable and do not
need a Ruby block or shell command string.

- serialise literal arguments, environments, streams and directories
- resolve path bases, templates and guards through shared contexts
- make privilege, output and required-success policies explicit
- replace the one-use GIO action with the general command step
@MikeMcQuaid
MikeMcQuaid force-pushed the install-step-08-formula-permissions branch from 6d02e59 to a689849 Compare July 21, 2026 07:14
@MikeMcQuaid
MikeMcQuaid force-pushed the install-step-09-commands branch from 6a4f7bd to 33670fb Compare July 21, 2026 07:14
@MikeMcQuaid
MikeMcQuaid force-pushed the install-step-08-formula-permissions branch from a689849 to 9ad0321 Compare July 21, 2026 12:02
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.

1 participant