# Documentation Scripts This directory contains all scripts related to building, managing, and deploying documentation for the Rustelo project. ## 📁 Scripts Overview ### 🔨 Build Scripts #### `build-docs.sh` **Purpose:** Comprehensive documentation build system **Description:** Builds both mdBook and cargo documentation with logo integration **Usage:** ```bash # Build mdBook documentation only ./build-docs.sh # Build cargo documentation with logos ./build-docs.sh --cargo # Build all documentation (mdBook + cargo doc) ./build-docs.sh --all # Serve documentation locally ./build-docs.sh --serve # Watch for changes and rebuild ./build-docs.sh --watch # Sync existing docs into mdBook format ./build-docs.sh --sync ``` **Features:** - Builds mdBook documentation - Generates cargo doc with logo enhancement - Serves documentation locally - Watches for file changes - Syncs existing documentation - Provides build metrics #### `enhance-docs.sh` **Purpose:** Add Rustelo branding to cargo doc output **Description:** Post-processes cargo doc HTML files to add logos and custom styling **Usage:** ```bash # Enhance cargo doc with logos ./enhance-docs.sh # Clean up backup files ./enhance-docs.sh --clean # Restore original documentation ./enhance-docs.sh --restore ``` **Features:** - Adds logos to all crate documentation pages - Injects custom CSS for branding - Creates backup files for safety - Adds footer with project links - Supports restoration of original files ### 🌐 Development Scripts #### `docs-dev.sh` **Purpose:** Start development server for documentation **Description:** Launches mdBook development server with live reload **Usage:** ```bash # Start development server ./docs-dev.sh # Start with specific port ./docs-dev.sh --port 3001 # Start and open browser ./docs-dev.sh --open ``` **Features:** - Live reload on file changes - Automatic browser opening - Custom port configuration - Hot reloading for rapid development ### ⚙️ Setup Scripts #### `setup-docs.sh` **Purpose:** Initialize documentation system **Description:** Sets up the complete documentation infrastructure **Usage:** ```bash # Basic setup ./setup-docs.sh # Full setup with all features ./setup-docs.sh --full # Setup with content generation ./setup-docs.sh --generate # Setup for specific platform ./setup-docs.sh --platform github-pages ``` **Features:** - Installs required tools (mdBook, etc.) - Creates directory structure - Generates initial content - Configures theme and styling - Platform-specific optimization #### `generate-content.sh` **Purpose:** Generate documentation content **Description:** Creates documentation pages from templates and existing content **Usage:** ```bash # Generate all content ./generate-content.sh # Generate specific section ./generate-content.sh --section features # Generate from existing docs ./generate-content.sh --sync # Force regeneration ./generate-content.sh --force ``` **Features:** - Converts existing documentation - Generates API documentation - Creates navigation structure - Processes templates - Validates content structure ### 🚀 Deployment Scripts #### `deploy-docs.sh` **Purpose:** Deploy documentation to various platforms **Description:** Automated deployment of built documentation **Usage:** ```bash # Deploy to GitHub Pages ./deploy-docs.sh github-pages # Deploy to Netlify ./deploy-docs.sh netlify # Deploy to custom server ./deploy-docs.sh custom --server example.com # Deploy with custom domain ./deploy-docs.sh github-pages --domain docs.rustelo.dev ``` **Supported Platforms:** - GitHub Pages - Netlify - Vercel - AWS S3 - Custom servers via SSH **Features:** - Platform-specific optimization - Custom domain configuration - SSL certificate handling - Automated builds - Rollback capabilities ## 🔄 Workflow Examples ### Complete Documentation Build ```bash # 1. Setup documentation system ./setup-docs.sh --full # 2. Generate content from existing docs ./generate-content.sh --sync # 3. Build all documentation ./build-docs.sh --all # 4. Deploy to GitHub Pages ./deploy-docs.sh github-pages ``` ### Development Workflow ```bash # 1. Start development server ./docs-dev.sh --open # 2. In another terminal, watch for cargo doc changes cargo watch -x "doc --no-deps" -s "./enhance-docs.sh" # 3. Make changes and see live updates ``` ### CI/CD Integration ```bash # Automated build and deploy (for CI/CD) ./setup-docs.sh --ci ./build-docs.sh --all ./deploy-docs.sh github-pages --token $GITHUB_TOKEN ``` ## 📋 Prerequisites ### Required Tools - **mdBook** - `cargo install mdbook` - **Rust/Cargo** - For cargo doc generation - **Git** - For deployment to GitHub Pages ### Optional Tools - **mdbook-linkcheck** - `cargo install mdbook-linkcheck` - **mdbook-toc** - `cargo install mdbook-toc` - **mdbook-mermaid** - `cargo install mdbook-mermaid` - **cargo-watch** - `cargo install cargo-watch` ### Environment Variables ```bash # For deployment export GITHUB_TOKEN="your-github-token" export NETLIFY_AUTH_TOKEN="your-netlify-token" export VERCEL_TOKEN="your-vercel-token" # For custom domains export DOCS_DOMAIN="docs.rustelo.dev" export CNAME_RECORD="rustelo.github.io" ``` ## 📁 Output Structure ``` template/ ├── book-output/ # mdBook output │ ├── html/ # Generated HTML │ └── index.html # Main documentation entry ├── target/doc/ # Cargo doc output │ ├── server/ # Server crate docs │ ├── client/ # Client crate docs │ ├── shared/ # Shared crate docs │ └── logos/ # Logo assets └── docs-dist/ # Combined distribution ├── book/ # mdBook content ├── api/ # API documentation └── assets/ # Static assets ``` ## 🔧 Configuration ### mdBook Configuration **File:** `book.toml` - Theme customization - Logo integration - Plugin configuration - Build settings ### Script Configuration **File:** `scripts/docs/config.sh` (if exists) - Default deployment platform - Custom domain settings - Build optimization flags - Platform-specific options ## 🐛 Troubleshooting ### Common Issues 1. **mdBook build fails** ```bash # Check mdBook installation mdbook --version # Reinstall if needed cargo install mdbook --force ``` 2. **Cargo doc enhancement fails** ```bash # Ensure cargo doc was built first cargo doc --no-deps # Check script permissions chmod +x ./enhance-docs.sh ``` 3. **Deployment fails** ```bash # Check environment variables echo $GITHUB_TOKEN # Verify repository permissions git remote -v ``` 4. **Logo files missing** ```bash # Ensure logos are in the correct location ls -la logos/ ls -la public/logos/ ``` ### Debug Mode Most scripts support debug mode for troubleshooting: ```bash # Enable debug output DEBUG=1 ./build-docs.sh --all # Verbose logging VERBOSE=1 ./deploy-docs.sh github-pages ``` ## 📊 Metrics and Analytics ### Build Metrics - Total pages generated - Build time - File sizes - Link validation results ### Deployment Metrics - Deployment time - File transfer size - CDN cache status - Performance scores ## 🔒 Security ### Best Practices - Use environment variables for sensitive data - Validate all input parameters - Create backups before destructive operations - Use secure protocols for deployments ### Token Management - Store tokens in secure environment variables - Use minimal required permissions - Rotate tokens regularly - Monitor token usage ## 🤝 Contributing ### Adding New Scripts 1. Follow naming convention: `action-target.sh` 2. Include help text and usage examples 3. Add error handling and validation 4. Update this README 5. Test with different configurations ### Modifying Existing Scripts 1. Maintain backward compatibility 2. Update documentation 3. Test all use cases 4. Verify CI/CD integration ## 📚 Related Documentation - **[Logo Usage Guide](../../book/developers/brand/logo-usage.md)** - How to use logos in documentation - **[mdBook Configuration](../../book.toml)** - mdBook setup and configuration - **[Deployment Guide](../../book/deployment/)** - Platform-specific deployment guides - **[Contributing Guidelines](../../CONTRIBUTING.md)** - How to contribute to documentation ## 📞 Support For issues with documentation scripts: 1. Check this README for common solutions 2. Review script help text: `./script-name.sh --help` 3. Enable debug mode for detailed output 4. Open an issue on GitHub with logs and configuration --- *Generated by Rustelo Documentation System* *Last updated: $(date)*