🦀doksnet
CI ReadyFastSecure
A Rust CLI tool for documentation ↔ code mapping verification. Create lightweight symbolic links between documentation sections and code snippets, then verify that both sides stay synchronized using cryptographic hashes.
🚀Installation
From crates.io (Recommended)
cargo install doksnetFrom GitHub Releases
Download pre-built binaries from GitHub Releases:
- Linux:
doksnet-linux-amd64 - Windows:
doksnet-windows-amd64.exe - macOS:
doksnet-macos-amd64(Intel) ordoksnet-macos-arm64(Apple Silicon)
From Source (Development)
git clone https://github.com/Pulko/doksnetcd doksnetcargo install --path .📋Commands Overview
| Command | Purpose | Interactive | CI/CD Safe |
|---|---|---|---|
| new | Initialize a .doks file | Yes | No |
| add | Create doc↔code mappings | Yes | No |
| edit <id> | Edit specific mapping | Yes | No |
| remove-failed | Remove all failed mappings | Yes | No |
| test | Verify all mappings | No | Yes |
| test-interactive | Test with guided fixing | Yes | No |
🛠Usage Guide
1. Initialize Project
# Create .doks file in current directorydoksnet new# Create .doks file in specific directory doksnet new /path/to/projectWhat it does:
- Scans for documentation files (README.md, etc.)
- Prompts you to select default documentation file
- Creates
.doksconfiguration file
2. Create Documentation-Code Mappings
doksnet addInteractive flow:
- Documentation partition:
README.md:15-25orREADME.md:10-20@5-30 - Content preview: Shows extracted documentation text
- Confirmation: Verify the selection is correct
- Code partition:
src/lib.rs:45-60orsrc/main.rs:10-25@10-50 - Content preview: Shows extracted code text
- Confirmation: Verify the selection is correct
- Description: Optional description for the mapping
- Hash generation: Creates Blake3 hashes and saves mapping
3. Edit Existing Mappings
# Edit by ID (first 8 characters sufficient)doksnet edit a1b2c3d4What you can edit:
- Documentation partition reference
- Code partition reference
- Description
- Both partitions at once
Features:
- Shows current values
- Pre-fills input with existing values
- Previews new content before applying
- Updates hashes automatically
4. Test Mappings (CI/CD)
# Non-interactive testing for automationdoksnet testOutput:
- ✅ PASS: Content matches stored hashes
- ❌ FAIL: Content has changed
- Exit code 1 if any mappings fail (perfect for CI/CD)
🚀GitHub Action
Doksnet provides a ready-to-use GitHub Action for seamless CI/CD integration:
Basic Usage
name: Documentation Sync Checkon: [push, pull_request]jobs: verify-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: Pulko/doksnet@v1 # Uses defaults: command='test', fail-on-error=trueAdvanced Configuration
- uses: Pulko/doksnet@v1 with: command: 'test' # Command to run version: 'latest' # Doksnet version working-directory: '.' # Directory to run in fail-on-error: true # Fail workflow on issuesAction Inputs
| Input | Description | Default | Options |
|---|---|---|---|
| command | Doksnet command to run | test | test, remove-failed |
| version | Doksnet version to use | latest | latest, 0.2.0, etc. |
| working-directory | Directory to run doksnet in | . | Any valid path |
| fail-on-error | Fail workflow if issues found | true | true, false |
Benefits
- ✅ Zero setup - No need to install Rust/Cargo
- ⚡ Fast - Cached dependencies, optimized for CI
- 🔧 Flexible - Configurable commands and error handling
- 🌍 Cross-platform - Works on Linux, Windows, macOS
Common Patterns
Enforce Documentation Sync:
- uses: Pulko/doksnet@v1 # Fails CI if docs are out of sync📄Partition Format
Partitions use this lightweight format to reference file ranges:
<relative_path>:<start_line>-<end_line>@<start_col>-<end_col>Examples:
README.md- Entire fileREADME.md:10-20- Lines 10-20README.md:15- Single line 15src/lib.rs:10-20@5-30- Lines 10-20, columns 5-30docs/guide.md:1-5@1-50- First 5 lines, first 50 characters
Notes:
- Line numbers are 1-indexed
- Column numbers are 1-indexed
- Ranges are inclusive
- Non-contiguous ranges require multiple mappings
🎯Use Cases
API Documentation
Link examples in README to actual implementation
Tutorial Sync
Ensure code samples in guides match working code
Architecture Docs
Connect design decisions to code structures
Code Reviews
Verify documentation updates accompany code changes
Legacy Code
Track which docs describe which code sections
Team Collaboration
Maintain consistency across large projects