Skip to content

Export Command

The repoindex export command generates portfolio exports from your repositories in various formats, perfect for creating documentation sites, portfolios, and reports.

Overview

Export your repository data as: - Markdown - Clean, readable documentation - Hugo - Complete Hugo site structure with taxonomies - HTML - Interactive portfolio with search and filtering - JSON - Structured data for further processing - CSV - Tabular data for spreadsheets - LaTeX/PDF - Professional printed portfolios

Usage

repoindex export generate [OPTIONS]

Key Options

  • -f, --format FORMAT - Output format (markdown, hugo, html, json, csv, pdf, latex)
  • -o, --output DIR - Output directory
  • --single-file - Export to single file instead of multiple
  • --group-by PREFIX - Group repositories by tag prefix
  • --template NAME - Use custom template
  • -t, --tag TAG - Filter by tags
  • -q, --query EXPR - Filter by query expression
  • --pretty - Display export progress

Export Formats

Markdown Export

Simple, clean markdown suitable for any documentation system.

# Export all repos to markdown
repoindex export generate -f markdown -o ./portfolio

# Export Python projects only
repoindex export generate -f markdown -t "lang:python" -o ./python-projects

# Single file export
repoindex export generate -f markdown --single-file -o ./output

Hugo Export

Creates a complete Hugo content structure with front matter.

# Generate Hugo site content
repoindex export generate -f hugo -o ./my-site/content/projects

# Group by language
repoindex export generate -f hugo --group-by lang -o ./my-site/content/projects

# Export work projects
repoindex export generate -f hugo -t "dir:work" -o ./my-site/content/work

Generated structure:

content/projects/
├── _index.md          # Section index with statistics
├── python/
│   ├── _index.md      # Language group index
│   ├── project1.md    # Individual project page
│   └── project2.md
└── javascript/
    ├── _index.md
    └── project3.md

HTML Export

Interactive portfolio with JavaScript-powered search and filtering.

# Create interactive portfolio
repoindex export generate -f html -o ./portfolio

# Single-page application
repoindex export generate -f html --single-file -o ./portfolio

# Group by directory
repoindex export generate -f html --group-by dir -o ./portfolio

Features: - Live search filtering - Language dropdown filter - Sort by name, stars, or update date - Responsive design - No external dependencies

JSON Export

Clean JSON for API consumption or further processing.

# Export all metadata
repoindex export generate -f json -o ./data

# Single file with all repos
repoindex export generate -f json --single-file -o ./data

# Filter high-star projects
repoindex export generate -f json -q "stars > 10" -o ./popular

CSV Export

Tabular format for spreadsheet analysis.

# Export to CSV
repoindex export generate -f csv -o ./reports

# Group by language
repoindex export generate -f csv --group-by lang -o ./reports

Columns included: - name, description, language - stars, forks, license - created_at, updated_at - homepage, repository_url - topics (comma-separated)

LaTeX/PDF Export

Professional document format for printed portfolios.

# Generate LaTeX document
repoindex export generate -f latex -o ./portfolio

# Compile to PDF (requires pdflatex)
repoindex export generate -f latex -o ./portfolio
cd ./portfolio && pdflatex repositories.tex

Grouping and Organization

Use --group-by to organize repositories by tag prefix:

# Group by directory
repoindex export generate -f hugo --group-by dir

# Group by language
repoindex export generate -f html --group-by lang

# Group by organization
repoindex export generate -f markdown --group-by org

Templates

Custom templates allow you to control the export format:

# List available templates
repoindex export templates --list

# Use a template
repoindex export generate -f markdown --template my-template

# Show template content
repoindex export templates --show my-template

Pipeline Integration

Export commands output JSONL by default for progress tracking:

# Monitor export progress
repoindex export generate -f hugo -o ./site | jq -r '.file'

# Count exported files
repoindex export generate -f html | jq -s 'length'

# Get export summary
repoindex export generate -f markdown | jq -s '{
  total_files: length,
  total_repos: [.[] | .repositories // 0] | add
}'

Examples

Complete Portfolio Website

# Generate full Hugo site for all projects
repoindex export generate -f hugo \
  --group-by lang \
  -o ./my-portfolio/content/projects

# Add to Hugo config.yaml:
# menu:
#   main:
#     - name: "Projects"
#       url: "/projects/"
#       weight: 10

Work vs Personal Projects

# Export work projects
repoindex export generate -f html \
  -t "dir:work" \
  -o ./portfolios/work \
  --single-file

# Export personal projects
repoindex export generate -f html \
  -t "dir:personal" \
  -o ./portfolios/personal \
  --single-file

Language-Specific Portfolios

# Python portfolio
repoindex export generate -f markdown \
  -t "lang:python" \
  -o ./python-portfolio \
  --single-file

# JavaScript portfolio
repoindex export generate -f markdown \
  -t "lang:javascript" \
  -o ./js-portfolio \
  --single-file

Executive Summary

# High-level PDF report of popular projects
repoindex export generate -f latex \
  -q "stars > 5 or forks > 2" \
  -o ./executive-summary \
  --single-file

cd ./executive-summary
pdflatex repositories.tex

API Documentation

# Export all repos with docs to JSON
repoindex export generate -f json \
  -t "has:docs" \
  -o ./api/data \
  --single-file

# Serve with any static server
cd ./api && python -m http.server

Integration with Static Site Generators

Hugo

# Export directly to Hugo content directory
repoindex export generate -f hugo -o ./my-site/content/projects

# Build and serve
cd ./my-site
hugo serve

Jekyll

# Export as markdown to Jekyll collections
repoindex export generate -f markdown -o ./my-site/_projects

# Add to _config.yml:
# collections:
#   projects:
#     output: true

Next.js / Gatsby

# Export as JSON for static generation
repoindex export generate -f json \
  --single-file \
  -o ./my-app/data/projects.json

# Import in your app
# import projects from '../data/projects.json'