Files
Npm-cli/README.md
brasse e45fb9b4fd Add one-line installer + install.sh, richer release notes
install.sh detects arch, downloads the latest binary and installs it to PATH
(like a `curl … | sh` installer). The release workflow now ships install.sh as
an asset and PATCHes the release body with the one-line install command, so the
release page shows how to install with a single command. README/wiki updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011YPrEZVBpPVoCRyJz2exkZ
2026-07-04 14:38:27 +02:00

74 lines
2.4 KiB
Markdown

# npmctl
En liten CLI i Rust för att styra **Nginx Proxy Manager (NPM)** via dess API,
plus en generisk `api`-funktion för att prata med vilket HTTP-API som helst
(framtidssäkring om proxyn byts ut mot t.ex. Caddy/Traefik).
Autentisering fungerar som `sudo`: kör `npmctl login` **en gång** och skriv
lösenordet i prompten (det når aldrig argv/loggar). En kortlivad token cachas
lokalt (`~/.config/npmctl/session.json`, `0600`) och används tills den går ut —
lösenordet sparas aldrig.
👉 **Användning och alla kommandon:** se [wiki:n](https://gitea.brasse-pc.eu/brasse/Npm-cli/wiki).
## Installera
En rad (hämtar senaste binär för din arkitektur och lägger den i PATH):
```sh
curl -fsSL https://gitea.brasse-pc.eu/brasse/Npm-cli/raw/branch/main/install.sh | sh
```
Miljövariabler: `NPMCTL_INSTALL_DIR` (installkatalog), `NPMCTL_VERSION` (release-tag).
Eller manuellt från [releases](https://gitea.brasse-pc.eu/brasse/Npm-cli/releases):
```sh
curl -fsSL -o npmctl https://gitea.brasse-pc.eu/brasse/Npm-cli/releases/download/latest/npmctl-linux-x64
chmod +x npmctl && sudo mv npmctl /usr/local/bin/
npmctl --help
```
## Sätt upp projektet (utveckling)
Krav: [Rust](https://rustup.rs) (stable).
```sh
git clone https://gitea.brasse-pc.eu/brasse/Npm-cli.git
cd Npm-cli
cargo build --release # binär i target/release/npmctl
cargo run -- --help
```
### Bygga till ./build
I VS Code: **Terminal → Run Build Task** (`Ctrl+Shift+B`) kör tasken
*build (release -> ./build)*, som bygger utanför repo-disken och lägger binären
i `build/npmctl`. Mappen `build/` (och `target/`) är gitignoread.
Motsvarande manuellt:
```sh
CARGO_TARGET_DIR="$HOME/.cache/npmctl-target" cargo build --release
mkdir -p build && cp "$HOME/.cache/npmctl-target/release/npmctl" build/npmctl
```
## Releaser
Push till `main` (eller en `v*`-tag) triggar Gitea Actions-workflowen
`.gitea/workflows/release.yaml`, som bygger binärer för **linux-x64** och
**linux-arm64** och laddar upp dem till en release. Runnern använder sin egen
`GITHUB_TOKEN` — ingen token hanteras manuellt.
## Konfiguration
| Var | Beskrivning |
|-----|-------------|
| `--base-url` / `NPMCTL_BASE_URL` | NPM:s API-bas, t.ex. `http://127.0.0.1:81`. Standard: `http://127.0.0.1:81`. |
| `~/.config/npmctl/config.json` | Icke-hemligt: `base_url`, `identity`, `idle_timeout`. |
| `~/.config/npmctl/session.json` | Cachad token (`0600`). Skapas av `login`, raderas av `logout`. |
## Licens
MIT.