Skip to content

dongzhenye/hello-cli

Repository files navigation

hello-cli

Go Report Card Release License

Say hello to your terminal — and it finally answers.

What is hello-cli?

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).

Why bother?

  • On a fresh Windows box, the hello command 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.

Features

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, --name flag, self-update, Scoop & Chocolatey taps…

Quick Start

Any platform (curl installer)

curl -fsSL https://raw.githubusercontent.com/dongzhenye/hello-cli/main/scripts/install-latest.sh | sh
hello --version

Windows 10 / 11

winget install hello-cli
hello
hello --version

macOS / Linux

go install github.com/dongzhenye/hello-cli@latest
hello
hello --version

Or grab a pre-built zip from the Releases page.

hello --version prints v0.0.0-dev for development builds and the git tag (for example v0.1.1) for release builds.

Why Go?

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.

Build from Source

macOS

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}"

Windows

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

Documentation

Contributing

Bug reports, feature requests and PRs are welcome!
See CONTRIBUTING.md for details.

Versioning

  • 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:
    1. Ensure main is 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").
    2. Run goreleaser release --clean (already passes -X main.version=v{{ .Version }}).
    3. Update winget manifests with the numeric version (0.1.1).
  • Refer to docs/versioning-policy.md for full guidance.

License

hello is released under the MIT License.
See the full text in LICENSE.

About

hello-cli ships the `hello` command—a tiny "Hello, world!" check for your terminal.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •