link-cli 0.2.7

A CLI tool and reusable library for links manipulation backed by a LiNo-notation doublet storage engine.
Documentation

link-cli Rust Package

Rust CI/CD Pipeline Crates.io Docs.rs GitHub Release

This directory contains the Rust link-cli crate, which publishes both a reusable [lib] (link_cli) and the clink [[bin]] from the same package. It mirrors the core query processor, named references, LiNo import/export, and structure formatting used by the production C# tool. The WebAssembly wrapper crate lives in rust/wasm/ and depends on this package.

Install

# Build and install the CLI binary.
cargo install link-cli
# Or pull in the public API to build your own tooling.
cargo add link-cli

API documentation for every published version is hosted on docs.rs/link-cli. A copy is also published to GitHub Pages alongside the C# DocFX site by .github/workflows/docs.yml.

Use

clink '() ((1 1))' --changes --after

Optional Transactions and Version Control

Pass --transactions (or any flag in the family — --transactions-file, --commit-mode, --retention, --log) to record each Create/Update/Delete as a reversible transition in a sidecar doublets store. Pass --vc (or --vc-file, --branch, --branch-from, --checkout, --tag, --list-branches, --list-tags) to add a version-control layer over the recorded transitions log:

# Record reversible transitions into data.transitions.links
clink --db data.links --transactions --auto-create-missing-references '() ((1 1))'
clink --db data.links --log

# Branch and tag on top of the transitions log
clink --db data.links --vc --tag v1
clink --db data.links --vc --branch feature --branch-from 1
clink --db data.links --vc --list-branches

End-to-end demo scripts live in examples/transactions/ and examples/version-control/.

Develop

cargo fmt --manifest-path rust/Cargo.toml --all -- --check
cargo clippy --manifest-path rust/Cargo.toml --all-targets --all-features
cargo test --manifest-path rust/Cargo.toml --all-features

Release automation for this package lives in rust/scripts/ and uses changelog fragments from rust/changelog.d/.