| Crates.io | nuch |
| lib.rs | nuch |
| version | 1.3.6 |
| created_at | 2025-12-21 21:05:13.756512+00 |
| updated_at | 2025-12-27 01:11:38.425183+00 |
| description | A CLI to manage Markdown content and images for Nuxt Content sites. |
| homepage | https://github.com/rivethorn/nuch |
| repository | https://github.com/rivethorn/nuch |
| max_upload_size | |
| id | 1998594 |
| size | 226,890 |
A small CLI to help manage Markdown content and associated images for Nuxt Content sites.
Supports all file types handled by Nuxt Content (Markdown, YAML, JSON, CSV).
You can install via homebrew:
brew install rivethorn/tap/nuch
You can also install via cargo:
cargo install nuch
or you can install prebuilt binaries via shell script:
Unix/Linux/macOS:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rivethorn/nuch/releases/download/v1.3.5/nuch-installer.sh | sh
Windows (PowerShell):
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rivethorn/nuch/releases/download/v1.3.5/nuch-installer.ps1 | iex"
You can also download the binary from Releases
Requirements: Rust toolchain (cargo), and system git on PATH.
Build and run:
# Build
cargo build --release
# Run (shows help)
cargo run -- --help
# Create a sample config
# Unix/Linux/macOS: writes to XDG_CONFIG_HOME/nuch/config.toml or ~/.config/nuch/config.toml
# Windows: writes to %LOCALAPPDATA%\nuch\config.toml (typically C:\Users\<username>\AppData\Local\nuch\config.toml)
cargo run -- --config
# Publish (interactive): selects a supported file from your configured working dir
nuch publish
# Delete (interactive): select a published post to remove
nuch delete
[!WARNING] The tool requires a valid config file:
- Unix/Linux/macOS:
XDG_CONFIG_HOME/nuch/config.tomlor~/.config/nuch/config.toml- Windows:
%LOCALAPPDATA%\nuch\config.toml(typicallyC:\Users\<username>\AppData\Local\nuch\config.toml)Use
--configto generate a sample.
The config describes your working and publishing directories and optional image directories. Example sample written by --config:
[working]
files = "Documents/writings"
images = "Documents/writings/images"
[[collection]]
name = "writing"
files = "your-site/content"
images = "your-site/public/images"
[[collection]]
name = "blogs"
files = "your-site/content/blogs"
# images omitted — optional
content directory (where published files should be copied).The tool validates that working and collection exist, and that working contains at least one file that's supported by Nuxt Content.
Main modules:
src/config.rs — config parsing and validationsrc/fs.rs — filesystem helpers (copy, backup, image matching)src/publish.rs — publish/delete flows (interactive); includes test-only non-interactive helperssrc/git.rs — git wrapper helperssrc/ui.rs — user prompts & listingCode style: Rust 2024 edition, uses clap for CLI and inquire for interactive prompts.
Open a PR or issue for bug fixes or feature ideas. Add tests for any changes that touch behavior.