mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-21 08:02:26 +00:00
4fedfdfd11
* feat(cli): add consistent get/list/new subcommands for all item types Make the CLI consistent so every item type (script, flow, app, resource, resource-type, variable, schedule, folder, trigger) supports get/list/new subcommands, enabling the CLI to be used as a full API client in bash scripts with jq piping. - Add --json flag to all list commands for machine-readable output - Register explicit "list" subcommand alongside default action - Add "get <path> [--json]" subcommand to fetch single items from API - Rename "bootstrap" to "new" for script/flow, keep "bootstrap" as alias - Add "new" subcommand for resource, resource-type, variable, schedule, folder, and trigger to create local template YAML files - Update cli-commands skill documentation for wmill init - Add integration tests for all new commands Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * all * feat: install wmill CLI in Docker images and use it for bash variable/resource access - Install windmill-cli via bun in all Dockerfiles that include bun - DockerfileCli: switch from node:slim to oven/bun:slim - CLI: auto-configure from WM_WORKSPACE/WM_TOKEN/BASE_INTERNAL_URL env vars as last-resort fallback when no workspace is configured - Frontend: replace curl-based bash snippets with wmill variable/resource get - Add backend integration tests for wmill CLI in bash scripts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ci): install windmill-cli in backend test workflow Ensures wmill is available on PATH for bash integration tests that use `wmill variable get` and `wmill resource get`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(cli): replace @std/* Deno dependencies with Node.js equivalents Replace @std/log with a lightweight custom logger (core/log.ts), @std/path with node:path, and @std/yaml with the yaml npm package. Also fix process hang on exit, add --node option to install_dev.sh, and add missing hasRequiredPermissions to NpmProvider. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * all * all * all * refactor(cli): replace @ayonli/jsext and @std/encoding with lightweight alternatives Replace @ayonli/jsext (8.4MB) with tar-stream (32kB) for tar creation, replace @std/encoding with Node.js Buffer.toString("hex"), and fix @windmill-labs/shared-utils to use direct npm instead of JSR mirror. Also resolve merge conflicts in sync.ts and fix pre-existing type errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(cli): use singleQuote YAML output and pass yamlOptions in gitsync pull The yaml library defaults to double quotes, but the codebase (and tests) expect single-quoted strings. Add singleQuote: true to yamlOptions and pass yamlOptions to gitsync-settings pull writeFile calls. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * all * all * fix(cli): address code review feedback - Install CLI from source in backend tests instead of npm - Fix script bootstrap catch block to re-throw "File already exists" - Add type-safe local variable after trigger kind validation - Use created_by instead of policy.on_behalf_of for app get output - Note --kind is recommended for faster trigger lookup in help text - Document node symlink purpose in Dockerfiles Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ci): use /usr/bin for wmill wrapper to ensure it's in PATH Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ci): install wmill to ~/.local/bin to avoid permission issues Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * ci(backend): switch to Blacksmith runner and add cargo caching - Switch from ubicloud-standard-16 to blacksmith-16vcpu-ubuntu-2404 for faster NVMe-backed builds - Add stickydisk for cargo target directory (persistent NVMe cache across runs) - Add cache for cargo registry and git dependencies - Upgrade DuckDB FFI cache from actions/cache@v3 to useblacksmith/cache@v1 - Enable CARGO_INCREMENTAL=1 to benefit from persistent target cache Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix ci --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
70 lines
1.6 KiB
TypeScript
70 lines
1.6 KiB
TypeScript
import { Provider } from "@cliffy/command/upgrade";
|
|
|
|
export type NpmProviderOptions = { main?: string; logger?: any } & (
|
|
| {
|
|
package: string;
|
|
}
|
|
| {
|
|
scope: string;
|
|
name?: string;
|
|
}
|
|
);
|
|
|
|
export class NpmProvider extends Provider {
|
|
name = "npm";
|
|
private readonly repositoryUrl = "https://npmjs.org/";
|
|
private readonly apiUrl = "https://registry.npmjs.org/";
|
|
private readonly packageName?: string;
|
|
|
|
constructor({ main, logger, ...options }: NpmProviderOptions) {
|
|
super({ main, logger });
|
|
|
|
this.packageName = "package" in options ? options.package : options.name;
|
|
}
|
|
|
|
async getVersions(name: string): Promise<any> {
|
|
const response = await fetch(
|
|
new URL(`${this.packageName ?? name}`, this.apiUrl)
|
|
);
|
|
if (!response.ok) {
|
|
throw new Error(
|
|
"couldn't fetch the latest version - try again after sometime"
|
|
);
|
|
}
|
|
|
|
const {
|
|
"dist-tags": { latest },
|
|
versions,
|
|
} = (await response.json()) as NpmApiPackageMetadata;
|
|
|
|
return {
|
|
latest,
|
|
versions: Object.keys(versions).reverse(),
|
|
};
|
|
}
|
|
|
|
getRepositoryUrl(name: string, version?: string): string {
|
|
return new URL(
|
|
`package/${this.packageName ?? name}${version ? `/v/${version}` : ""}`,
|
|
this.repositoryUrl
|
|
).href;
|
|
}
|
|
|
|
getRegistryUrl(name: string, version: string): string {
|
|
return `npm:${this.packageName ?? name}@${version}`;
|
|
}
|
|
|
|
async hasRequiredPermissions(): Promise<boolean> {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
type NpmApiPackageMetadata = {
|
|
"dist-tags": {
|
|
latest: string;
|
|
};
|
|
versions: {
|
|
[version: string]: unknown;
|
|
};
|
|
};
|