Skip to content

Latest commit

 

History

History

cli

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

vlajmaji-cli

This checkout is on the 0.3.0 development cycle. The dependency and installation examples below target the published 0.2.0 release.

The vlajmaji JSON command for Vlajmaji's dictionary workbench.

For a source checkout, run these commands from the workspace root with Bauske checked out alongside Vlajmaji:

make build
./bin/vlajmaji --help

Use make build-release for an optimized build, or override INSTALL_DIR to choose where the binary is copied. To install the published command, run cargo install vlajmaji-cli --version 0.2.0 --locked. Version 0.1.0 used the previous relojban-search command.

Requires Rust 1.98 or newer. Commands build a new SQLite store directory from a lexical archive, report corpus counts, and accept query JSON through an argument or standard input. Compound analysis and generation are enabled in the CLI.

The additive dictionary-build INPUT.json [STORE] command builds a validated grouped-dictionary store from versioned dictionary JSON. dictionary-query [STORE] [--request JSON] accepts exact or typed-reference requests on the argument or stdin. info [STORE] reports counts for either the grouped dictionary or the legacy archive store. When STORE is omitted, these commands use $XDG_DATA_HOME/vlajmaji/stores/default; if XDG data home is unset, empty, or relative, they fall back to $HOME/.local/share/vlajmaji/stores/default. An explicit store always wins. The default location is intended for a future dictionary-of-dictionaries; the initial Lensisku-only store is provisional. Build creates missing default parent directories privately but never replaces an existing store. Query and info do not create or download a store. New-command runtime errors emit a structured JSON object to stderr, no stdout, and a nonzero exit. See the grouped dictionary query guide.

verify CHECK [STORE] runs one explicit read-only store check (schema, metadata, hashes, model, fks, projection, or all). Ordinary open, query, and info check only the minimum header; they do not establish full store integrity. all reports six ordered result rows. A failed check exits nonzero, leaves stdout empty, and writes both its structured error and complete report to stderr.

collections register|install|migrate|update|rebuild|remove|reinstall|reconcile|list|inspect ROOT manages an explicit local source catalogue. Registration stores typed source and reference metadata without copying release payloads. Installation creates one verified Unified generation; it never changes the default store or source selection. Manifest paths resolve beside the manifest, and selected inputs are read locally with the existing pack adapters. Synthetic packs require --allow-synthetic. A compatible version-1 catalogue requires explicit collections migrate ROOT --expected-revision N before writes. update uses the same selected manifest or sealed inputs as install and replaces only currently installed selected packs at the expected local revision. rebuild uses retained sealed inputs to publish a new derived generation at the expected revision. These commands do not change profile membership or the global default; remove ROOT --pack ID... --expected-revision N removes active membership while retaining source registrations, owned sealed inputs, and history. reinstall uses the exact retained --release-sha256 with the ordinary sealed input or manifest options and an expected revision. reconcile ROOT explicitly observes SQLite physical recovery, attempts, and minimum derived-store state; it neither activates a generation nor performs a full audit. See the collection guide for commands, strict manifest fields, state semantics, and structured failures.

collections configure, collections enable, collections disable, collections default, collections profiles, and collections selection manage a separate versioned user configuration. They accept --config; when omitted, the CLI resolves XDG_CONFIG_HOME/vlajmaji/config.toml, falling back to HOME/.config/vlajmaji/config.toml. A profile stores one catalogue ROOT, ordered default pack membership, and independent disabled packs. lookup WORD uses that profile and accepts --source, --page-size, and --cursor; a full typed request can instead be supplied with --request or stdin. The managed cursor binds the observed profile/catalogue/generation/selection snapshot. collections configure updates membership while preserving a profile's existing disabled packs; newly created profiles start with none. Explicit library profile requests can deliberately replace the disabled list. enable and disable change only selected members, while default --profile sets and default --clear clears the configured default. Partial policy writes read the latest config under its writer lock and report only changed member IDs; semantic no-ops retain the original bytes and revision.

owned init ROOT [--input FILE], owned edit ROOT --expected-head REV [--input FILE], owned head ROOT, owned history ROOT, and owned show ROOT [--revision REV] operate on one explicit append-only owned dictionary journal. Init and edit accept complete typed dictionary JSON from a file or stdin; they never consult configuration or the default store. Each edit appends one revision only when its expected head is still current. Head/history report checked summaries, while show reconstructs and validates the selected full state. See the owned journal guide. After explicit migration, owned curate ROOT --expected-head REV [--input FILE] appends a validated complete curation document, while owned curation-show ROOT [--revision REV] reads the retained document without resolving it. owned materialize ROOT [--revision REV] [--context FILE ...] --output FILE computes a separate view from the exact supplied context files; each file contains its declared pin ID and complete typed Dictionary. Output is created exclusively after materialization succeeds. The owned dictionary guide includes a self-generated Tiny example and derived-query workflow. owned export ROOT --output FILE --seal FILE writes a canonical sealed full history; owned check --input FILE --seal FILE validates it without opening a journal, owned import ROOT --input FILE --seal FILE imports into a fresh explicit root or recognizes an exact replay, and owned snapshot-model writes one selected historical Dictionary. These commands report native paths and exact byte counts and SHA-256 values. See the sealed-history recipe. dictionary-query STORE --format compact --request JSON and lookup --format compact --request JSON opt into compact Exact/Resolve output; both commands still default to the established full response. Resolve a returned key with dictionary-detail STORE --reference JSON [--expected-snapshot SHA] or lookup-detail --reference JSON [--expected-snapshot SHA]. Detail keys are strict versioned JSON and include required nullable fields. The optional snapshot token detects a mismatch with the compact query view; it is not an authenticity proof for an ordinary-open store. Standalone compact dictionary-query writes the selected Exact or Resolve response object directly at the JSON root. Configured lookup keeps its managed envelope and operation-tagged result. --format readable is available on both query commands and their detail commands. It writes deterministic source-grouped text from the same compact typed response; Full JSON stays the default, and compact JSON remains unchanged. Detail commands accept Full or Readable; Compact is not a detail format. This layer does not alter dictionary-query STORE or the global default-store route, and a selected installed payload that fails its minimum open is reported as an error rather than as metadata-only availability.

jbotci-import RAW METADATA FRESH.json locally normalizes a hash-pinned export; jbotci-check RAW METADATA [--release RELEASE.json] validates it without writing. make jbotci-acquire, jbotci-replay, jbotci-check, and jbotci-update provide the explicit pinned local workflow; each requires a caller-chosen cache root and fresh release/store paths where applicable. See the jbotci import guide for pins, preservation, identity, metadata, and content-notice limits.

Corpus data is not bundled. See the data and replay guide for the current research-input workflow. Licensed under Apache-2.0.

data-pack fixture jbotci OUTPUT prepares an explicitly synthetic three-row pack through the real importer for local feature checks and CI. data-pack materialize jbotci RAW METADATA OUTPUT verifies caller-supplied pins and supplier accounting, then writes canonical release, seal, and report files into a fresh directory. It only reads the paths supplied by the caller; it does not fetch data, overwrite an output, or build a store. The embedded data crate has no default payload and is unpublished; its ignored local data must be prepared before selecting that feature. A synthetic fixture is not the full source distribution.

The optional LLG list-family package uses the same local-only workflow: data-pack fixture llg OUTPUT creates a Synthetic fixed-column example, while data-pack materialize llg GISMU CMAVO RAFSI NOTICE OUTPUT reads four files supplied by the caller and verifies their complete bytes against the default published-pin hashes. --gismu-sha256, --cmavo-sha256, --rafsi-sha256, --notice-sha256, and --base-locator override those defaults for a different explicitly identified input set. The command never downloads files, replaces an existing output directory, or writes a dictionary store. The full LLG payload is not committed or published; its notice and redistribution status remain separate from the Apache-2.0 code license.

The optional La-Lojban pack uses the same local-only workflow: data-pack fixture la-lojban OUTPUT prepares a clearly Synthetic example, and data-pack materialize la-lojban RAW_JSON OUTPUT checks the pinned complete input before writing a Full local release, report, and seal. --revision, --raw-sha256, --raw-locator, and --notice-locator identify the input and its provenance. The new data package is unpublished, has no default payload, and keeps content redistribution Held until its terms are verified.

The optional Sutysisku projection pack is prepared the same way: data-pack fixture sutysisku OUTPUT creates a Synthetic example, while data-pack materialize sutysisku RAW_JSON OUTPUT checks the caller-provided complete-byte pin before writing a Full local release, report, and seal. --revision, --raw-sha256, --raw-locator, and --notice-locator identify the input and its provenance. The package is unpublished and has no default payload; content redistribution remains Held because the upstream lexical lineage and data terms are unresolved.