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/nuchYou can also install via cargo:
cargo install nuchor 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 | shWindows (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
giton 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 deleteWarning
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 --config to 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- working files (required): directory containing your drafts/ready-for-publish supported files.
- working images (optional): directory holding images referenced by your working Content file.
- collection name (required): unique name for the collection (e.g., "content", "writing").
- collection files (required): your predefined collection directory, usually inside
contentdirectory (where published files should be copied). - collection images (optional): directory under the site where images are stored.
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 & listing
-
Code style: Rust 2024 edition, uses
clapfor CLI andinquirefor interactive prompts.
Open a PR or issue for bug fixes or feature ideas. Add tests for any changes that touch behavior.