98 lines
2.0 KiB
Markdown
98 lines
2.0 KiB
Markdown
# CLI
|
|
|
|
`nexus-cli` is a small non-interactive CLI for the nexus-sync server API.
|
|
|
|
## Install for development
|
|
|
|
```bash
|
|
pip install -e .
|
|
nexus-cli --help
|
|
```
|
|
|
|
The default server URL is `http://127.0.0.1:5852`. Override it with
|
|
`--server-url` or `-s`.
|
|
|
|
## List clients
|
|
|
|
```bash
|
|
nexus-cli --list
|
|
```
|
|
|
|
## Show client info
|
|
|
|
```bash
|
|
nexus-cli client linux-client
|
|
```
|
|
|
|
The output includes basic client metadata and advertised `available_commands`.
|
|
|
|
## Queue a command for a client
|
|
|
|
```bash
|
|
nexus-cli client linux-client --run-command hostname
|
|
nexus-cli client linux-client --run-command hostname --timeout-seconds 30
|
|
```
|
|
|
|
Payload shape:
|
|
|
|
```json
|
|
{
|
|
"name": "hostname",
|
|
"args": {},
|
|
"timeout_seconds": 30
|
|
}
|
|
```
|
|
|
|
## Show command execution info
|
|
|
|
```bash
|
|
nexus-cli command cmd_123
|
|
```
|
|
|
|
If the client has reported a result, stdout and stderr are printed.
|
|
|
|
## JSON output
|
|
|
|
Use `--json` for machine-readable output:
|
|
|
|
```bash
|
|
nexus-cli --json --list
|
|
nexus-cli --json client linux-client
|
|
nexus-cli --json command cmd_123
|
|
```
|
|
|
|
## Localization
|
|
|
|
CLI output is localized with `gettext` (catalogs managed by Babel). Only
|
|
user-facing CLI strings are translatable; daemon/server log messages are
|
|
deliberately left untranslated.
|
|
|
|
Select a language with the `NEXUS_SYNC_LANG` env var (falls back to the system
|
|
locale, then to the source English strings):
|
|
|
|
```bash
|
|
NEXUS_SYNC_LANG=ru nexus-cli command cmd_123
|
|
```
|
|
|
|
Translation sources live in `src/nexus_sync/locale/<lang>/LC_MESSAGES/nexus.po`.
|
|
Workflow (requires `pip install -e ".[dev]"`):
|
|
|
|
```bash
|
|
make i18n-extract # rebuild the .pot template from _()-wrapped strings
|
|
make i18n-update # merge new/changed strings into existing catalogs
|
|
make i18n-init LANG=de # start a new language
|
|
# edit the .po file, then:
|
|
make i18n-compile # build the .mo files shipped with the binary
|
|
```
|
|
|
|
`make cli` compiles catalogs automatically and bundles them into the binary.
|
|
|
|
## Build standalone binary
|
|
|
|
```bash
|
|
make cli
|
|
```
|
|
|
|
This creates `dist/nexus-cli` through PyInstaller (with localization catalogs
|
|
bundled via `--add-data`).
|