Say hello to your terminal — and it finally answers.
hello-cli ships the tiniest conversation-starter for your command line: the hello
command. Type hello, hit ⏎, and the shell greets you back with the classic
Hello, world!
Nothing to configure, nothing to install at runtime—just a single, static, ≈ 1 MiB executable that proves your terminal is alive (and friendly).
- On a fresh Windows box, the
hellocommand used to be a dead end—now it talks. - The quickest smoke-test for a new shell, VM, container or CI runner.
- Living "Hello, world!" demo that shows Go + GoReleaser + winget in action.
- It makes you smile. Sometimes that's enough.
| Feature | Description |
|---|---|
| ⚡ Instant install | winget install hello-cli (Windows 10/11) — done in seconds. |
| 🪶 Feather-weight | ~1 MiB static binary; no DLLs, no .NET, no Python. |
| 🔌 Zero dependencies | Built with CGO_ENABLED=0; runs on vanilla PowerShell / CMD. |
| 🌐 Cross-platform build | Linux / macOS binaries generated from the same repo. |
| 🛠 Great sample project | Shows how to ship a CLI with GitHub Actions + GoReleaser + winget. |
| ❤️ Open Source | MIT licence—hack away or reuse in your own demos. |
Road-map: emoji / colour output,
--nameflag, self-update, Scoop & Chocolatey taps…
curl -fsSL https://raw.githubusercontent.com/dongzhenye/hello-cli/main/scripts/install-latest.sh | sh
hello --versionwinget install hello-cli
hello
hello --versiongo install github.com/dongzhenye/hello-cli@latest
hello
hello --versionOr grab a pre-built zip from the Releases page.
hello --versionprintsv0.0.0-devfor development builds and the git tag (for examplev0.1.1) for release builds.
| Aspect | Go (this project) | Rust | .NET AOT | C / C++ | Node (pkg) |
|---|---|---|---|---|---|
| Single binary | ✔ | toolchain tweaks | 5 – 6 MiB | manual | 60 MiB |
| Cross-compile | one env var | complex | limited | per-SDK | gaps |
| Build system | GoReleaser | cargo-release | MSBuild | none | manual |
| Learning curve | 15 min | steep | medium | memory mgmt | easiest |
| AV false alarms | low | medium | lowest | medium | medium |
Go hits the sweet spot of tiny output, trivial cross-compile and fast iteration, with an ecosystem tailor-made for CLI shipping.
brew install go git goreleaser gh upx
git clone https://github.com/dongzhenye/hello-cli
cd hello-cli
go build -o hello
./hello
./hello --version
# Bake the release version (when building from a tagged checkout)
HELLO_VERSION=$(git describe --tags --match "v[0-9]*" --exact-match 2>/dev/null || echo v0.0.0-dev) \
go build -o hello -ldflags "-X main.version=${HELLO_VERSION}"winget install -e --id Git.Git
winget install -e --id GoReleaser.GoReleaser
git clone https://github.com/dongzhenye/hello-cli
cd hello-cli
go build -o hello.exe
.\hello.exe
.\hello.exe --version- docs/developer-onboarding.md: 环境配置、任务拆解与 MVP 指南。
- docs/release-workflow.md: GoReleaser 自动化、winget 提交流程与路线图。
- docs/versioning-policy.md: 版本号管理与标签规范。
- docs/winget-publishing-guide.md: 详细的 winget 发布操作手册。
- docs/repository-guidelines.md: 编码、测试与提交准则。
- docs/distribution-strategy.md: 多渠道发布策略与规划。
Bug reports, feature requests and PRs are welcome!
See CONTRIBUTING.md for details.
- Releases follow SemVer with a leading
v(e.g.v0.1.1). - Development binaries report
v0.0.0-dev(plus commit metadata when available). - Release workflow:
- Ensure
mainis clean, fetch the latest tags, and create an annotated tag for the next SemVer patch (e.g.git fetch --tags && git tag -a v0.1.1 -m "v0.1.1"). - Run
goreleaser release --clean(already passes-X main.version=v{{ .Version }}). - Update winget manifests with the numeric version (
0.1.1).
- Ensure
- Refer to docs/versioning-policy.md for full guidance.
hello is released under the MIT License.
See the full text in LICENSE.