How fromwau/klap works
klap is a reflection-free Kotlin Multiplatform CLI framework. A program declares a command tree and typed inputs with its builder DSL; argv is parsed into a typed invocation, then the selected action runs or a built-in response is rendered. The graph also preserves the documented help, completion, generated-docs, structured-JSON, validation, and error capabilities. Several rendering and execution paths are documented but not excerpted, so those edges cite the README; internal links use the source index or excerpts where available.
Main entry points: Runner.kt Run and exit · Parser.kt Parse orchestration · BuilderImpl.kt Builder implementation · Cli.kt CLI tree
Components 22
Command declaration
- Builder DSL
klap/src/commonMain/kotlin/com/fromwau/klap/CommandBuilder.kt - Builder implementation
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderImpl.kt - Tree validation
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderValidation.kt - Command and input specs
klap/src/commonMain/kotlin/com/fromwau/klap/internal/spec/HolderSpec.kt - CLI tree
klap/src/commonMain/kotlin/com/fromwau/klap/Cli.kt
Argument parsing
- Parse orchestration
klap/src/commonMain/kotlin/com/fromwau/klap/Parser.kt - Token scanning
klap/src/commonMain/kotlin/com/fromwau/klap/internal/parse/ArgvScan.kt - Name matching
klap/src/commonMain/kotlin/com/fromwau/klap/internal/parse/NameMatch.kt - Input resolution
klap/src/commonMain/kotlin/com/fromwau/klap/internal/parse/Sifted.kt - Value binding
klap/src/commonMain/kotlin/com/fromwau/klap/internal/parse/Bind.kt
Execution and results
- Resolved invocation
klap/src/commonMain/kotlin/com/fromwau/klap/Invocation.kt - Action scope
klap/src/commonMain/kotlin/com/fromwau/klap/ActionScope.kt - Run and exit
klap/src/commonMain/kotlin/com/fromwau/klap/Runner.kt - Typed CLI errors
klap/src/commonMain/kotlin/com/fromwau/klap/CliError.kt
Built-in output
- Help rendering
klap/src/commonMain/kotlin/com/fromwau/klap/internal/render/Help.kt - Shell completion
klap/src/commonMain/kotlin/com/fromwau/klap/Completion.kt - Completion output
klap/src/commonMain/kotlin/com/fromwau/klap/internal/render/Completion.kt - Generated docs
klap/src/commonMain/kotlin/com/fromwau/klap/internal/render/Docs.kt - JSON output
klap/src/commonMain/kotlin/com/fromwau/klap/internal/render/Json.kt
Other components
- CLI author
- Command-line user
- Terminal
Connections 23
- CLI author → Builder DSL: declares commands
- Builder DSL → Builder implementation: delegates to
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderImpl.kt - Builder implementation → Tree validation: validates tree
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderImpl.kt - Builder implementation → Command and input specs: creates specs
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderImpl.kt - Builder implementation → CLI tree: builds tree
klap/src/commonMain/kotlin/com/fromwau/klap/internal/builder/BuilderImpl.kt - Command-line user → CLI tree: supplies arguments
- CLI tree → Parse orchestration: parses input
klap/src/commonMain/kotlin/com/fromwau/klap/Parser.kt - Parse orchestration → Token scanning: scans tokens
klap/src/commonMain/kotlin/com/fromwau/klap/Parser.kt - Token scanning → Name matching: matches names
klap/src/commonMain/kotlin/com/fromwau/klap/internal/parse/ArgvScan.kt - Parse orchestration → Input resolution: resolves inputs
- Parse orchestration → Value binding: binds values
- Parse orchestration → Resolved invocation: returns invocation
klap/src/commonMain/kotlin/com/fromwau/klap/Parser.kt - Parse orchestration → Typed CLI errors: returns errors
klap/src/commonMain/kotlin/com/fromwau/klap/Parser.kt - Resolved invocation → Action scope: carries scope
klap/src/commonMain/kotlin/com/fromwau/klap/Invocation.kt - CLI tree → Run and exit: runs command
- Run and exit → Action scope: executes action
- Run and exit → Help rendering: renders help
- Run and exit → Shell completion: handles completion
- Shell completion → Completion output: renders candidates
klap/src/commonMain/kotlin/com/fromwau/klap/Completion.kt - Run and exit → Generated docs: renders docs
- Run and exit → JSON output: renders JSON
- Help rendering → Terminal: styles output
- Run and exit → Terminal: writes output