7 releases
| 0.2.3 | Sep 27, 2025 |
|---|---|
| 0.2.2 | Sep 24, 2025 |
| 0.1.4 | Sep 24, 2025 |
#416 in Filesystem
106 downloads per month
63KB
1.5K
SLoC
kugiri
Marker-based block editing CLI for maintaining sections in text files.
Installation
Quick Install
Install the latest release:
curl -sSfL https://github.com/actionutils/kugiri/releases/latest/download/install.sh | sh
Or run without installation:
# Pass arguments to kugiri (use -s -- to pass arguments)
curl -sSfL https://github.com/actionutils/kugiri/releases/latest/download/run.sh | sh -s -- update --help
Install Specific Version
VERSION="v0.2.3"
curl -sSfL https://github.com/actionutils/kugiri/releases/download/${VERSION}/install.sh | sh
Secure Installation with Verification
For enhanced security, verify the installation scripts before executing them.
🔒 Verify latest version with Cosign
SCRIPT="install.sh" # or "run.sh"
DOWNLOAD_URL="https://github.com/actionutils/kugiri/releases/latest/download"
curl -sL "${DOWNLOAD_URL}/${SCRIPT}" | \
(tmpfile=$(mktemp); cat > "$tmpfile"; \
cosign verify-blob \
--certificate-identity-regexp '^https://github.com/actionutils/trusted-go-releaser/.github/workflows/trusted-release-workflow.yml@.*$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate "${DOWNLOAD_URL}/${SCRIPT}.pem" \
--signature "${DOWNLOAD_URL}/${SCRIPT}.sig" \
"$tmpfile" && \
sh "$tmpfile"; rm -f "$tmpfile")
🔒 Verify specific version with Cosign
VERSION="v0.2.3"
SCRIPT="install.sh" # or "run.sh"
DOWNLOAD_URL="https://github.com/actionutils/kugiri/releases/download/${VERSION}"
curl -sL "${DOWNLOAD_URL}/${SCRIPT}" | \
(tmpfile=$(mktemp); cat > "$tmpfile"; \
cosign verify-blob \
--certificate-identity-regexp '^https://github.com/actionutils/trusted-go-releaser/.github/workflows/trusted-release-workflow.yml@.*$' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--certificate "${DOWNLOAD_URL}/${SCRIPT}.pem" \
--signature "${DOWNLOAD_URL}/${SCRIPT}.sig" \
"$tmpfile" && \
sh "$tmpfile"; rm -f "$tmpfile")
🔒 Verify latest version with GitHub CLI
curl -sL "https://github.com/actionutils/kugiri/releases/latest/download/install.sh" | \
(tmpfile=$(mktemp); cat > "$tmpfile"; \
gh attestation verify --repo=actionutils/kugiri \
--signer-workflow='actionutils/trusted-go-releaser/.github/workflows/trusted-release-workflow.yml' \
"$tmpfile" && \
sh "$tmpfile"; rm -f "$tmpfile")
🔒 Verify specific version with GitHub CLI
VERSION="v0.2.3"
curl -sL "https://github.com/actionutils/kugiri/releases/download/${VERSION}/install.sh" | \
(tmpfile=$(mktemp); cat > "$tmpfile"; \
gh attestation verify --repo=actionutils/kugiri \
--signer-workflow='actionutils/trusted-go-releaser/.github/workflows/trusted-release-workflow.yml' \
"$tmpfile" && \
sh "$tmpfile"; rm -f "$tmpfile")
Install from crates.io
If you have Rust and Cargo installed:
cargo install kugiri
Usage
kugiri uses markers to identify sections in files:
<!-- KUGIRI-BEGIN: {id} -->- Start of a section<!-- KUGIRI-END: {id} -->- End of a section<!-- KUGIRI-INSERT: {id} -->- Insertion point marker
Commands
Insert
Add a new section before or after an existing marker:
# Insert after a marker
kugiri insert CHANGELOG.md --id v1.0.0 --after HEADER --body-file release.md -w
# Insert before a marker with content from stdin
echo "New content" | kugiri insert README.md --id section1 --before footer
Update
Replace the content of an existing section:
# Update section from file
kugiri update README.md --id help-section --body-file help.txt -w
# Update from stdin
generate-help | kugiri update README.md --id help-section -w
Remove
Remove a section and its markers:
kugiri remove README.md --id deprecated-section -w
Extract
Print the content of a section (without markers):
kugiri extract README.md --id help-section > help.txt
Trim
Remove all KUGIRI markers from a file:
kugiri trim README.md > clean.md
Wrap
Wrap content with KUGIRI markers:
# Wrap stdin content
echo "Some content" | kugiri wrap --id section-name
# Wrap content from a file
kugiri wrap --id section-name --body-file content.txt
Options
-w, --write: Write changes in-place (default: output to stdout)--body-file <PATH|->: Content source file (default:-for stdin)--before <ID>: Insert before this marker ID--after <ID>: Insert after this marker ID--id <ID>: Section identifier
Examples
Managing a CHANGELOG
# First release
echo "## v1.0.0 - Initial release" | kugiri insert CHANGELOG.md \
--id v1.0.0 --after HEADER -w
# Subsequent releases
echo "## v1.1.0 - Bug fixes" | kugiri insert CHANGELOG.md \
--id v1.1.0 --after v1.0.0 -w
Updating generated documentation
# Generate and update help section
./generate-help.sh | kugiri update README.md --id CLI-HELP -w
# Extract for separate file
kugiri extract README.md --id CLI-HELP > docs/cli.md
License
MIT
Dependencies
~2.9–8MB
~166K SLoC