Interactive CLI tool for building .gitignore files
Project description
gno
Interactive CLI tool for building .gitignore files
gno (pronounced "noh") helps you create .gitignore files interactively with a beautiful split-pane TUI interface. It fetches templates from GitHub's official gitignore repository and caches them locally for fast access.
Features
- Interactive TUI - Split-pane interface with live preview
- 230+ Templates - All templates from GitHub's gitignore repository
- Smart Search - Filter templates by name or description
- Smart Merging - Append to existing files without duplicates
- Offline Support - Templates cached locally after first fetch
- Multiple Output Modes - Interactive, generate, preview
Installation
# Using uv (recommended)
uv tool install gno
# Or run directly without installing
uvx gno
# Using pipx
pipx install gno
# Using pip
pip install gno
Usage
Interactive Mode
Launch the TUI by running gno without arguments:
gno
Controls:
Up/Downorj/k- Navigate templatesSpace- Toggle selection/- Search templatess- Save and exit?- Show helpq- Quit
Command Line
# Generate .gitignore from templates
gno generate python node
# Preview without saving
gno generate python --preview
# Save to custom path
gno generate rust -o backend/.gitignore
# Append to existing file (smart merge)
gno generate go --append
# List all templates
gno list
# Search templates
gno list python
# Show template content
gno show python
# Update template cache
gno update
Examples
Create a Python project .gitignore
gno generate python
Create a full-stack project .gitignore
gno generate python node
Add templates to existing .gitignore
gno generate terraform --append
Template Sources
Templates are fetched from:
- github/gitignore - Root directory (language templates)
- github/gitignore/Global - Global templates (editors, OS, etc.)
- github/gitignore/community - Community templates (community-contributed templates)
Cache
Templates are cached in ~/.gno/templates.json for offline access and faster startup. Run gno update to refresh the cache.
Development
# Clone the repository
git clone https://github.com/OseSem/gno
cd gno
# Install dependencies
uv sync
# Run the CLI
uv run gno
# Run tests
uv run pytest
# Run linting
uv run ruff check .
uv run black --check .
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
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 gno-0.1.1.tar.gz.
File metadata
- Download URL: gno-0.1.1.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08fc03eeb071e0f8ab037878695ebcfb7d7bbad1227ac1d675792dc00b24f8e8
|
|
| MD5 |
d2f2c52ade19b4feda57388cd2d735a7
|
|
| BLAKE2b-256 |
902743f457c5ef720e832455071ec8f50d034f94986cfe9fcd103fc55104c038
|
Provenance
The following attestation bundles were made for gno-0.1.1.tar.gz:
Publisher:
release.yml on OseSem/gno
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gno-0.1.1.tar.gz -
Subject digest:
08fc03eeb071e0f8ab037878695ebcfb7d7bbad1227ac1d675792dc00b24f8e8 - Sigstore transparency entry: 919780429
- Sigstore integration time:
-
Permalink:
OseSem/gno@44f95bde502ce5e75e04e37c4f34be73f7074a39 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/OseSem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44f95bde502ce5e75e04e37c4f34be73f7074a39 -
Trigger Event:
push
-
Statement type:
File details
Details for the file gno-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gno-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.7 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 |
d58bd7c95f48cf5a2450feca4eaf9f9a8fa620362dcefa9a885004732d24f6f8
|
|
| MD5 |
da2cf351f13f6a5677c22325eef30ea8
|
|
| BLAKE2b-256 |
3909b5e5d4b1a6b63fc5f97bb78a8ac2009b9e5f2f5dcb8074281f4c150733ea
|
Provenance
The following attestation bundles were made for gno-0.1.1-py3-none-any.whl:
Publisher:
release.yml on OseSem/gno
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gno-0.1.1-py3-none-any.whl -
Subject digest:
d58bd7c95f48cf5a2450feca4eaf9f9a8fa620362dcefa9a885004732d24f6f8 - Sigstore transparency entry: 919780432
- Sigstore integration time:
-
Permalink:
OseSem/gno@44f95bde502ce5e75e04e37c4f34be73f7074a39 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/OseSem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@44f95bde502ce5e75e04e37c4f34be73f7074a39 -
Trigger Event:
push
-
Statement type: