Purpose
Install common DevOps CLI tooling using the host package manager with repeatable, scriptable behavior.
Location
setup/local/install-cli-tools.sh
Preconditions
- Required tools:
bash, selected package manager (brew,apt-get,dnf, oryum), optionalsudo - Required permissions: package-install privileges on workstation
- Required environment variables: none
Arguments
| Flag | Required | Default | Description |
|---|---|---|---|
--tools CSV |
No | built-in tool set | Comma-separated tool list |
--tool NAME |
No | none | Add one tool (repeatable) |
--manager NAME |
No | auto |
auto\|brew\|apt\|dnf\|yum |
--yes |
No | false |
Non-interactive package install |
--dry-run |
No | false |
Print commands only |
--update-cache |
No | false |
Refresh package metadata before install |
Scenarios
- Happy path: missing tools are installed, existing tools are skipped.
- Common operational path: bootstrap a fresh developer workstation.
- Failure path: unsupported manager/tool mapping or package install failure.
- Recovery/rollback path: rerun with explicit manager/tool list and fixed package sources.
Usage
setup/local/install-cli-tools.sh --update-cache --yes
setup/local/install-cli-tools.sh --manager brew --tools git,jq,shellcheck,shfmt
setup/local/install-cli-tools.sh --tool kubectl --tool terraform --dry-run
Behavior
- Main execution flow: detect manager, optionally update cache, install requested/missing tools.
- Idempotency notes: idempotent for already-installed tools.
- Side effects: system package installation and updates.
Output
- Standard output format: timestamped installation logs on stderr.
- Exit codes:
0all requested tools available/installed1one or more tools failed/unsupported2invalid arguments
Failure Modes
- Common errors and likely causes:
- no supported package manager found
- package unavailable in configured repositories
- insufficient privileges for system install
- Recovery and rollback steps:
- verify repository configuration and credentials
- rerun with explicit
--manager - install failed tools manually and rerun verification
Security Notes
- Secret handling: no secret input expected.
- Least-privilege requirements: use elevated privileges only for package operations.
- Audit/logging expectations: installation logs should be retained during bootstrap.
Testing
- Unit tests:
- manager/tool mapping logic
- argument parsing
- Integration tests:
- dry-run/install behavior on supported OS images
- Manual verification:
- run then confirm each tool in
PATH