* fix: auto-create missing folders during sync push for non-admin users Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: show missing folders in sync push summary before confirmation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: improve sync push folder auto-creation error handling and json output Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: only treat 404 as missing folder in getFolder check Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: remove obsolete Deno compatibility layer from yaml-validator Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore(cli): add @types/bun dev dependency Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(cli): replace auto-create folders with `wmill folder add-missing` command Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(cli): improve folder commands with summary field and simpler push API Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(cli): add confirmation prompt to folder add-missing command Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(cli): simplify missing folder check to use local stat instead of remote API Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * update skills * feat(cli): warn admins but block non-admins on missing folder.meta.yaml Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * cleaning * cleaning * test(cli): add tests for missing folder detection and folder commands - Add tests for `folder new`, `folder push`, `folder add-missing` commands - Add tests for sync push missing folder.meta.yaml detection (admin warning, non-admin block) - Fix getBasePostgresUrl to strip query params (e.g. ?sslmode=disable) from DATABASE_URL - Add createNonAdminUser and runCLIWithToken test utilities to test_backend.ts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(cli): unify runCLICommand with optional token parameter Replace separate runCLIWithToken utility with an optional { workspace?, token? } options object on the existing runCLICommand across all backends. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * own workspace * test(cli): isolate folder_missing_meta tests with per-test workspace * test(cli): shorten isolated workspace id/name for workspace limits * test(cli): archive temp isolated workspaces after each folder test --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
149 lines
3.2 KiB
Markdown
149 lines
3.2 KiB
Markdown
# Windmill CLI
|
|
|
|
A simple CLI allowing interactions with windmill from the command line.
|
|

|
|
|
|
You can find more information in
|
|
[Windmill Docs](https://www.windmill.dev/docs/advanced/cli)
|
|
|
|
## Installation
|
|
|
|
Install the `wmill` CLI tool using `npm install -g windmill-cli`.
|
|
|
|
Update to the latest version using `wmill upgrade`.
|
|
|
|
## Workspaces
|
|
|
|
To get started run `wmill workspace add` or use the instructions from the
|
|
workspace settings.
|
|
|
|
## Running Flows & Scripts
|
|
|
|
Run a script or flow using `wmill flow/script run u/username/path/to/script` and
|
|
pass any inputs using `--data` + Inputs specified as a JSON string or a file
|
|
using `@ <filename>` or stdin using @-.
|
|
|
|
Curl-style syntax using `-d @-` for stdin or `-d @<filename>` is also supported.
|
|
|
|
Flow Steps and Logs will be streamed during execution automatically.
|
|
|
|

|
|
|
|
## Pushing Resources, Scripts & More
|
|
|
|
The CLI can push specifications to a windmill instance. See the
|
|
[examples/](./examples/) folder for formats.
|
|
|
|
## Switch to a different workspace
|
|
|
|
```
|
|
wmill workspace switch <workspace_name>
|
|
```
|
|
|
|
## Sync a workspace
|
|
|
|
### Pull
|
|
|
|
```
|
|
wmill sync pull
|
|
```
|
|
|
|
### Push
|
|
|
|
```
|
|
wmill sync push
|
|
```
|
|
|
|
We recommend using the --yaml option to use yaml instead of json as the encoding
|
|
format. Yaml will be made the default soon.
|
|
|
|
### Pushing individual files
|
|
|
|
You can push individual resources using
|
|
`wmill <type> push <file_name> \<remote_name\>`. This does not require a special
|
|
folder layout or file name, as this is given at runtime.
|
|
|
|
## Listing
|
|
|
|
All commands support listing by just not providing a subcommand, ie
|
|
`wmill script` will result in a list of scripts. Some allow additional options,
|
|
learn about this by specifying `--help`.
|
|
|
|
## User Management
|
|
|
|
You can add & remove users via `wmill user add/remove`, and list them using
|
|
`wmill user`
|
|
|
|
## Pulling
|
|
|
|
You can pull the entire workspace using `wmill pull`
|
|
|
|
## Completion
|
|
|
|
The CLI comes with completions out of the box via `wmill completions <shell>`.
|
|
(Via [cliffy](https://cliffy.io/))
|
|
|
|
### Bash
|
|
|
|
To enable bash completions add the following line to your `~/.bashrc`:
|
|
|
|
```
|
|
source <(wmill completions bash)
|
|
```
|
|
|
|
### Fish
|
|
|
|
To enable fish completions add the following line to your
|
|
`~/.config/fish/config.fish`:
|
|
|
|
```
|
|
source (wmill completions fish | psub)
|
|
```
|
|
|
|
### Zsh
|
|
|
|
To enable zsh completions add the following line to your `~/.zshrc`:
|
|
|
|
```
|
|
source <(wmill completions zsh)
|
|
```
|
|
|
|
## Development
|
|
|
|
### Testing with a local `windmill-yaml-validator`
|
|
|
|
To test local changes to the validator before publishing, use `npm link`:
|
|
|
|
```bash
|
|
# In windmill-yaml-validator/
|
|
npm run build
|
|
npm link
|
|
|
|
# In cli/
|
|
npm link windmill-yaml-validator
|
|
```
|
|
|
|
### Running Tests
|
|
|
|
**Prerequisites:**
|
|
- PostgreSQL running locally (default: `postgres://postgres:changeme@localhost:5432`)
|
|
- Rust toolchain installed
|
|
|
|
**Run tests locally (full features):**
|
|
|
|
```bash
|
|
bun test test/
|
|
```
|
|
|
|
**Run tests in CI mode (minimal features, skips EE tests):**
|
|
|
|
```bash
|
|
CI_MINIMAL_FEATURES=true bun test test/
|
|
```
|
|
|
|
| Variable | Description |
|
|
|----------|-------------|
|
|
| `CI_MINIMAL_FEATURES` | Set to `true` to skip EE-dependent tests |
|
|
| `DATABASE_URL` | PostgreSQL connection string |
|
|
| `EE_LICENSE_KEY` | Enterprise license key for EE features |
|