Repository navigation
feat(installer): report command instead of editing shell files - #1
Merged
Merged
Conversation
… files The engine no longer detects the user's shell or appends to any startup file. After installing it reports the installed path, whether the canonical command resolves in the current environment and to what, any other copy on PATH, and, when the command is not reachable, the optional system-wide symlink the user can create themselves. - add command_name (defaults to project_name) as the public command; the AppImage/macOS entry in install_dir is named after it - derive the macOS executable from Info.plist; macos_executable_name becomes an optional override - report the executables a .deb/.rpm actually placed in /usr/bin, and say so when the package does not provide the command - accumulate every mget-owned install in the uninstall manifest, prune entries whose target is gone, remove all of them on --uninstall, tolerate already-removed entries, and list what still answers to the command afterwards, including a dangling /usr/local/bin symlink - compare command copies by file identity so merged-usr aliases are one copy - refuse to run under sudo before any network access - --dry-run never prompts and no longer claims a package installs into install_dir - warn when no fusermount is available for an AppImage - add_to_path is accepted and ignored - force LF for shell scripts on every checkout
tests/run.sh drives the real engine against the modrex release and a pinned Refract release with a throwaway HOME per case: no shell startup file changes, availability and shadowing reports, accumulated installs, uninstall leftovers, dangling symlink reporting, manifests from earlier releases, a package without the canonical command, sudo refusal and non-interactive dry runs. It runs on Ubuntu and in a Fedora container on every push. tests/check-consumer.sh verifies a consumer release ships the canonical executable in every Linux and macOS artifact; ci.yml runs it for modrex and Refract, and consumer-check.yml exposes it as a reusable workflow.
…changes Describe what the engine reports instead of shell configuration, the command_name field, the deprecated add_to_path and macos_executable_name fields, accumulated uninstall semantics, the sudo refusal, the generic CFG_* forwarding contract for bootstraps, the new test jobs and the consumer packaging check. Add docs/planned-breaking-changes.md for cleanup deferred to the next major.
Merge earlier manifest entries only when the previous record has the same project and install_dir; otherwise the new install starts a fresh record, as before. Label a copy as recorded only when the manifest lists its path or the package that owns it (dpkg -S / rpm -qf), read CFBundleExecutable with defaults(1) where plutil has no raw output, tolerate a failing AppImage extraction in the consumer check, pin the reusable workflow to its own commit, and send GITHUB_TOKEN to the GitHub API when present.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The engine no longer detects the user's shell or edits startup files. After an install it reports the installed path, whether the canonical command resolves in the current environment, any other copy on
PATH, and the optionalsudo ln -s <path> /usr/local/bin/<command>when the command is not reachable.command_name(defaultproject_name) names the AppImage/macOS entry and every lookupInfo.plist;macos_executable_nameis now an override/usr/bin; a package without the command is reported, not rejected (CI enforces packaging viatests/check-consumer.sh/consumer-check.yml)--uninstall, and lists leftovers including a dangling/usr/local/binsymlinksudorefused before network;--dry-runnever prompts;add_to_pathaccepted and ignoreddocs/planned-breaking-changes.mdNo
CFG_*removed, no flag changed,-yremoves nothing new, old manifests still uninstall.Tests:
tests/run.sh(12 cases) on Ubuntu and a Fedora container on every push; passed locally on Debian 13 and Fedora 43. macOS is covered by the existingmacos-integrationjob.refract-packagingstayscontinue-on-erroruntil Refract ships the renamed executable.