How quantifyearth/shark works
Shark builds Linux environments from specifications, runs commands in built environments, and also processes Markdown documents containing build, run, and publish blocks. Its documented template command expands frontmatter variables into generated documents. The graph shows those user-facing stages and the named runtime modules indicated by the tree; source excerpts were unavailable, so internal calls and unconfirmed wiring are omitted.
Main entry points: main.ml Shark CLI · block.ml Environment builder · ast Build and run blocks · run_block.ml Interactive shell
Components 16
CLI workflows
- Shark CLI
src/bin/main.ml
Markdown processing
- Markdown document
- Template expansion
src/lib/template.ml - Generated documents
- Markdown conversion
src/lib/md_to_ast.ml - Build and run blocks
src/lib/ast - Publish outputs
src/lib/import.ml
Build and execution
- Build specification
- Environment builder
src/lib/block.ml - Build cache
src/lib/build_cache.ml - Built environment
- Interactive shell
src/lib/run_block.ml - Build outputs
Configuration and stores
- CLI configuration
src/lib/config.ml - Build store
docs/zfs.md
Other components
- User
Connections 20
- User → Shark CLI: invokes
- Shark CLI → CLI configuration: loads defaults
- Shark CLI → Environment builder: requests build
- Build specification → Environment builder: defines build
- Environment builder → Build cache: uses cache
- Environment builder → Build store: builds in
- Environment builder → Built environment: produces
- Shark CLI → Interactive shell: requests shell
- Interactive shell → Build store: uses build
- User → Markdown document: provides
- Shark CLI → Template expansion: runs template
- Template expansion → Markdown document: expands variables
- Template expansion → Generated documents: generates
- Shark CLI → Markdown conversion: processes Markdown
- Markdown conversion → Build and run blocks: converts to
- Build and run blocks → Environment builder: build blocks
- Build and run blocks → Interactive shell: run blocks
- Interactive shell → Build outputs: tracks outputs
- Build and run blocks → Publish outputs: publish blocks
- Publish outputs → Build outputs: exports