11# Scrollcast 🦀📄
22
3- A modern Rust CLI tool that converts Git repositories into beautifully formatted documents (PDF, EPUB, HTML, Markdown) with professional syntax highlighting and theming.
3+ A modern Rust CLI tool that converts Git repositories into beautifully formatted documents (PDF, EPUB, HTML, Markdown) with professional syntax highlighting and theming. Pure Rust implementation with no external dependencies.
44
55## ✨ Features
66
77- 🚀 ** Fast & Efficient** : Built with Rust for maximum performance
8- - 🎨 ** Professional Output ** : Powered by Pandoc for publication-quality documents
9- - 📚 ** Multiple Formats** : PDF, EPUB, HTML, and Markdown output
10- - 🌈 ** Syntax Highlighting** : Support for 300 + programming languages via Skylighting
11- - 🔧 ** Solidity Support ** : Automatic download and integration of Solidity syntax definitions
8+ - 🦀 ** Pure Rust ** : No external dependencies - everything built with Rust libraries
9+ - 📚 ** Multiple Formats** : PDF, EPUB (experimental) , HTML, and Markdown output
10+ - 🌈 ** Syntax Highlighting** : Support for 100 + programming languages via Syntect
11+ - 🔧 ** Smart Language Detection ** : Automatic syntax detection and highlighting
1212- 📁 ** Smart Git Integration** : Respects .gitignore by default with override options
1313- 🎯 ** Binary File Detection** : Intelligent handling of different file types
1414- 📋 ** Table of Contents** : Automatic TOC generation for easy navigation
@@ -19,18 +19,10 @@ A modern Rust CLI tool that converts Git repositories into beautifully formatted
1919
2020### Prerequisites
2121
22- You need to have [ Pandoc ] ( https://pandoc.org/installing.html ) installed on your system:
22+ ** No external dependencies required! ** Scrollcast is a pure Rust implementation that works out of the box.
2323
24- ``` bash
25- # Ubuntu/Debian
26- sudo apt-get install pandoc
27-
28- # macOS
29- brew install pandoc
30-
31- # Windows
32- # Download from https://pandoc.org/installing.html
33- ```
24+ - Rust 1.70+ (for building from source)
25+ - Git (for processing git repositories)
3426
3527### Installation
3628
@@ -50,15 +42,18 @@ cargo build --release
5042# Convert to PDF (default)
5143scrollcast /path/to/repo -o output.pdf
5244
53- # Convert to EPUB
54- scrollcast /path/to/repo -o output.epub -f epub
45+ # Convert to EPUB (experimental)
46+ scrollcast /path/to/repo -o output.epub -f epub --include-experimental
5547
5648# Convert to HTML
5749scrollcast /path/to/repo -o output.html -f html
5850
5951# Convert to Markdown
6052scrollcast /path/to/repo -o output.md -f markdown
6153
54+ # Test project generation
55+ scrollcast --test-project
56+
6257# Use different theme
6358scrollcast /path/to/repo -o output.pdf -t zenburn
6459
@@ -89,6 +84,8 @@ OPTIONS:
8984 --no-gitignore Ignore .gitignore files and process all files
9085 --no-toc Don' t include table of contents
9186 --ignore <DIR> Ignore specific directories (can be used multiple times)
87+ --test-project Generate test project documentation in testfiles/output_test
88+ --include-experimental Include experimental features like EPUB
9289 -y, --yes Skip confirmation prompts
9390 --list-themes List available syntax highlighting themes
9491 --list-languages List supported programming languages
@@ -99,13 +96,14 @@ OPTIONS:
9996## 🎨 Output Formats
10097
10198### PDF
102- - **Engine**: XeLaTeX for superior Unicode support
103- - **Features**: Vector graphics, professional typography, bookmarks
99+ - **Engine**: printpdf for pure Rust implementation
100+ - **Features**: Vector graphics, professional typography
104101- **Best for**: Printing, sharing, archival
105102
106- ### EPUB
107- - **Features**: Reflowable text, TOC navigation, metadata
103+ ### EPUB (Experimental)
104+ - **Features**: Reflowable text, TOC navigation, inline CSS styling
108105- **Best for**: E-readers, mobile devices, accessibility
106+ - **Note**: Include with `--include-experimental` flag
109107
110108### HTML
111109- **Features**: Standalone HTML with embedded CSS, responsive design
@@ -248,21 +246,27 @@ cargo install --path .
248246```
249247src/
250248├── main.rs # CLI interface and orchestration
251- ├── config.rs # Configuration management (legacy)
249+ ├── config.rs # Configuration management
252250├── file_processor.rs # File discovery and filtering
253251├── markdown_generator.rs # Markdown generation from file tree
254- ├── pandoc.rs # Pandoc integration and format conversion
255- └── theme.rs # Theme definitions (legacy)
252+ ├── theme.rs # Theme definitions
253+ └── renderer/
254+ ├── mod.rs # Document renderer trait and core logic
255+ ├── html.rs # HTML renderer with syntax highlighting
256+ ├── epub.rs # EPUB renderer with inline CSS
257+ └── pdf.rs # PDF renderer (printpdf-based)
256258```
257259
258260### Dependencies
259261
260- - **Pandoc**: Document conversion engine
261- - **Tokio**: Async runtime for HTTP requests
262- - **Clap**: Command-line argument parsing
263- - **Git2**: Git repository integration
264- - **Colorful**: Terminal output styling
265- - **Reqwest**: HTTP client for downloading syntax definitions
262+ - **pulldown-cmark**: Markdown parsing and processing
263+ - **syntect**: Syntax highlighting engine
264+ - **printpdf**: PDF generation
265+ - **epub-builder**: EPUB document creation
266+ - **clap**: Command-line argument parsing
267+ - **git2**: Git repository integration
268+ - **regex**: Pattern matching for CSS conversion
269+ - **tokio**: Async runtime
266270
267271## 📋 Examples
268272
272276# Generate project documentation
273277scrollcast ./my-project -o docs/codebase.pdf -t kate
274278
275- # Create EPUB for mobile reading
276- scrollcast ./my-project -o docs/codebase.epub -f epub -t breezedark
279+ # Create EPUB for mobile reading (experimental)
280+ scrollcast ./my-project -o docs/codebase.epub -f epub -t breezedark --include-experimental
277281```
278282
279283### Code Review
@@ -320,10 +324,11 @@ MIT License
320324
321325## 🙏 Acknowledgments
322326
323- - ** Pandoc** : Universal document converter
324- - ** Skylighting** : Syntax highlighting engine
327+ - ** pulldown-cmark** : Fast CommonMark parser
328+ - ** syntect** : Pure Rust syntax highlighting
329+ - ** printpdf** : Rust PDF generation library
330+ - ** epub-builder** : EPUB creation toolkit
325331- ** KDE Syntax Highlighting** : Comprehensive language definitions
326- - ** XeLaTeX** : Superior Unicode and typography support
327332
328333---
329334
0 commit comments