This repository was archived by the owner on Mar 5, 2026. It is now read-only.
feat: upgrade install.sh with full-featured bash installer#10
Merged
andersonleal merged 6 commits intomainfrom Feb 12, 2026
Merged
feat: upgrade install.sh with full-featured bash installer#10andersonleal merged 6 commits intomainfrom
andersonleal merged 6 commits intomainfrom
Conversation
- Add rich progressive Slack notifications to release.yml with cross-job message updates via artifact-based slack_ts passing - Add custom version bump option to create-tag.yml with format validation (X.Y.Z or X.Y.Z-suffix) - Add publish-homebrew.yml workflow for Homebrew formula publishing to iii-hq/homebrew-tap (non-prerelease only) - Integrate Slack progress updates into validate-release.yml using shared artifacts from the release workflow - Add install.sh for installing iii-console from GitHub binary assets with OS/arch detection and optional version pinning
- Fix Homebrew formula heredoc indentation with sed strip (Critical)
- Add Linux SHA256 checksums to Homebrew formula (Critical)
- Fix expression injection in trigger-homebrew JS via env binding (High)
- Quote FORMULA_PATH and use env bindings for inputs.version (High)
- Add permissions: {} to notify-builds-complete job (Medium)
- Add continue-on-error to Slack update steps (Medium)
- Increase artifact retention to 3 days (Medium)
- Allow dotted pre-release in custom version regex (Medium)
- Use jq contains() instead of test() in install.sh (Low)
- Remove redundant pre-release check in publish-homebrew (Low)
Rewrite install script to match opencode installer capabilities: - CLI argument parsing (-h/--help, -v/--version, -b/--binary, --no-modify-path) - Advanced platform detection (Rosetta 2, musl/glibc, AVX2/baseline CPU) - GitHub Releases API with jq/grep fallback for JSON parsing - GITHUB_TOKEN authentication support for private repos - curl trace-based download progress bar (unbuffered_sed + fd 4) - Automatic PATH modification for bash/zsh/fish/ash/sh shells - GitHub Actions $GITHUB_PATH integration - ASCII art branding with post-install instructions - POSIX sh compatible output (printf instead of echo -e) - Default install directory: ~/.local/bin
- Update color definitions in install.sh to remove unnecessary comments, enhancing clarity and readability.
- Adjusted the output formatting in the post-install branding section to improve visual alignment.
ytallo
approved these changes
Feb 12, 2026
- Added validation for REPO format to ensure it follows owner/repo structure. - Implemented checks for BIN_NAME to restrict invalid characters. - Enhanced INSTALL_DIR validation to prevent path injection attacks. - Introduced version format validation for requested_version to ensure compliance with semver standards. - Improved download and installation process with checksum verification and symlink rejection to enhance security. - Updated extraction process to prevent path traversal vulnerabilities.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Upgrades
install.shfrom a minimal POSIX shell script to a full-featured bash installer, matching the capabilities of the opencode installer pattern. The upgrade improves user experience, adds robust argument parsing, and provides better feedback during installation.Key changes:
-h/--help,-v/--version,-b/--binary,--no-modify-pathunbuffered_sedand fd 4$GITHUB_PATH-b ./target/release/iii-consolefor development workflows~/.local/bin(configurable viaINSTALL_DIR)Related Issues
Type of Change
Checklist
Additional Context
Migration notes:
#!/usr/bin/env shto#!/usr/bin/env bashfor extended featuresset -euo pipefailfor stricter error handlingBIN_DIR/PREFIXreplaced byINSTALL_DIR(default$HOME/.local/bin)curl -fsSL ... | bashone-liners remain compatible; new options are additiveCompatibility:
REPO,BIN_NAME,TARGET,VERSION,GITHUB_TOKEN) continue to work-v 0.1.3orVERSION=0.1.3