A Python CLI hello world template
Project description
silicon
A Python CLI hello world template with best practices for packaging, testing, and CI/CD.
✨ Features
- Modern CLI: Built with Typer for a clean command-line interface
- Well-Structured: Source layout with
src/directory and proper packaging - Comprehensive Testing: pytest with coverage requirements and parallel execution
- CI/CD Ready: GitHub Actions workflows for testing, versioning, and releases
- Multi-Platform: PyPI, Homebrew, and pre-built binary distribution
💖 Support
Love this tool? Your support means the world! ❤️
| Currency | Address | QR |
|---|---|---|
| ₿ BTC | bc1qwn7ea6s8wqx66hl5rr2supk4kv7qtcxnlqcqfk |
|
| Ξ ETH | 0x7cdB1861AC1B4385521a6e16dF198e7bc43fDE5f |
|
| ɱ XMR | 463fMSWyDrk9DVQ8QCiAir8TQd4h3aRAiDGA8CKKjknGaip7cnHGmS7bQmxSiS2aYtE9tT31Zf7dSbK1wyVARNgA9pkzVxX |
|
| ◈ BNB | 0x7cdB1861AC1B4385521a6e16dF198e7bc43fDE5f |
📦 Installation
Homebrew (macOS/Linux)
brew tap alkalescent/tap
brew install silicon
PyPI (Recommended)
uv pip install silicon
After installation, use either the command directly or as a Python module:
# Direct command
silicon --help
# As Python module (if direct command not in PATH)
uv run python -m silicon --help
From Source
Clone the repository and install in development mode:
git clone https://github.com/alkalescent/silicon.git
cd silicon
make install DEV=1 # Install with dev dependencies
Pre-built Binaries
Download from GitHub Releases:
| Variant | Description | Startup | Format |
|---|---|---|---|
| Portable | Single file, no installation needed | ~10 sec | silicon-{os}-portable |
| Fast | Optimized for speed | ~1 sec | silicon-{os}-fast.tar.gz |
Note: In the filenames and commands, replace
{os}with your operating system (e.g.,linux,macos). The examples below uselinux. For Windows, you may need to use a tool like 7-Zip to extract.tar.gzarchives.
For Portable, download and run directly:
chmod +x silicon-linux-portable
./silicon-linux-portable --help
For Fast, extract the archive and run from within:
tar -xzf silicon-linux-fast.tar.gz
./cli.dist/silicon --help
Build from Source
Build your own binaries using Nuitka:
git clone https://github.com/alkalescent/silicon.git
cd silicon
# Build portable (single file, slower startup)
MODE=onefile make build
# Build fast (directory, faster startup)
MODE=standalone make build
🚀 Usage
The CLI provides simple hello and goodbye commands.
Hello Command
Say hello to someone:
silicon hello # Hello, World!
silicon hello --name Developer # Hello, Developer!
silicon hello -n "Your Name" # Hello, Your Name!
Goodbye Command
Say goodbye to someone:
silicon goodbye # Goodbye, World!
silicon goodbye --name Developer # Goodbye, Developer!
silicon goodbye -n "Your Name" # Goodbye, Your Name!
Version
Check the installed version:
silicon version # v1.0.0
silicon --version # v1.0.0
silicon -v # v1.0.0
🧪 Testing
Run the test suite:
make test
Run with coverage reporting (requires 90% coverage):
make cov
Run smoke tests:
make smoke
🏗️ Architecture
The CLI consists of the following modules:
-
tools.py: Core utility classesGreeterclass: Simple greeting functionality
-
cli.py: Command-line interface using Typerhello: Say hello to someonegoodbye: Say goodbye to someoneversion: Display version
-
test_tools.py/test_cli.py: Comprehensive test suites
📖 Using as a Template
- Fork or clone this repository
- Replace
siliconwith your project name in:pyproject.toml(name, scripts, URLs)src/silicon/directory name- Imports in source files
- README.md
- Add your own functionality in
tools.pyandcli.py - Update tests accordingly
📚 Dependencies
typer: Modern CLI framework
📄 License
MIT License - see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file silicon-1.1.4.tar.gz.
File metadata
- Download URL: silicon-1.1.4.tar.gz
- Upload date:
- Size: 41.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b831543f678db8bbd9c1e80f9805007e706327dfb850afde6cda06304c5ad458
|
|
| MD5 |
403d3654bbe869bda6c4d04febb00f56
|
|
| BLAKE2b-256 |
b7f317da658653185183967a55e7dd78e62605cc665d6b41ab4df847096b8063
|
Provenance
The following attestation bundles were made for silicon-1.1.4.tar.gz:
Publisher:
release.yml on alkalescent/silicon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
silicon-1.1.4.tar.gz -
Subject digest:
b831543f678db8bbd9c1e80f9805007e706327dfb850afde6cda06304c5ad458 - Sigstore transparency entry: 861483018
- Sigstore integration time:
-
Permalink:
alkalescent/silicon@1e0e4aa51f0210780eab39caf497397f64fce581 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/alkalescent
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1e0e4aa51f0210780eab39caf497397f64fce581 -
Trigger Event:
push
-
Statement type:
File details
Details for the file silicon-1.1.4-py3-none-any.whl.
File metadata
- Download URL: silicon-1.1.4-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
768fbcd074ec5f595081586e11fa0b2421c18b08d3c42da1fa587125d654a94c
|
|
| MD5 |
9b4a6ab513596cdaf6fc1cb851765d45
|
|
| BLAKE2b-256 |
d4b49828296cff0c0d3cb1f134e4586e2e0a31fc9ce8e5211c4411c37c224487
|
Provenance
The following attestation bundles were made for silicon-1.1.4-py3-none-any.whl:
Publisher:
release.yml on alkalescent/silicon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
silicon-1.1.4-py3-none-any.whl -
Subject digest:
768fbcd074ec5f595081586e11fa0b2421c18b08d3c42da1fa587125d654a94c - Sigstore transparency entry: 861483073
- Sigstore integration time:
-
Permalink:
alkalescent/silicon@1e0e4aa51f0210780eab39caf497397f64fce581 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/alkalescent
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1e0e4aa51f0210780eab39caf497397f64fce581 -
Trigger Event:
push
-
Statement type: