Vuoi scaricare i file? Li trovi nella sezione Assets sotto l'ultima Release qui!
La versione ePUB del Il Libro Open Source e gli script necessari a generarla.
Questo repository contiene il generatore e le risorse per creare la versione ePUB del Libro Open Source. Il processo converte i file Markdown del libro in un file ePUB pronto per la distribuzione, con supporto anche per MOBI e PDF.
Caratteristiche principali:
- 🚀 Conversione Markdown → ePUB con syntax highlighting
- 📱 Supporto multi-formato (ePUB, MOBI, PDF)
- 🎨 Styling CSS personalizzato con supporto dark mode
- 🖼️ Gestione automatica di immagini e copertina
- 📑 Gerarchia capitoli con frontmatter YAML
- ⚡ Elaborazione parallela per performance ottimali
- 🔄 CI/CD automatizzato con GitHub Actions
- Go >= 1.24
- Git
- Calibre (opzionale, per conversione MOBI/PDF)
- Task (opzionale, per usare i task predefiniti)
# macOS
brew install --cask calibre
# Ubuntu/Debian
sudo apt-get install calibre
# Windows
# Scarica da https://calibre-ebook.com/download-
Clona questo repository:
git clone https://github.com/Il-Libro-Open-Source/book-epub.git cd book-epub -
Clona il repository del libro:
git clone https://github.com/Il-Libro-Open-Source/book.git /tmp/book
-
Costruisci il generatore:
go build -o ./bin/epub-generator ./src
-
Genera il file ePUB:
UUID=f9298b0f-bea1-4cb6-a601-2a35027bd44e ./bin/epub-generator
Il file
il-manuale-del-buon-dev.epubverrà generato nella directory corrente.
Se hai Task installato, puoi usare i comandi predefiniti:
# Mostra tutti i task disponibili
task --list
# Genera solo ePUB
task generate
# Genera ePUB, MOBI e PDF
task generate-all
# Esegue test e validazioni
task test
# Task di sviluppo (clean, format, lint, test)
task devIl generatore può essere configurato tramite variabili d'ambiente:
| Variabile | Descrizione | Default | Obbligatoria |
|---|---|---|---|
INPUT |
Percorso alla cartella del libro | /tmp/book |
No |
OUTPUT |
Percorso di output del file ePUB | ./il-manuale-del-buon-dev.epub |
No |
COVER |
Percorso dell'immagine di copertina | ./assets/cover.jpg |
No |
STYLE |
Percorso del file CSS | ./assets/style.css |
No |
UUID |
UUID del libro (formato URN) | - | Sì |
# Configurazione personalizzata
INPUT=/path/to/book \
OUTPUT=./output/my-book.epub \
COVER=./custom-cover.jpg \
STYLE=./custom-style.css \
UUID=f9298b0f-bea1-4cb6-a601-2a35027bd44e \
./bin/epub-generator# Su macOS/Linux
uuidgen | tr '[:upper:]' '[:lower:]'
# Con Go
go run -c "package main; import \"github.com/google/uuid\"; func main() { println(uuid.New().String()) }"# Richiede Calibre
ebook-convert il-manuale-del-buon-dev.epub il-manuale-del-buon-dev.mobi --verbose# Richiede Calibre
ebook-convert il-manuale-del-buon-dev.epub il-manuale-del-buon-dev.pdf \
--verbose \
--cover assets/cover-pdf.jpg \
--remove-first-image \
--pdf-default-font-size 14 \
--pdf-page-numbers# Genera tutti i formati automaticamente
task generate-all# Test unitari
go test -v ./src/...
# Test con coverage
go test -v -race -coverprofile=coverage.out -covermode=atomic ./src/...
go tool cover -html=coverage.out -o coverage.html# Formattazione
go fmt ./src/...
# Linting
golangci-lint run ./src/...
# Con Task
task lint
task fmt# Richiede epubcheck
epubcheck il-manuale-del-buon-dev.epub
# macOS
brew install epubcheck
# Ubuntu/Debian
sudo apt-get install epubcheckIl progetto è strutturato in moduli separati per migliorare manutenibilità e testabilità:
src/
├── main.go # Entry point dell'applicazione
├── config.go # Gestione configurazione e validazione
├── chapter.go # Elaborazione capitoli e conversione Markdown
├── markdown.go # Configurazione convertitore Goldmark
├── epub.go # Costruzione e salvataggio ePUB
└── *_test.go # Test unitari
- Caricamento configurazione - Validazione variabili d'ambiente
- Lettura capitoli - Scansione directory Markdown (parallela)
- Conversione Markdown → HTML - Con syntax highlighting
- Elaborazione immagini - Validazione e inclusione (parallela)
- Creazione ePUB - Assemblaggio con metadati e stili
- Salvataggio - Output file ePUB
Assicurati che il file di copertina esista nel percorso specificato:
ls -la assets/cover.jpgSe il file manca, puoi specificare un percorso alternativo:
COVER=/path/to/your/cover.jpg ./bin/epub-generatorL'UUID è obbligatorio. Generane uno nuovo:
UUID=$(uuidgen | tr '[:upper:]' '[:lower:]') ./bin/epub-generatorCalibre non è installato. Segui le istruzioni di installazione.
Controlla i log per vedere quali immagini non sono state trovate:
LOG_LEVEL=DEBUG ./bin/epub-generator 2>&1 | grep "Immagine non trovata"Usa epubcheck per identificare problemi:
epubcheck il-manuale-del-buon-dev.epubContributi sono benvenuti! Per contribuire:
- Fork il repository
- Crea un branch per la tua feature (
git checkout -b feature/amazing-feature) - Commit le modifiche (
git commit -m 'Add amazing feature') - Push al branch (
git push origin feature/amazing-feature) - Apri una Pull Request
- Assicurati che i test passino:
go test ./src/... - Formatta il codice:
go fmt ./src/... - Aggiungi test per nuove funzionalità
- Documenta le funzioni pubbliche con GoDoc
- Segui le convenzioni Go standard
Apri una issue con:
- Descrizione del problema
- Passi per riprodurre
- Output del comando con
LOG_LEVEL=DEBUG - Versione di Go e sistema operativo
Il workflow build-and-release.yml automatizza:
- ✅ Build del generatore
- ✅ Esecuzione dei test
- ✅ Generazione ePUB, MOBI e PDF
- ✅ Upload artifacts per ogni build
- ✅ Release automatica per i tag
Puoi triggerare manualmente il workflow con opzione di release:
- Vai su Actions → Build EPUB and Release
- Clicca Run workflow
- Seleziona
do_release: trueper creare una release - (Opzionale) Specifica un
release_tag
- Il Libro Open Source
- go-epub - Libreria per generazione ePUB
- goldmark - Parser Markdown
- Calibre - Toolkit per e-book
- ePUB Specification
- Task - Task runner
Questo progetto è distribuito sotto licenza MIT. Vedi il file LICENSE per maggiori dettagli.
- Community - Il Libro Open Source
Fatto con ❤️ dalla community di Il Libro Open Source