Skip to main content

A magical CLI tool that automatically generates and manages .gitignore files

Project description

โœจ gign

A magical CLI tool that automatically generates and manages .gitignore files for your projects. Simply run it in any directory and watch as it intelligently detects your project's technologies and creates the perfect .gitignore file.

Author: Sherin Joseph Roy
Email: sherin.joseph2217@gmail.com
Repository: https://github.com/Sherin-SEF-AI/gitignore-gen
PyPI: https://pypi.org/project/gign/

๐Ÿš€ Features

  • ๐Ÿ” Smart Detection: Automatically detects 50+ technologies including Python, Node.js, Java, Go, Rust, Swift, Unity, VS Code, JetBrains IDEs, and many more
  • ๐ŸŒ API Integration: Fetches templates from gitignore.io with intelligent caching
  • ๐Ÿ”„ Smart Merging: Combines multiple templates and removes duplicates
  • ๐Ÿ›ก๏ธ Security Patterns: Optional security-focused patterns for API keys, certificates, and secrets
  • ๐Ÿ“ Monorepo Support: Generate per-directory .gitignore files for complex projects
  • ๐Ÿ’พ Backup & Safety: Automatic backups and dry-run mode for safe experimentation
  • ๐ŸŽจ Beautiful UI: Rich terminal output with progress bars, colors, and emojis
  • โšก Performance: Async operations for fast scanning and template fetching
  • ๐Ÿ”ง Advanced Analysis: Comprehensive project analysis with dependency scanning, security checks, and performance insights
  • ๐Ÿ“Š Interactive Recommendations: Get actionable suggestions based on your project structure
  • ๐Ÿ”„ Real-time Monitoring: Watch mode for automatic updates when files change
  • ๐Ÿ“ฆ Custom Templates: Create, manage, and share your own templates
  • ๐Ÿ› ๏ธ Auto-fix: Automatically remove tracked files that should be ignored

๐Ÿ“ฆ Installation

From PyPI (Recommended)

pip install gign

From Source

git clone https://github.com/Sherin-SEF-AI/gitignore-gen.git
cd gitignore-gen
pip install -e .

Development Installation

git clone https://github.com/Sherin-SEF-AI/gitignore-gen.git
cd gitignore-gen
pip install -e ".[dev]"

๐ŸŽฏ Quick Start

Basic Usage

Simply run gign in your project directory:

cd your-project
gign

The tool will:

  1. ๐Ÿ” Scan your project for technologies
  2. ๐Ÿš€ Fetch appropriate templates
  3. ๐Ÿ”„ Merge and optimize the content
  4. ๐Ÿ’พ Save a perfect .gitignore file

Interactive Mode

For more control, use interactive mode:

gign --interactive

This will let you:

  • Choose which templates to include
  • Add custom templates
  • Preview changes before applying

๐Ÿ“š Complete Command Reference

Main Commands

gign - Main Generation

Generate a .gitignore file for the current directory.

# Basic generation
gign

# With options
gign --security --backup --dry-run

# Interactive mode
gign --interactive

# Minimal mode for cleaner output
gign --minimal

# Strict mode for precise patterns
gign --strict

Options:

  • --verbose, -v: Enable verbose output
  • --quiet, -q: Suppress all output except errors
  • --dry-run: Preview changes without applying them
  • --interactive, -i: Enable interactive mode
  • --backup: Create backup of existing .gitignore
  • --security: Add common security patterns
  • --monorepo: Generate per-directory .gitignore files
  • --auto-fix: Automatically remove files that should be ignored from git
  • --watch: Watch for file changes and auto-update .gitignore
  • --export PATH: Export current .gitignore configuration
  • --import PATH: Import .gitignore configuration
  • --custom-templates PATH: Path to custom templates directory
  • --force: Force overwrite existing .gitignore
  • --minimal: Generate minimal .gitignore with only essential patterns
  • --strict: Use strict pattern matching for better accuracy

gign scan - Technology Detection

Scan directory and detect technologies in use.

# Scan current directory
gign scan

# Scan specific path
gign scan --path /path/to/project

gign version - Version Information

Show version information.

gign version

Template Management

gign list-templates - List Templates

List available templates (built-in and custom).

# List all templates
gign list-templates

# Search for specific templates
gign list-templates --template python

# Show only custom templates
gign list-templates --custom-only

gign templates - Show Template Content

Show content of a specific template.

# Show Python template
gign templates --template python

# Save template to file
gign templates --template node --output node.gitignore

gign create-template - Create Custom Template

Create a custom template.

# Create from content
gign create-template --template myproject --content "*.log\n*.tmp"

# Create from file
gign create-template --template myproject --file template.txt

gign update-template - Update Template

Update an existing custom template.

# Update with new content
gign update-template --template myproject --content "*.log\n*.tmp\n*.cache"

# Update from file
gign update-template --template myproject --file new-template.txt

gign delete-template - Delete Template

Delete a custom template.

# Delete with confirmation
gign delete-template --template myproject

# Force delete without confirmation
gign delete-template --template myproject --force

gign search-templates - Search Templates

Search for templates by name or content.

# Search by name
gign search-templates --query python

# Search only custom templates
gign search-templates --query myproject --custom-only

Project Analysis

gign analyze - Project Analysis

Analyze project structure and generate detailed report.

# Analyze current directory
gign analyze

# Analyze specific path
gign analyze --path /path/to/project

# Save report to file
gign analyze --output analysis_report.json

gign scan-dependencies - Dependency Scanning

Scan project dependencies and generate detailed report.

# Scan current directory
gign scan-dependencies

# Save as JSON
gign scan-dependencies --output deps.json

# Save as YAML
gign scan-dependencies --output deps.yaml --format yaml

# Save as CSV
gign scan-dependencies --output deps.csv --format csv

gign performance-insights - Performance Analysis

Generate performance insights and optimization recommendations.

# Analyze current directory
gign performance-insights

# Custom threshold (default: 10MB)
gign performance-insights --threshold 50

# Save report
gign performance-insights --output perf_report.json

gign security-scan - Security Analysis

Perform comprehensive security scan and generate report.

# Full security scan
gign security-scan

# Specific severity level
gign security-scan --severity high

# Save report
gign security-scan --output security_report.json

Advanced Features

gign monorepo-setup - Monorepo Configuration

Set up comprehensive .gitignore structure for monorepos.

# Basic setup
gign monorepo-setup

# With shared patterns
gign monorepo-setup --shared

# Generate per-service files
gign monorepo-setup --per-service

# Specific strategy
gign monorepo-setup --strategy nested

Strategies:

  • flat: Simple flat structure
  • nested: Nested directory structure
  • hybrid: Mixed approach (default)

gign optimize - .gitignore Optimization

Optimize existing .gitignore file for better performance.

# Preview optimizations
gign optimize --dry-run

# Apply optimizations
gign optimize

# Aggressive optimization
gign optimize --aggressive

gign auto-fix - Auto-fix Tracked Files

Automatically remove files that should be ignored from git.

# Preview what would be fixed
gign auto-fix --dry-run

# Apply fixes
gign auto-fix

gign clean - Clean Ignored Files

Clean up files that should be ignored from git.

# Preview cleanup
gign clean --dry-run

# Apply cleanup
gign clean

gign watch - File Watching

Watch for file changes and auto-update .gitignore.

# Watch current directory
gign watch

# Custom interval (default: 5 seconds)
gign watch --interval 10

# Watch specific path
gign watch --path /path/to/project

Configuration Management

gign export-config - Export Configuration

Export .gitignore and detected technologies to a config file.

# Export to default location
gign export-config

# Export to specific file
gign export-config --output my-config.json

gign import-config - Import Configuration

Import a .gitignore-gen config and regenerate .gitignore.

# Import from file
gign import-config --config my-config.json

# Import to specific location
gign import-config --config my-config.json --output .gitignore

๐ŸŽจ Supported Technologies

Programming Languages

  • Python (Django, Flask, FastAPI, Jupyter)
  • Node.js (React, Vue, Angular, Express)
  • Java (Spring, Maven, Gradle, Android)
  • Go (Go modules, Go workspaces)
  • Rust (Cargo, Rust projects)
  • Swift (iOS, macOS development)
  • C# (.NET, Unity, Xamarin)
  • PHP (Laravel, WordPress, Composer)
  • Ruby (Rails, Bundler, RVM)
  • Dart (Flutter, Dart projects)
  • Kotlin (Android, JVM)
  • Scala (SBT, Scala projects)

Frameworks & Libraries

  • Frontend: React, Vue, Angular, Svelte, Next.js, Nuxt.js
  • Backend: Django, Flask, FastAPI, Express, Spring, Laravel
  • Mobile: Flutter, React Native, Ionic
  • Desktop: Electron, Tauri, PyQt, Tkinter

Build Tools & Package Managers

  • JavaScript: npm, yarn, pnpm, webpack, vite, rollup
  • Python: pip, poetry, pipenv, conda
  • Java: Maven, Gradle, Ant
  • Go: go mod, go work
  • Rust: Cargo, Cargo workspaces

IDEs & Editors

  • VS Code (.vscode, settings, extensions)
  • JetBrains (IntelliJ IDEA, PyCharm, WebStorm, Android Studio)
  • Eclipse (.metadata, .project, .classpath)
  • Vim/Neovim (.vim, .nvim, swap files)
  • Emacs (.emacs, .emacs.d)

Operating Systems

  • macOS (.DS_Store, Spotlight, Time Machine)
  • Windows (Thumbs.db, desktop.ini, Recycle Bin)
  • Linux (core dumps, temporary files)

Cloud & DevOps

  • Docker (Dockerfile, docker-compose, .dockerignore)
  • Kubernetes (k8s manifests, helm charts)
  • Terraform (.tfstate, .tfvars, modules)
  • Ansible (playbooks, inventory, roles)
  • Jenkins (workspace, builds, logs)

Version Control

  • Git (.git, .gitignore, .gitattributes)
  • GitHub (GitHub Actions, .github)
  • GitLab (GitLab CI, .gitlab-ci.yml)

Testing & Quality

  • Jest (coverage, snapshots)
  • Cypress (videos, screenshots)
  • Playwright (test-results, playwright-report)
  • Pytest (.pytest_cache, coverage)
  • Coverage (htmlcov, .coverage)

๐Ÿ”ง Configuration

Create a configuration file at ~/.gign.toml:

[api]
base_url = "https://www.tgitignore.io/api"
timeout = 30

[cache]
enabled = true
ttl = 86400  # 24 hours

[security]
auto_add = false
patterns = [
    "*.key",
    "*.pem",
    "*.env"
]

[detection]
scan_depth = 3
ignore_dirs = [".git", "node_modules", "venv"]

๐Ÿงช Examples

Python Project

$ gign
๐Ÿ” Scanning project...
๐Ÿš€ Generating .gitignore...
๐Ÿ’พ Saving .gitignore...

โœ… .gitignore generated successfully!

Detected technologies:
โ€ข python
โ€ข vscode

React + Node.js Project

$ gign --interactive
๐Ÿ” Scanning project...
๐ŸŽฏ Template Selection:
Include python template? [y/N]: n
Include node template? [y/N]: y
Include react template? [y/N]: y
Include vscode template? [y/N]: y

๐Ÿ“‹ Generated .gitignore Preview:
# Generated by gign
# Technologies detected: node, react, vscode

node_modules/
.env
dist/
build/
.vscode/
*.log
...

Apply this .gitignore? [y/N]: y
โœ… .gitignore generated successfully!

Monorepo with Security

$ gign --monorepo --security --backup
๐Ÿ” Scanning project...
๐Ÿš€ Generating .gitignore...
๐Ÿ’พ Saving .gitignore...

โœ… .gitignore generated successfully!
๐Ÿ“ Created per-directory .gitignore files
๐Ÿ”’ Added security patterns
๐Ÿ’พ Backup created: .gitignore.backup

Advanced Analysis

$ gign analyze --output report.json
๐Ÿ” Analyzing project: /path/to/project

๐Ÿ“Š Project Analysis Results

๐Ÿ”ง Detected Technologies:
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Technology โ”ƒ Confidence โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ python     โ”‚ 100.0%     โ”‚
โ”‚ node       โ”‚ 30.0%      โ”‚
โ”‚ docker     โ”‚ 10.0%      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ฆ Dependencies:
  โ€ข python: pyproject.toml

๐Ÿ—๏ธ Project Structure:
  โ€ข Type: desktop
  โ€ข Depth: 8 levels

๐Ÿ“ˆ File Statistics:
  โ€ข Total files: 1250
  โ€ข Total directories: 45

๐Ÿ”’ Security Analysis:
  โ€ข โš ๏ธ Sensitive files found: 3
  โ€ข Recommendations:
    - Ensure .env files are in .gitignore

โšก Performance Analysis:
  โ€ข โš ๏ธ Deep directory nesting detected
  โ€ข Recommendations:
    - Consider flattening directory structure

๐Ÿ’ก Recommendations:
  1. Consider adding __pycache__/ and *.pyc to .gitignore
  2. Ensure node_modules/ is in .gitignore
  3. Ensure .env files are in .gitignore

โœ… Report saved to: report.json

Custom Template Management

# Create a custom template
$ gign create-template --template myproject --content "*.log\n*.tmp\n.env.local"

# List templates (custom template will show with โœ“)
$ gign list-templates
๐Ÿ“š Available Templates:
Custom (1): myproject
Built-in (32): python, node, java, go, rust, php, ruby, csharp, swift, kotlin, scala, dart, flutter, react, vue, angular, svelte, docker, kubernetes, terraform, ansible, jenkins, github, gitlab, vscode, intellij, eclipse, vim, emacs, macos, windows, linux
  โœ“ myproject
  โ— python
  โ— node
  ...

# Search for templates
$ gign search-templates --query myproject
๐Ÿ” Search Results for "myproject":
  โœ“ myproject (custom template)

Performance Optimization

$ gign optimize --dry-run
โšก Optimizing .gitignore in: /path/to/project
Original .gitignore: 150 lines

๐Ÿ” Optimization Analysis:
  โ€ข Duplicate patterns: 5
    Line 145: .coverage
    Line 146: htmlcov/
    Line 147: .pytest_cache/
  โ€ข Redundant patterns: 2
    Line 140: .cache/
  โ€ข Inefficient patterns: 1
    Line 25: *.egg-info/

Potential optimization: Remove 8 lines
Dry run mode - no changes applied

Security Scanning

$ gign security-scan --severity high
๐Ÿ”’ Performing security scan in: /path/to/project
Severity level: high

๐Ÿ”’ Security Analysis Results:
  โ€ข โš ๏ธ Sensitive files found: 5
    - /path/to/project/.env
    - /path/to/project/config/private.key
    - /path/to/project/secrets/database.yml
    - /path/to/project/certificates/server.crt
    - /path/to/project/.aws/credentials

๐Ÿ’ก Security Recommendations:
  1. Ensure .env files are in .gitignore
  2. Add *.key and *.pem to .gitignore
  3. Consider using environment variables for secrets
  4. Review certificate files for sensitive data

โœ… Security report saved to: security_report.json

๐Ÿ” How It Works

  1. Directory Scanning: Recursively scans your project directory
  2. Pattern Matching: Uses intelligent patterns to detect technologies
  3. Template Fetching: Retrieves templates from gitignore.io API
  4. Smart Merging: Combines templates and removes duplicates
  5. Content Generation: Creates optimized .gitignore content
  6. File Writing: Saves the result with optional backup

๐Ÿ› Troubleshooting

No Technologies Detected

If no technologies are detected, try:

# Use interactive mode to manually select templates
gign --interactive

# Or specify a template directly
gign templates --template python

API Connection Issues

The tool includes fallback templates for common technologies. If the API is unavailable, it will use bundled templates.

Permission Errors

Ensure you have read permissions for the directory you're scanning:

# Check permissions
ls -la

# Run with appropriate permissions
sudo gign  # if needed

Template Fetch Errors

If templates fail to fetch, the tool will use built-in fallbacks:

# Check network connectivity
ping www.tgitignore.io

# Use offline mode (built-in templates)
gign --offline

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Setup

git clone https://github.com/Sherin-SEF-AI/gitignore-gen.git
cd gitignore-gen
pip install -e ".[dev]"
pre-commit install

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=gitignore_gen

# Run specific test file
pytest tests/test_detector.py

Code Quality

# Format code
black gitignore_gen tests

# Sort imports
isort gitignore_gen tests

# Lint code
flake8 gitignore_gen tests

# Type checking
mypy gitignore_gen

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ“ž Support

๐Ÿ”„ Changelog

See CHANGELOG.md for a detailed history of changes.


By Sherin Joseph Roy

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

gign-1.1.0.tar.gz (47.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gign-1.1.0-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file gign-1.1.0.tar.gz.

File metadata

  • Download URL: gign-1.1.0.tar.gz
  • Upload date:
  • Size: 47.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.12.1.2 readme-renderer/44.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.7 tqdm/4.67.1 importlib-metadata/8.7.0 keyring/25.6.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.3

File hashes

Hashes for gign-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7f347349a9ec7bb8ea9cabd0138693c8a573838ac6eb89a6ca855f650ace5aba
MD5 66263da2b31c8a25d2593c7de608eeb9
BLAKE2b-256 ed3f4d65c003c4fe5b2b33675440a44bf42f338ae4e17481fb8250af44cb296c

See more details on using hashes here.

File details

Details for the file gign-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: gign-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.12.1.2 readme-renderer/44.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.0.7 tqdm/4.67.1 importlib-metadata/8.7.0 keyring/25.6.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.12.3

File hashes

Hashes for gign-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 524d092dc728724380c9aee82bb52e4c9312c2b7e6a0c8fb99e54ac776e1e58f
MD5 3717b907430c9930053ac0aacce2f5a9
BLAKE2b-256 0500fed625ffbe4f81b04f24d0fd483a2b173b21fc10b29548c3fe3f12906037

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page