0xMax42 maxp

clipcode (0.5.0.dev202507211311)

Published 2025-07-21 15:11:50 +02:00 by maxp

Installation

pip install --index-url  --extra-index-url https://pypi.org/ clipcode

About this package

Kompaktes CLI-Tool zur Extraktion von Quellcodedateien in Markdown-kompatibler Struktur für GPT-Prompts. Exportiert rekursiv Codeblöcke ins Clipboard – ideal für ChatGPT-Analysen.

📋 clipcode

clipcode ist ein minimalistisches, aber leistungsfähiges CLI-Tool zur Extraktion von Quellcodedateien in ein Markdown-kompatibles Format – ideal zur Verwendung in Prompts für ChatGPT & Co. Es exportiert rekursiv Dateien mit bestimmten Endungen und kopiert sie als sauber strukturierte Markdown-Datei direkt in die Zwischenablage.


🚀 Features

  • 🔎 Rekursive Suche nach Quelldateien anhand beliebiger Endungen
  • 📃 Ausgabe als Markdown mit Syntax-Highlighting (z. B. python, bash)
  • 🔹 Kopiert die formatierte Ausgabe direkt ins Clipboard (Wayland via wl-copy)
  • Ideal zur Prompt-Erzeugung für LLMs wie ChatGPT / GPT-4o
  • 🚀 Extrem schnell, keine Abhängigkeiten außerhalb der Standardbibliothek
  • 🚫 Intelligente .gitignore-Unterstützung – respektiert automatisch .gitignore-Dateien
  • 🔒 Automatischer .git-Ausschluss – .git-Ordner werden immer ausgeschlossen
  • ⚙️ Konfigurierbar – gitignore-Respekt kann deaktiviert werden
  • 🚫 Explizite Ausschlussmuster – mit -i/--ignore können Dateien oder Globs gezielt ausgeschlossen werden

⚙️ Installation

📦 Installation (empfohlen)

poetry install
poetry run clipcode ./src py ts sh

oder global installieren (dev)

poetry build
pip install dist/clipcode-*.whl
clipcode ./src py ts sh

🔀 Verwendung

clipcode [optionen] <pfad> [<endung> ...]

Grundlegende Beispiele

# Alle Python- und TypeScript-Dateien
clipcode ./src py ts

# Alle Dateien (respektiert .gitignore)
clipcode ./src

# Spezifische Dateitypen mit .gitignore-Respekt (Standard)
clipcode ./src py ts sh toml

.gitignore-Optionen

# Standard: .gitignore wird respektiert
clipcode ./src py ts

# Explizit .gitignore respektieren
clipcode --respect-gitignore ./src py ts

# .gitignore ignorieren (nur .git-Ordner wird ausgeschlossen)
clipcode --no-respect-gitignore ./src py ts

Explizite Ignore-Patterns

Mit -i / --ignore lassen sich Pfad- oder Glob-Muster angeben, die vor allen anderen Regeln ausgeschlossen werden.
Das Flag kann mehrfach verwendet oder als kommaseparierte Liste übergeben werden.

# Zwei Pattern in einer Kommasequenz
clipcode -i "*.log,*.tmp" ./src

# Mehrfaches Flag
clipcode -i secret.py -i "tests/*" ./src

# In Kombination mit ausgeschaltetem .gitignore-Respekt
clipcode -i "*.log" --no-respect-gitignore ./src

Ergebnis (im Clipboard):

## Projektdateien

### ./src/main.py
```python
# ... dein Code hier ...
```

🚫 .gitignore-Unterstützung

clipcode respektiert standardmäßig .gitignore-Dateien und schließt entsprechende Dateien automatisch aus der Ausgabe aus.

Unterstützte .gitignore-Features:

  • Wildcards: *.log, *.tmp, test_*
  • Verzeichnis-Patterns: __pycache__/, node_modules/
  • Pfad-spezifische Patterns: src/*.tmp, /build
  • Negation: !important.log (Ausnahmen definieren)
  • Kommentare: # Dies ist ein Kommentar
  • Hierarchische .gitignore: Unterstützt mehrere .gitignore-Dateien in der Verzeichnisstruktur

Immer ausgeschlossen:

  • 🔒 .git/ Ordner (unabhängig von Optionen)
  • 📄 .gitignore Dateien selbst

Beispiel .gitignore:

# Logs
*.log
debug.txt

# Compiled files
__pycache__/
*.pyc
*.pyo

# Build directories
/build
/dist

# IDE files
.vscode/
.idea/

# Ausnahme für wichtige Dateien
!important.log

📁 Projektstruktur

clipcode/
├── cli.py              # Argument-Parsing, Einstiegspunkt
├── exporter.py         # Clipboard-Export und Markdown-Formatierung
├── file_utils.py       # Dateisuche und Inhaltseinlesung
├── gitignore_utils.py  # .gitignore-Parser und Filterlogik
├── syntax.py           # Zuordnung von Dateiendungen zu Markdown-Sprachen
├── __main__.py         # Poetry CLI Entry Point
└── __init__.py

💡 Hinweise

  • Clipboard-Funktion basiert aktuell auf wl-copy (Wayland)
  • Weitere Clipboard-Backends sind leicht integrierbar
  • Vollständige .gitignore-Unterstützung implementiert
  • Alle Tests bestehen erfolgreich (22 umfassende Tests)

✍️ Lizenz

MIT License — siehe LICENSE

Requirements

Requires Python: >=3.11
Details
PyPI
2025-07-21 15:11:50 +02:00
2
Max P.
16 KiB
Assets (2)
Versions (7) View all
0.5.0 2025-07-21
0.4.0 2025-07-04
0.3.0 2025-06-20
0.2.0 2025-06-14