Automatyczne generowanie ticketów GitHub na podstawie plików markdown z błędami poleceń
Project description
mdiss - Markdown Issues
Automatyczne generowanie ticketów GitHub na podstawie plików markdown z błędami poleceń.
🚀 Szybki start
# Instalacja
pip install mdiss
# Konfiguracja tokenu GitHub
mdiss setup
# Analiza pliku markdown
mdiss analyze paste.txt
# Tworzenie issues na GitHub (dry run)
mdiss create paste.txt owner repo --dry-run
# Tworzenie rzeczywistych issues
mdiss create paste.txt owner repo
📋 Funkcje
- ✅ Automatyczne parsowanie - Wyodrębnia nieudane polecenia z plików markdown
- ✅ Inteligentna analiza - Określa priorytet i kategorię błędów
- ✅ Sugestie rozwiązań - Automatyczne sugerowanie sposobów naprawy
- ✅ GitHub Integration - Bezpośrednie tworzenie issues z odpowiednimi labelami
- ✅ Bezpieczny token management - Automatyczne konfigurowanie uprawnień
- ✅ Dry run mode - Testowanie bez tworzenia rzeczywistych issues
- ✅ Export danych - JSON, CSV, tabele
- ✅ Rich CLI - Kolorowy interfejs wiersza poleceń
🛠️ Instalacja
Z PyPI
pip install mdiss
Z kodu źródłowego
git clone https://github.com/wronai/mdiss.git
cd mdiss
poetry install
Rozwój i wkład
Konfiguracja środowiska deweloperskiego
# Sklonuj repozytorium
git clone https://github.com/wronai/mdiss.git
cd mdiss
# Zainstaluj zależności deweloperskie
make dev
# Zainstaluj pre-commit hooks
make install-hooks
Dostępne polecenia Makefile
# Instalacja i konfiguracja
make install # Zainstaluj podstawowe zależności
make dev # Zainstaluj zależności deweloperskie
make install-hooks # Zainstaluj git hooks
# Testowanie
make test # Uruchom testy
make test-verbose # Testy z pełnym wyjściem
make test-coverage # Testy z pokryciem kodu
make test-unit # Tylko testy jednostkowe
make test-integration # Tylko testy integracyjne
# Jakość kodu
make lint # Sprawdź jakość kodu
make format # Sformatuj kod automatycznie
make security # Sprawdź bezpieczeństwo
make qa # Uruchom pełne sprawdzenie jakości (lint + test)
# Dokumentacja
make docs # Zbuduj dokumentację
make docs-serve # Uruchom lokalny serwer z dokumentacją
make docs-deploy # Wdróż dokumentację na GitHub Pages
# Budowanie i publikacja
make build # Zbuduj pakiet
make publish # Opublikuj na PyPI
make clean # Wyczyść pliki budowania
# Wersjonowanie
make version-patch # Zwiększ wersję patch (0.0.X)
make version-minor # Zwiększ wersję minor (0.X.0)
make version-major # Zwiększ wersję major (X.0.0)
# Demo
make demo # Uruchom demo z przykładowym plikiem
make demo-create # Demo tworzenia issues (dry run)
Workflow deweloperski
-
Zainstaluj zależności:
make dev make install-hooks
-
Pracuj nad nową funkcjonalnością w osobnym branchu:
git checkout -b feature/nazwa-funkcjonalnosci
-
Przed commitem uruchom testy i sprawdzenia jakości:
make qaLub ręcznie:
make format make lint make test
-
Zatwierdź zmiany i wyślij do repozytorium
-
Stwórz Pull Request na GitHubie
-
Po zaakceptowaniu PR, zaktualizuj wersję i opublikuj zmiany:
make version-patch # lub version-minor/version-major make publish make docs-deploy
🚀 Szybki start
Analiza pliku markdown
# Analiza pliku
mdiss analyze TODO.md
# Zapis wyników do pliku JSON
mdiss analyze TODO.md --output wyniki.json
# Analiza z dodatkowymi informacjami debugowymi
mdiss analyze TODO.md --verbose
Tworzenie zgłoszeń na GitHubie
# Podgląd zgłoszeń (bez tworzenia)
mdiss create TODO.md wronai mdiss --dry-run
# Rzeczywiste utworzenie zgłoszeń
mdiss create plik.md wronai mdiss
# Z określonymi przypisaniami i etykietami
mdiss create plik.md wronai mdiss --assignees "user1,user2" --labels "bug,high"
Zarządzanie konfiguracją
# Konfiguracja tokenu GitHub
mdiss setup
# Wyświetl aktualną konfigurację
mdiss config show
📖 Szczegółowe użycie
1. Konfiguracja
# Interaktywna konfiguracja tokenu GitHub
mdiss setup
Automatycznie otworzy stronę GitHub z formularzem generowania tokenu z odpowiednimi uprawnieniami:
repo- dostęp do repozytoriówwrite:issues- tworzenie issues
2. Analiza pliku markdown
# Podstawowa analiza
mdiss analyze paste.txt
# Eksport do różnych formatów
mdiss export paste.txt --format json --output data.json
mdiss export paste.txt --format csv --output data.csv
3. Tworzenie issues
# Dry run (tylko podgląd)
mdiss create TODO.md wronai mdiss --dry-run
# Tworzenie z tokenem z pliku
mdiss create paste.txt wronai mdiss --token-file .mdiss_token
# Z dodatkowymi opcjami
mdiss create paste.txt wronai mdiss \
--assignees "user1,user2" \
--milestone 5 \
--skip-existing
4. Zarządzanie issues
# Lista issues w repozytorium
mdiss list-issues wronai mdiss
# Z filtrami
mdiss list-issues owner repo --state closed --labels "bug,high"
📊 Analiza błędów
mdiss automatycznie kategoryzuje błędy i określa priorytety:
Kategorie błędów
| Kategoria | Opis | Przykład |
|---|---|---|
dependencies |
Problemy z zależnościami | Poetry lock file issues |
missing-files |
Brakujące pliki | package.json not found |
permissions |
Problemy z uprawnieniami | Cannot install --user in venv |
timeout |
Przekroczenie czasu | Command timed out |
syntax |
Błędy składni | YAML parsing errors |
configuration |
Problemy konfiguracji | Invalid config files |
Priorytety
- CRITICAL - Segmentation faults, krytyczne błędy systemu
- HIGH - Timeouts, problemy z dependencies
- MEDIUM - Standardowe błędy, brakujące pliki
- LOW - Drobne problemy
Sugestie rozwiązań
Dla każdej kategorii mdiss generuje konkretne kroki naprawy:
**Rozwiązanie problemu z zależnościami:**
1. **Aktualizacja lock file:**
```bash
poetry lock --no-update
poetry install
- Jeśli nadal problemy:
poetry lock poetry install --sync
## 🔧 Format pliku markdown
mdiss rozpoznaje pliki w formacie:
```markdown
## X. Nazwa polecenia
**Command:** `polecenie`
**Source:** ścieżka/do/pliku
**Type:** typ_polecenia
**Status:** ❌ Failed
**Return Code:** kod_błędu
**Execution Time:** czas_w_sekundach
**Output:**
standardowy output
**Error Output:**
komunikaty błędów
**Metadata:**
- **klucz1:** wartość1
- **klucz2:** wartość2
---
🏷️ Przykład wygenerowanego issue
Tytuł: Fix failed command: Make target: install
Treść:
## Problem Description
Command `make install` is failing consistently.
**Priority**: HIGH
**Category**: dependencies
**Confidence**: 90%
### Error Analysis
🔍 **Root Cause**: Poetry lock file is out of sync with pyproject.toml...
### Suggested Solution
1. Run `poetry lock` to regenerate the lock file
2. Run `poetry install` to install dependencies
3. Commit the updated poetry.lock file
### Labels
- bug
- high
- dependencies
- make_target
🛡️ Bezpieczeństwo
- Token GitHub przechowywany lokalnie w pliku
.mdiss_token - Automatyczna walidacja uprawnień
- Opcja dry-run do bezpiecznego testowania
- Nie przesyła wrażliwych danych
🔄 Workflow CI/CD
mdiss doskonale integruje się z CI/CD:
# .github/workflows/issues.yml
name: Auto Issues
on:
workflow_run:
workflows: ["CI"]
types: [completed]
jobs:
create-issues:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install mdiss
run: pip install mdiss
- name: Create issues from failures
run: |
mdiss create failure_report.md ${{ github.repository_owner }} ${{ github.event.repository.name }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
🤝 Programowy API
from mdiss import MarkdownParser, GitHubClient, ErrorAnalyzer
from mdiss.models import GitHubConfig
# Parsowanie pliku
parser = MarkdownParser()
commands = parser.parse_file("paste.txt")
# Analiza błędów
analyzer = ErrorAnalyzer()
for cmd in commands:
analysis = analyzer.analyze(cmd)
print(f"Priority: {analysis.priority.value}")
print(f"Category: {analysis.category.value}")
# Tworzenie issues
config = GitHubConfig(token="...", owner="...", repo="...")
client = GitHubClient(config)
for cmd in commands:
issue = client.create_issue_from_command(cmd)
print(f"Created: {issue['html_url']}")
📁 Struktura projektu
mdiss/
├── mdiss/ # Kod źródłowy
│ ├── __init__.py
│ ├── cli.py # CLI interface
│ ├── parser.py # Markdown parser
│ ├── github_client.py # GitHub API
│ ├── analyzer.py # Error analyzer
│ └── models.py # Data models
├── tests/ # Testy
├── docs/ # Dokumentacja
└── examples/ # Przykłady
🧪 Development
# Klonowanie
git clone https://github.com/wronai/mdiss.git
cd mdiss
# Instalacja zależności deweloperskich
make dev
# Uruchomienie testów
make test
# Sprawdzenie jakości kodu
make lint
# Formatowanie kodu
make format
# Pełny CI pipeline
make ci
Dostępne komendy make
make help # Pokaż wszystkie dostępne komendy
make test # Uruchom testy
make test-coverage # Testy z pokryciem kodu
make lint # Sprawdź jakość kodu
make format # Sformatuj kod
make build # Zbuduj pakiet
make docs # Zbuduj dokumentację
make demo # Uruchom demo
📄 Licencja
Apache-2.0 License - zobacz LICENSE
🤝 Współpraca
- Fork projektu
- Stwórz branch dla swojej funkcji (
git checkout -b feature/amazing-feature) - Commit zmian (
git commit -m 'Add amazing feature') - Push do brancha (
git push origin feature/amazing-feature) - Otwórz Pull Request
Guidelines
- Dodaj testy dla nowych funkcji
- Zachowaj 100% pokrycie kodu testami
- Używaj konwencjonalnych commitów
- Aktualizuj dokumentację
📈 Statystyki
- 🐍 Python 3.8+
- 📦 Zbudowany z Poetry
- 🧪 100% pokrycie testami
- 📖 Kompletna dokumentacja
- 🚀 Rich CLI interface
🔗 Linki
Stworzone przez WRONAI Team ❤️
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 mdiss-2.0.1.tar.gz.
File metadata
- Download URL: mdiss-2.0.1.tar.gz
- Upload date:
- Size: 60.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a95ecae8874005e59b338d5e6352ae1b623728fa5a971ad7523b935cf82832a
|
|
| MD5 |
5e8f176ec4eb83140f9fc23024b46c79
|
|
| BLAKE2b-256 |
eb897113b59b64e31918a83b220a066ed2d1ca79a1562673232dcff7aca6f402
|
File details
Details for the file mdiss-2.0.1-py3-none-any.whl.
File metadata
- Download URL: mdiss-2.0.1-py3-none-any.whl
- Upload date:
- Size: 62.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f530c147373310bde7dc939465ceb479afa2d52b5c179abe4ddd5c35e307b97
|
|
| MD5 |
b146a13e602844f19f781a6fcd7f9956
|
|
| BLAKE2b-256 |
7bab3956741cab6ad3ff0aa2b0a6252554ef7c568daae903250123e85f158295
|