This commit is contained in:
2025-11-11 21:00:37 -06:00
parent 544d1c31e5
commit 53b986d3f7
37 changed files with 3433 additions and 2 deletions

View File

@@ -0,0 +1,47 @@
# Meeting Notes: Documentation Toolchain Implementation
## Date: 2025-11-05
## Attendees: Charles Wyble, Jane Smith, John Doe
## Topic: Documentation Toolchain Setup
### Agenda
1. Review current documentation challenges
2. Discuss proposed toolchain solutions
3. Plan implementation timeline
### Current Challenges
- Inconsistent documentation formats across projects
- Lack of automated generation tools
- Poor integration with CI/CD pipelines
- Difficult to maintain multiple document versions
### Proposed Solutions
- Implement standardized documentation toolchain using pandoc, mdbook, and typst
- Containerize all tools for consistent environments
- Integrate with existing CI/CD systems
- Create templates for common document types
### Toolchain Decisions
- **Primary Format**: Markdown for source documents
- **Conversion Tools**:
- pandoc - for general conversions (Markdown to PDF/HTML/Docx)
- mdbook - for book-style documentation
- typst - for academic-style documents
- quarto - for data-driven documents
- **Styling**: LaTeX templates for PDF output
### Implementation Timeline
- **Week 1**: Environment setup with Docker
- **Week 2**: Template development
- **Week 3**: Integration with CI/CD
- **Week 4**: Testing and validation
- **Week 5**: Deployment and documentation
### Action Items
- [ ] Jane: Research pandoc LaTeX templates
- [ ] John: Create Dockerfile for toolchain
- [ ] Charles: Define security requirements
- [ ] All: Review and test prototype by EOW
### Next Meeting
Date: 2025-11-12, 14:00 UTC

View File

@@ -0,0 +1,38 @@
# The Example Book
This is a sample book to demonstrate mdbook functionality.
## Chapter 1: Introduction
Welcome to this example book. This demonstrates the capabilities of mdbook for generating static documentation sites.
### Features of mdbook
- Write in Markdown
- Automatically generated table of contents
- Syntax highlighting for code blocks
- Cross-references between chapters
- Support for themes and custom CSS
```rust
fn main() {
println!("Hello, mdbook!");
}
```
## Chapter 2: Advanced Features
Mdbook supports several advanced features that enhance documentation:
- Internal link: [Introduction](./ch1.md)
- External link: [Rust Homepage](https://www.rust-lang.org)
- Images and diagrams
- Math formulas using KaTeX
$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
### Summary
This example demonstrates mdbook's core functionality. In a real project, you would have multiple chapters with detailed content.

View File

@@ -0,0 +1,38 @@
# Example Book
This is a sample book to demonstrate mdbook functionality.
## Chapter 1: Introduction
Welcome to this example book. This demonstrates the capabilities of mdbook for generating static documentation sites.
### Features of mdbook
- Write in Markdown
- Automatically generated table of contents
- Syntax highlighting for code blocks
- Cross-references between chapters
- Support for themes and custom CSS
```rust
fn main() {
println!("Hello, mdbook!");
}
```
## Chapter 2: Advanced Features
Mdbook supports several advanced features that enhance documentation:
- Internal link: [Introduction](./ch1.md)
- External link: [Rust Homepage](https://www.rust-lang.org)
- Images and diagrams
- Math formulas using KaTeX
$$
\int_0^\infty e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
### Summary
This example demonstrates mdbook's core functionality. In a real project, you would have multiple chapters with detailed content.

View File

@@ -0,0 +1,70 @@
# Project Plan: Documentation Toolchain
## Overview
This document outlines the plan for implementing a comprehensive documentation toolchain for the TSYS Development Stack.
## Timeline
- **Start Date:** 2025-11-15
- **Estimated Completion:** 2025-12-15
- **Review Date:** 2025-11-30
## Stakeholders
- **Project Lead:** Charles Wyble
- **Engineering Team:** DevOps Engineers
- **Quality Assurance:** Documentation Team
- **End Users:** All TSYS Developers
## Objectives
1. Implement a standardized documentation workflow
2. Integrate multiple documentation formats (Markdown, LaTeX, Typst)
3. Enable automated document generation
4. Provide CI/CD integration for documentation
## Work Packages
### WP1: Environment Setup (Week 1)
- Set up development environment
- Install documentation tools (pandoc, mdbook, typst, etc.)
- Configure build scripts
### WP2: Template Development (Week 2)
- Create document templates
- Develop style guides
- Standardize formatting
### WP3: Integration (Week 3)
- Integrate tools with existing systems
- Set up CI/CD pipeline
- Create documentation workflows
### WP4: Testing & Validation (Week 4)
- Test all document generation workflows
- Validate output quality
- Perform security scanning
### WP5: Deployment (Week 5)
- Deploy to production environments
- Provide user training
- Document procedures
## Deliverables
- Containerized documentation environment
- Automated build scripts
- Documentation templates
- User guides and tutorials
## Resources Required
- Development time: 10 person-weeks
- Infrastructure: Docker-enabled CI/CD system
- Tools: pandoc, mdbook, typst, quarto, and related libraries
## Success Criteria
- All documentation types generate correctly
- Integration with existing CI/CD systems
- 100% security scan compliance
- Performance benchmarks met
## Risks
- Dependency conflicts between tools
- Licensing issues with LaTeX packages
- Performance degradation with complex documents

View File

@@ -0,0 +1,42 @@
# John Doe - Software Engineer
## Contact Information
- Email: john.doe@example.com
- Phone: (555) 123-4567
- LinkedIn: linkedin.com/in/johndoe
- GitHub: github.com/johndoe
## Professional Summary
Experienced software engineer with 8+ years of expertise in developing scalable web applications and cloud infrastructure. Specialized in full-stack development with a focus on modern JavaScript frameworks and cloud technologies.
## Skills
- Languages: JavaScript, TypeScript, Python, Java, Go
- Frontend: React, Vue, Angular, HTML5, CSS3, SASS
- Backend: Node.js, Express, Django, Spring Boot
- Databases: PostgreSQL, MongoDB, Redis
- Cloud: AWS, Docker, Kubernetes, CI/CD
## Experience
### Senior Software Engineer | TechCorp | 2020 - Present
- Led development of a microservices architecture serving 1M+ users
- Reduced application load time by 40% through performance optimization
- Mentored 5 junior developers and conducted code reviews
### Software Engineer | StartupXYZ | 2018 - 2020
- Developed and maintained customer-facing web applications
- Implemented CI/CD pipeline reducing deployment time by 60%
- Collaborated with design team to improve UI/UX
### Junior Developer | ABC Solutions | 2016 - 2018
- Built and maintained internal tools and dashboards
- Participated in agile development process
- Assisted in troubleshooting production issues
## Education
**Bachelor of Science in Computer Science**
University of Technology | 2012 - 2016
## Certifications
- AWS Certified Solutions Architect
- Certified Kubernetes Administrator

View File

@@ -0,0 +1,100 @@
\documentclass[11pt,letterpaper]{article}
\usepackage[margin=1in]{geometry}
\usepackage{titlesec}
\usepackage{enumitem}
\usepackage[dvipsnames]{xcolor}
\usepackage{fontspec}
\usepackage{hyperref}
% Define colors
\definecolor{primaryColor}{RGB}{0, 43, 54}
\definecolor{secondaryColor}{RGB}{147, 161, 161}
% Set main font
\setmainfont{Carlito}
% Remove page numbering
\pagestyle{empty}
% Format section titles
\titleformat{\section}
{\large\bfseries\color{primaryColor}}
{}
{0em}
{\underline}
\titlespacing{\section}{0pt}{1.5ex}{0.5ex}
% Format subsection titles
\titleformat{\subsection}
{\normalsize\bfseries}
{}
{0em}
{}
\titlespacing{\subsection}{0pt}{1ex}{0.25ex}
% Set link colors
\hypersetup{
colorlinks=true,
linkcolor=secondaryColor,
urlcolor=secondaryColor
}
\begin{document}
% Header
\begin{center}
{\LARGE\bfseries\color{primaryColor} John Doe} \\ \vspace{0.2cm}
{\large Software Engineer} \\ \vspace{0.2cm}
\color{secondaryColor}
john.doe@example.com | (555) 123-4567 | linkedin.com/in/johndoe | github.com/johndoe
\end{center}
\vspace{0.3cm}
% Summary section
\section{Professional Summary}
\color{black}
Experienced software engineer with 8+ years of expertise in developing scalable web applications and cloud infrastructure. Specialized in full-stack development with a focus on modern JavaScript frameworks and cloud technologies.
\section{Skills}
\begin{itemize}[leftmargin=0.5cm, itemsep=0pt]
\item \textbf{Languages:} JavaScript, TypeScript, Python, Java, Go
\item \textbf{Frontend:} React, Vue, Angular, HTML5, CSS3, SASS
\item \textbf{Backend:} Node.js, Express, Django, Spring Boot
\item \textbf{Databases:} PostgreSQL, MongoDB, Redis
\item \textbf{Cloud:} AWS, Docker, Kubernetes, CI/CD
\end{itemize}
\section{Experience}
\subsection{Senior Software Engineer | TechCorp | 2020 - Present}
\begin{itemize}[leftmargin=0.5cm, itemsep=0pt]
\item Led development of a microservices architecture serving 1M+ users
\item Reduced application load time by 40\% through performance optimization
\item Mentored 5 junior developers and conducted code reviews
\end{itemize}
\subsection{Software Engineer | StartupXYZ | 2018 - 2020}
\begin{itemize}[leftmargin=0.5cm, itemsep=0pt]
\item Developed and maintained customer-facing web applications
\item Implemented CI/CD pipeline reducing deployment time by 60\%
\item Collaborated with design team to improve UI/UX
\end{itemize}
\subsection{Junior Developer | ABC Solutions | 2016 - 2018}
\begin{itemize}[leftmargin=0.5cm, itemsep=0pt]
\item Built and maintained internal tools and dashboards
\item Participated in agile development process
\item Assisted in troubleshooting production issues
\end{itemize}
\section{Education}
\textbf{Bachelor of Science in Computer Science} \\
University of Technology | 2012 - 2016
\section{Certifications}
\begin{itemize}[leftmargin=0.5cm, itemsep=0pt]
\item AWS Certified Solutions Architect
\item Certified Kubernetes Administrator
\end{itemize}
\end{document}

View File

@@ -0,0 +1,44 @@
% Sample bibliography file for BibTool testing
@article{example2023,
title={An Example Article for BibTool},
author={Smith, John and Doe, Jane},
journal={Journal of Examples},
volume={1},
number={1},
pages={1--10},
year={2023},
publisher={Example Publisher},
doi={10.1234/example2023}
}
@book{another2023,
title={Another Example Book for BibTool},
author={Brown, Alice},
year={2023},
publisher={Example Academic Press},
address={New York},
isbn={978-1234567890}
}
@inproceedings{third2023,
title={A Conference Paper Example for BibTool},
author={Johnson, Bob and Williams, Carol},
booktitle={Proceedings of the International Conference on Examples},
pages={123--130},
year={2023},
organization={Example Organization}
}
% This is a duplicate entry to test BibTool's duplicate detection
@article{example2023_duplicate,
title={An Example Article for BibTool},
author={Smith, John and Doe, Jane},
journal={Journal of Examples},
volume={1},
number={1},
pages={1--10},
year={2023},
publisher={Example Publisher},
doi={10.1234/example2023}
}

View File

@@ -0,0 +1,10 @@
[book]
authors = ["TSYS Group"]
language = "en"
multilingual = false
src = "src"
title = "Sample mdBook Project"
[output.html]
git-repository-url = "https://github.com/tsysdevstack/toolbox"
edit-url-template = "https://github.com/tsysdevstack/toolbox/edit/main/{path}"

View File

@@ -0,0 +1,6 @@
# Summary
[Introduction](./chapters/intro.md)
[Getting Started](./chapters/getting-started.md)
[Advanced Features](./chapters/advanced.md)
[Conclusion](./chapters/conclusion.md)

View File

@@ -0,0 +1,55 @@
# Advanced Features
This chapter covers more advanced features of mdBook that can enhance your documentation.
## Adding Custom CSS
You can customize the look of your book by adding CSS files to a theme directory:
```
mybook/
├── book.toml
└── src/
├── SUMMARY.md
└── ...
└── theme/
└── css/
└── custom.css
```
## Including Files
Use the `{{#include}}` syntax to include external files:
```markdown
{{#include ../../../path/to/file.rs}}
```
## Adding Math
Mathematical formulas are supported using KaTeX:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
Inline math: $E = mc^2$
## Admonitions
Special blocks for notes, warnings, etc.:
> Note: This is a note admonition.
> Warning: This is a warning admonition.
> Tip: This is a tip admonition.
## Adding Interactive Elements
You can include HTML directly in your markdown:
<details>
<summary>Click to expand</summary>
Hidden content goes here.
</details>

View File

@@ -0,0 +1,27 @@
# Conclusion
This concludes our sample mdBook project. You now know the basics of creating documentation with mdBook.
## What We've Covered
- Setting up an mdBook project
- Creating chapters with markdown
- Using advanced features like math and admonitions
- Building and serving your book
## Next Steps
Now that you understand the basics, you can:
1. Create your own documentation project
2. Customize the theme and styling
3. Add more complex content with interactive elements
4. Deploy your book to a web server
## Additional Resources
- [Official mdBook documentation](https://rust-lang.github.io/mdBook/)
- [Markdown guide](https://www.markdownguide.org/)
- [TSYS Documentation & Diagrams container](https://github.com/tsysdevstack/toolbox)
Thank you for exploring the capabilities of mdBook with the TSYS Documentation & Diagrams container!

View File

@@ -0,0 +1,47 @@
# Getting Started
This chapter will guide you through the basics of creating content with mdBook.
## Creating Your First Chapter
To create a new chapter:
1. Create a markdown file in the `src` directory
2. Add an entry in `SUMMARY.md` to include it in the navigation
3. Run `mdbook build` to generate the HTML
## Basic Markdown Syntax
You can use standard markdown syntax in your chapters:
```markdown
# Heading 1
## Heading 2
### Heading 3
- List item 1
- List item 2
- List item 3
[Link text](path/to/page.md)
![Image alt text](path/to/image.jpg)
```
## Code Blocks
Code blocks get syntax highlighting:
```rust
fn main() {
println!("Hello, world!");
}
```
```javascript
console.log("Hello, JavaScript!");
```
```python
print("Hello, Python!")
```

View File

@@ -0,0 +1,15 @@
# Introduction
Welcome to the Sample mdBook Project! This book demonstrates the capabilities of mdBook for creating documentation.
## What is mdBook?
mdBook is a utility to create books from markdown files. It is similar to GitBook but written in Rust.
## Features
- Write books in markdown
- Create a book with multiple chapters
- Automatically generated table of contents
- Syntax highlighting for code blocks
- Responsive design for mobile devices

View File

@@ -0,0 +1,27 @@
# Sample diagram for Kroki
graph TD
A[Documentation Tools] --> B[Pandoc]
A --> C[mdBook]
A --> D[Typst]
A --> E[Marp]
A --> F[Quarto]
B --> G[PDF Output]
B --> H[DOCX Output]
B --> I[HTML Output]
C --> J[Book Generation]
D --> K[Typesetting]
E --> L[Presentations]
F --> M[Scientific Reports]
G --> N[Print]
H --> O[Word Processing]
I --> P[Web Publishing]
J --> Q[Documentation Sites]
K --> R[Academic Papers]
L --> S[Slides]
M --> T[Research Papers]
style A fill:#f9f,stroke:#333,stroke-width:2px

View File

@@ -0,0 +1,62 @@
# Sample Document for Pandoc Testing
This is a sample document to test the pandoc functionality in the TSYS Documentation & Diagrams container.
## Heading 2
This document contains various elements to test pandoc's conversion capabilities:
- Bullet list item 1
- Bullet list item 2
- Nested item
- Bullet list item 3
### Heading 3
1. Numbered list item 1
2. Numbered list item 2
1. Nested numbered item
3. Numbered list item 3
> This is a blockquote to test pandoc's handling of quoted text.
Here is some `inline code` and a code block:
```python
def hello_world():
print("Hello, world!")
return True
```
**Bold text** and *italic text* should render correctly.
## Table Example
| Column 1 | Column 2 | Column 3 |
| :--- | :--- | :--- |
| Left-aligned | Left-aligned | Left-aligned |
| Item 1 | Value 1 | Status 1 |
| Item 2 | Value 2 | Status 2 |
| Item 3 | Value 3 | Status 3 |
## Link and Image
Here is a [link to pandoc's website](https://pandoc.org).
![Placeholder image](https://placehold.co/150 "Placeholder")
## Mathematical Formula
Here is an inline equation: $E = mc^2$
And here is a block equation:
$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$
## Citations
This statement needs a citation [@example2023].
This one too [@another2023; @third2023].
# References

View File

@@ -0,0 +1,106 @@
---
marp: true
theme: uncover
paginate: true
---
# TSYS Documentation & Diagrams
## A Marp Presentation Sample
---
## What's in this Container?
- **Pandoc** - Universal document converter
- **mdBook** - Book generation from Markdown
- **Typst** - Modern typesetting system
- **Marp** - Markdown presentation creator
- **Quarto** - Scientific publishing system
- **And more!**
---
## Key Features
- Runs as non-root user
- Uses `mise` for runtime management
- Version-pinned packages
- Multi-platform support
- Security-first design
---
## Document Conversion
Convert documents between formats easily:
```bash
pandoc input.md -o output.pdf
```
Or with custom styling:
```bash
pandoc input.md --reference-doc=template.docx -o output.docx
```
---
## Multi-format Publishing
Create documents in multiple formats simultaneously:
- PDF for print
- HTML for web
- DOCX for word processing
- EPUB for e-readers
---
## Code Example
Highlighting code in presentations:
```javascript
function helloWorld() {
console.log("Hello, world!");
return true;
}
```
---
## Math Support
Equations in presentations:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
---
## Diagrams
Create diagrams with Kroki:
```mermaid
graph TD
A[Document] --> B{Format}
B --> C[PDF]
B --> D[HTML]
B --> E[DOCX]
```
---
## Thank You!
For more information, check out the documentation:
- README.md
- USAGE.md
- Troubleshooting Guide
Questions?

View File

@@ -0,0 +1,97 @@
---
title: "TSYS Documentation & Diagrams Sample Report"
author: "TSYS Group"
date: "2025-11-07"
format:
html:
theme: cosmo
toc: true
pdf:
documentclass: article
docx:
reference-doc: template.docx
jupyter: python3
---
## Overview
This report demonstrates the capabilities of Quarto for creating reproducible scientific reports. Quarto is a powerful open-source scientific and technical publishing system that supports multiple input formats, numerous output formats, and integrates with R, Python, Julia, and Observable.
## Data Analysis with Python
We can embed code directly in the document:
```{python}
#| echo: true
import matplotlib.pyplot as plt
import numpy as np
# Generate sample data
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Create plot
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='sin(x)')
plt.title('Sine Wave')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
plt.grid(True)
plt.show()
```
## Mathematical Formulas
Quarto supports both inline math $E = mc^2$ and display math:
$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$
## Citations
We can reference academic works in our document. For example, research has shown the importance of reproducible research [@peng2009].
## Tables
| Tool | Purpose | Key Feature |
|------|---------|-------------|
| Pandoc | Document conversion | Universal converter |
| mdBook | Book generation | Markdown-based |
| Typst | Typesetting | Fast and modern |
| Marp | Presentations | Markdown-based |
| Quarto | Scientific publishing | Multi-language support |
## Diagrams
With integrated Kroki support, we can include diagrams:
```mermaid
graph TD
A[Input Document] --> B{Quarto}
B --> C[HTML Output]
B --> D[PDF Output]
B --> E[DOCX Output]
B --> F[Beamer Slides]
```
## Code Execution
Quarto allows executing code in multiple languages:
```{python}
#| echo: true
import pandas as pd
# Create sample data frame
data = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Tokyo']}
df = pd.DataFrame(data)
print(df)
```
## Conclusion
This sample demonstrates Quarto's powerful features for creating reproducible, multi-format documents that combine narrative text, code, and output. The TSYS Documentation & Diagrams container provides all the necessary tools for comprehensive document production workflows.
## References

View File

@@ -0,0 +1,66 @@
// Sample Typst document to demonstrate typesetting capabilities
#set page(width: 12cm, height: 16cm, margin: 2cm)
#set text(family: "Linux Libertine", size: 11pt)
= TSYS Documentation & Diagrams
A Typst Sample Document
#lorem(30)
== Introduction
#lorem(50)
== Features of Typst
Typst offers many advantages for document creation:
- #h(0.3em) *Fast and Modern* - Built for efficiency and speed
- #h(0.3em) *Markup-based* - Clean, semantic syntax
- #h(0.3em) *Powerful Typesetting* - Professional output quality
#lorem(40)
== Code Example
Here's how to write code in Typst:
```
#let greet(name) = [
Hello, #name!
]
#greet("World")
```
== Mathematical Expressions
Typst has excellent support for mathematical expressions:
- Inline math: #math.equation( sum_(i=0)^n i^2 = (n(n+1)(2n+1))/6 )
- Block equations:
$
f(x) = int_-∞^∞ hat f(xi),e^2 pi i xi x dxi
$
== Table Example
#table(
columns: 3,
[Column 1], [Column 2], [Column 3],
[Item 1], [Value 1], [Status 1],
[Item 2], [Value 2], [Status 2],
[Item 3], [Value 3], [Status 3],
)
== Conclusion
#lorem(40)
= References
#let reference(title, author, year) = [
#h(1.5em) #author (#year). #title.
]
#reference("Typst: A New Markup-Based Typesetting System", "Typst Team", 2023)

View File

@@ -0,0 +1,294 @@
#!/usr/bin/env bash
# workflow-demo.sh - Demonstration script for common documentation workflows
# Shows how to use the container with various example files
set -euo pipefail
# Configuration
IMAGE_NAME="tsysdevstack-toolboxes-docs"
EXAMPLES_DIR="examples"
OUTPUT_DIR="output/demo"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Function to check if container exists
check_container() {
if ! docker images | grep -q "$IMAGE_NAME"; then
print_error "Container image '$IMAGE_NAME' not found. Please build it first:"
echo " ./output/build.sh"
exit 1
fi
}
# Function to create output directory
setup_output() {
mkdir -p "$OUTPUT_DIR"
print_status "Created output directory: $OUTPUT_DIR"
}
# Function to demonstrate resume generation
demo_resume() {
print_status "📄 Demonstrating resume generation..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
pandoc /home/tsysdevstack/examples/resume-sample.md \
-o /home/tsysdevstack/output/resume.pdf \
--pdf-engine=xelatex; then
print_success "Resume generated: $OUTPUT_DIR/resume.pdf"
else
print_error "Failed to generate resume"
fi
}
# Function to demonstrate project documentation
demo_project_docs() {
print_status "📚 Demonstrating project documentation..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
pandoc /home/tsysdevstack/examples/project-plan.md \
-o /home/tsysdevstack/output/project-plan.html \
--standalone; then
print_success "Project documentation generated: $OUTPUT_DIR/project-plan.html"
else
print_error "Failed to generate project documentation"
fi
}
# Function to demonstrate mdbook
demo_mdbook() {
print_status "📖 Demonstrating mdbook generation..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
bash -c "cd /home/tsysdevstack/examples/mdbook-sample && mdbook build -d /home/tsysdevstack/output/mdbook-demo"; then
print_success "mdbook generated: $OUTPUT_DIR/mdbook-demo/"
else
print_error "Failed to generate mdbook"
fi
}
# Function to demonstrate typst
demo_typst() {
print_status "🎨 Demonstrating typst compilation..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
typst compile /home/tsysdevstack/examples/sample-typst.typ \
/home/tsysdevstack/output/typst-demo.pdf; then
print_success "Typst document generated: $OUTPUT_DIR/typst-demo.pdf"
else
print_error "Failed to compile typst document"
fi
}
# Function to demonstrate presentation
demo_presentation() {
print_status "🎯 Demonstrating presentation generation..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
bash -c "npx --package @marp-team/marp-cli marp /home/tsysdevstack/examples/sample-presentation.md -o /home/tsysdevstack/output/presentation.pdf"; then
print_success "Presentation generated: $OUTPUT_DIR/presentation.pdf"
else
print_error "Failed to generate presentation"
fi
}
# Function to demonstrate quarto
demo_quarto() {
print_status "🔬 Demonstrating quarto rendering..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
quarto render /home/tsysdevstack/examples/sample-report.qmd \
--output /home/tsysdevstack/output/quarto-report.html; then
print_success "Quarto report generated: $OUTPUT_DIR/quarto-report.html"
else
print_error "Failed to render quarto report"
fi
}
# Function to demonstrate Joplin note conversion
demo_joplin() {
print_status "📝 Demonstrating Joplin note conversion..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
pandoc /home/tsysdevstack/examples/joplin-note-sample.md \
-o /home/tsysdevstack/output/joplin-note.pdf \
--pdf-engine=xelatex; then
print_success "Joplin note converted: $OUTPUT_DIR/joplin-note.pdf"
else
print_error "Failed to convert Joplin note"
fi
}
# Function to demonstrate bibliography management
demo_bibliography() {
print_status "📚 Demonstrating bibliography management..."
if docker run --rm \
-v "$(pwd)/$EXAMPLES_DIR:/home/tsysdevstack/examples:ro" \
-v "$(pwd)/$OUTPUT_DIR:/home/tsysdevstack/output" \
"$IMAGE_NAME" \
bibtool -s /home/tsysdevstack/examples/sample-bibliography.bib > "$OUTPUT_DIR/cleaned-bibliography.bib"; then
print_success "Bibliography processed: $OUTPUT_DIR/cleaned-bibliography.bib"
else
print_error "Failed to process bibliography"
fi
}
# Function to show generated files
show_results() {
print_status "📋 Generated files:"
if [[ -d "$OUTPUT_DIR" ]]; then
ls -la "$OUTPUT_DIR/" || true
fi
}
# Function to print usage
print_usage() {
echo "Usage: $0 [OPTIONS] [WORKFLOW...]"
echo ""
echo "Demonstration script for documentation workflows."
echo ""
echo "Options:"
echo " --help, -h Show this help message"
echo " --all Run all demonstrations (default)"
echo " --clean Clean output directory before running"
echo ""
echo "Available workflows:"
echo " resume Generate resume from markdown"
echo " project Generate project documentation"
echo " mdbook Generate mdbook documentation"
echo " typst Compile typst document"
echo " presentation Generate presentation"
echo " quarto Render quarto report"
echo " joplin Convert Joplin note"
echo " bibliography Process bibliography"
echo ""
echo "Examples:"
echo " $0 --all # Run all demonstrations"
echo " $0 resume presentation # Run specific workflows"
echo " $0 --clean mdbook # Clean and run mdbook demo"
}
# Main execution
main() {
local run_all=true
local clean_output=false
local workflows=()
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
--help|-h)
print_usage
exit 0
;;
--all)
run_all=true
shift
;;
--clean)
clean_output=true
shift
;;
resume|project|mdbook|typst|presentation|quarto|joplin|bibliography)
run_all=false
workflows+=("$1")
shift
;;
*)
print_error "Unknown option: $1"
print_usage
exit 1
;;
esac
done
print_status "🚀 Starting documentation workflow demonstrations..."
# Check prerequisites
check_container
# Setup
if [[ "$clean_output" == true ]]; then
rm -rf "$OUTPUT_DIR"
print_status "Cleaned output directory"
fi
setup_output
# Run workflows
if [[ "$run_all" == true ]]; then
demo_resume
demo_project_docs
demo_mdbook
demo_typst
demo_presentation
demo_quarto
demo_joplin
demo_bibliography
else
for workflow in "${workflows[@]}"; do
case $workflow in
resume) demo_resume ;;
project) demo_project_docs ;;
mdbook) demo_mdbook ;;
typst) demo_typst ;;
presentation) demo_presentation ;;
quarto) demo_quarto ;;
joplin) demo_joplin ;;
bibliography) demo_bibliography ;;
esac
done
fi
# Show results
show_results
print_success "✅ All demonstrations completed successfully!"
print_status "Check the '$OUTPUT_DIR' directory for generated files."
}
# Run main function with all arguments
main "$@"