From 57d59bc90a867b41d374b2b70951527cc3fbe6b8 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sun, 3 Nov 2024 02:37:19 +0100 Subject: [PATCH 01/80] feat(cli): instance yaml files inside the instance prefix folders (#4627) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(cli): instance yaml files inside the instance folders * fix: add opt-in for save instance yamls inside prefixed folders * chore: change baseUrl not needed to opts.baseUrl * do not reassign global const path * set prefix from instance --------- Co-authored-by: Wítallo <15958770+witalloliveira@users.noreply.github.com> --- cli/instance.ts | 43 +++++++++------- cli/settings.ts | 127 ++++++++++++++++++++++++++++++++---------------- cli/user.ts | 72 +++++++++++++++++++-------- 3 files changed, 163 insertions(+), 79 deletions(-) diff --git a/cli/instance.ts b/cli/instance.ts index 1e86282d1a..fb495c714f 100644 --- a/cli/instance.ts +++ b/cli/instance.ts @@ -184,6 +184,7 @@ export type InstanceSyncOptions = { folderPerInstance?: boolean; yes?: boolean; prefix?: string; + prefixSettings?: boolean; }; export async function pickInstance( @@ -265,21 +266,22 @@ async function instancePull(opts: GlobalOptions & InstanceSyncOptions) { log.info("Pulling instance-level changes"); log.info(`remote (${instance.name}) -> local`); + opts.prefix = opts.prefix ?? instance.prefix; let uChanges = 0; if (!opts.skipUsers) { - uChanges = (await pullInstanceUsers(true)) as number; + uChanges = (await pullInstanceUsers(opts, true)) as number; } let sChanges = 0; if (!opts.skipSettings) { - sChanges = (await pullInstanceSettings(true)) as number; + sChanges = (await pullInstanceSettings(opts, true)) as number; } let cChanges = 0; if (!opts.skipConfigs) { - cChanges = (await pullInstanceConfigs(true)) as number; + cChanges = (await pullInstanceConfigs(opts, true)) as number; } let gChanges = 0; if (!opts.skipGroups) { - gChanges = (await pullInstanceGroups(true)) as number; + gChanges = (await pullInstanceGroups(opts, true)) as number; } const totalChanges = uChanges + sChanges + cChanges + gChanges; @@ -295,16 +297,16 @@ async function instancePull(opts: GlobalOptions & InstanceSyncOptions) { if (confirm) { if (!opts.skipUsers && uChanges > 0) { - await pullInstanceUsers(); + await pullInstanceUsers(opts); } if (!opts.skipSettings && sChanges > 0) { - await pullInstanceSettings(); + await pullInstanceSettings(opts); } if (!opts.skipConfigs && cChanges > 0) { - await pullInstanceConfigs(); + await pullInstanceConfigs(opts); } if (!opts.skipGroups && gChanges > 0) { - await pullInstanceGroups(); + await pullInstanceGroups(opts); } } } else { @@ -400,19 +402,19 @@ async function instancePush(opts: GlobalOptions & InstanceSyncOptions) { let uChanges = 0; if (!opts.skipUsers) { - uChanges = (await pushInstanceUsers(true)) as number; + uChanges = (await pushInstanceUsers(opts, true)) as number; } let sChanges = 0; if (!opts.skipSettings) { - sChanges = (await pushInstanceSettings(true, opts.baseUrl)) as number; + sChanges = (await pushInstanceSettings(opts, true)) as number; } let cChanges = 0; if (!opts.skipConfigs) { - cChanges = (await pushInstanceConfigs(true)) as number; + cChanges = (await pushInstanceConfigs(opts, true)) as number; } let gChanges = 0; if (!opts.skipGroups) { - gChanges = (await pushInstanceGroups(true)) as number; + gChanges = (await pushInstanceGroups(opts, true)) as number; } const totalChanges = uChanges + sChanges + cChanges + gChanges; @@ -428,16 +430,16 @@ async function instancePush(opts: GlobalOptions & InstanceSyncOptions) { if (confirm) { if (!opts.skipUsers && uChanges > 0) { - await pushInstanceUsers(); + await pushInstanceUsers(opts); } if (!opts.skipSettings && sChanges > 0) { - await pushInstanceSettings(false, opts.baseUrl); + await pushInstanceSettings(opts); } if (!opts.skipConfigs && cChanges > 0) { - await pushInstanceConfigs(); + await pushInstanceConfigs(opts); } if (!opts.skipGroups && gChanges > 0) { - await pushInstanceGroups(); + await pushInstanceGroups(opts); } } } else { @@ -709,7 +711,10 @@ const command = new Command() "--prefix ", "Prefix of the local workspaces to pull, used to create the folders when using --include-workspaces" ) - + .option( + "--prefix-settings", + "Store instance yamls inside prefixed folders when using --prefix and --folder-per-instance" + ) .action(instancePull as any) .command("push") .description( @@ -730,6 +735,10 @@ const command = new Command() "--prefix ", "Prefix of the local workspaces folders to push" ) + .option( + "--prefix-settings", + "Store instance yamls inside prefixed folders when using --prefix and --folder-per-instance" + ) .action(instancePush as any) .command("whoami") .description("Display information about the currently logged-in user") diff --git a/cli/settings.ts b/cli/settings.ts index f9dbac1fa6..d5feeca100 100644 --- a/cli/settings.ts +++ b/cli/settings.ts @@ -3,8 +3,8 @@ import { Confirm } from "./deps.ts"; import { colors } from "./deps.ts"; import { yamlParseFile } from "./deps.ts"; import { log } from "./deps.ts"; -import { compareInstanceObjects } from "./instance.ts"; -import { isSuperset } from "./types.ts"; +import { compareInstanceObjects, InstanceSyncOptions } from "./instance.ts"; +import { isSuperset, GlobalOptions } from "./types.ts"; import { deepEqual } from "./utils.ts"; import * as wmill from "./gen/services.gen.ts"; import { Config, GlobalSetting } from "./gen/types.gen.ts"; @@ -113,10 +113,10 @@ export async function pushWorkspaceSettings( workspace, requestBody: localSettings.auto_invite_enabled ? { - operator: localSettings.auto_invite_as === "operator", - invite_all: true, - auto_add: localSettings.auto_invite_mode === "add", - } + operator: localSettings.auto_invite_as === "operator", + invite_all: true, + auto_add: localSettings.auto_invite_mode === "add", + } : {}, }); } catch (_) { @@ -128,10 +128,10 @@ export async function pushWorkspaceSettings( workspace, requestBody: localSettings.auto_invite_enabled ? { - operator: localSettings.auto_invite_as === "operator", - invite_all: false, - auto_add: localSettings.auto_invite_mode === "add", - } + operator: localSettings.auto_invite_as === "operator", + invite_all: false, + auto_add: localSettings.auto_invite_mode === "add", + } : {}, }); } @@ -156,7 +156,7 @@ export async function pushWorkspaceSettings( settings.error_handler_extra_args ) || localSettings.error_handler_muted_on_cancel !== - settings.error_handler_muted_on_cancel + settings.error_handler_muted_on_cancel ) { log.debug(`Updating error handler...`); await wmill.editErrorHandler({ @@ -262,30 +262,41 @@ export async function pushWorkspaceKey( const INSTANCE_SETTINGS_PATH = "instance_settings.yaml"; -export async function readInstanceSettings() { +export async function readInstanceSettings( + opts: GlobalOptions & InstanceSyncOptions +) { let localSettings: GlobalSetting[] = []; + let path = INSTANCE_SETTINGS_PATH; + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + path = `${opts.prefix}/${INSTANCE_SETTINGS_PATH}`; + } + try { - localSettings = (await yamlParseFile(INSTANCE_SETTINGS_PATH)) as GlobalSetting[]; + localSettings = (await yamlParseFile(path)) as GlobalSetting[]; } catch { - log.warn(`No ${INSTANCE_SETTINGS_PATH} found`); + log.warn(`No ${path} found`); } return localSettings; } - import { decrypt, encrypt } from "./local_encryption.ts"; -const SENSITIVE_FIELD: string[] = ["license_key", "jwt_secret"] +const SENSITIVE_FIELD: string[] = ["license_key", "jwt_secret"]; -async function processInstanceSettings(settings: GlobalSetting[], mode: "encode" | "decode"): Promise { +async function processInstanceSettings( + settings: GlobalSetting[], + mode: "encode" | "decode" +): Promise { const encKey = process.env.WMILL_INSTANCE_LOCAL_ENCRYPTION_KEY; if (encKey) { - const res: GlobalSetting[] = [] + const res: GlobalSetting[] = []; for (const s of settings) { if (SENSITIVE_FIELD.includes(s.name) && typeof s.value === "string") { - res.push(await processField(s, "value", encKey, mode) as GlobalSetting); + res.push( + (await processField(s, "value", encKey, mode)) as GlobalSetting + ); } else if (s.name == "oauths") { if (typeof s.value === "object") { const oauths = s.value as { [key: string]: any }; @@ -303,24 +314,40 @@ async function processInstanceSettings(settings: GlobalSetting[], mode: "encode" } return res; } else { - log.warn("No encryption key found, skipping encryption. Recommend setting WMILL_INSTANCE_LOCAL_ENCRYPTION_KEY"); + log.warn( + "No encryption key found, skipping encryption. Recommend setting WMILL_INSTANCE_LOCAL_ENCRYPTION_KEY" + ); } return settings; } -async function processField(obj: { [key: string]: any }, field: string, encKey: string, mode: "encode" | "decode"): Promise<{ [key: string]: any }> { +async function processField( + obj: { [key: string]: any }, + field: string, + encKey: string, + mode: "encode" | "decode" +): Promise<{ [key: string]: any }> { return { ...obj, - [field]: mode === "encode" ? await encrypt(obj[field], encKey) : await decrypt(obj[field], encKey) as any, - } + [field]: + mode === "encode" + ? await encrypt(obj[field], encKey) + : ((await decrypt(obj[field], encKey)) as any), + }; } -export async function pullInstanceSettings(preview = false) { +export async function pullInstanceSettings( + opts: GlobalOptions & InstanceSyncOptions, + preview = false +) { const remoteSettings = await wmill.listGlobalSettings(); if (preview) { - const localSettings: GlobalSetting[] = await readInstanceSettings(); - const processedSettings = await processInstanceSettings(remoteSettings, "encode"); + const localSettings: GlobalSetting[] = await readInstanceSettings(opts); + const processedSettings = await processInstanceSettings( + remoteSettings, + "encode" + ); return compareInstanceObjects( processedSettings, localSettings, @@ -330,7 +357,10 @@ export async function pullInstanceSettings(preview = false) { } else { log.info("Pulling settings from instance"); - const processedSettings = await processInstanceSettings(remoteSettings, "encode"); + const processedSettings = await processInstanceSettings( + remoteSettings, + "encode" + ); await Deno.writeTextFile( INSTANCE_SETTINGS_PATH, yamlStringify(processedSettings) @@ -341,19 +371,19 @@ export async function pullInstanceSettings(preview = false) { } export async function pushInstanceSettings( - preview: boolean = false, - baseUrl?: string + opts: GlobalOptions & InstanceSyncOptions, + preview: boolean = false ) { const remoteSettings = await wmill.listGlobalSettings(); - let localSettings: GlobalSetting[] = await readInstanceSettings(); + let localSettings: GlobalSetting[] = await readInstanceSettings(opts); localSettings = await processInstanceSettings(localSettings, "decode"); - if (baseUrl) { + if (opts.baseUrl) { localSettings = localSettings.filter((s) => s.name !== "base_url"); localSettings.push({ name: "base_url", //@ts-ignore - value: baseUrl, + value: opts.baseUrl, }); } @@ -404,18 +434,30 @@ export async function pushInstanceSettings( } } -export async function readLocalConfigs() { +const INSTANCE_CONFIGS_PATH = "instance_configs.yaml"; + +export async function readLocalConfigs( + opts: GlobalOptions & InstanceSyncOptions +) { let localConfigs: Config[] = []; + let path = INSTANCE_CONFIGS_PATH; + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + path = `${opts.prefix}/${INSTANCE_CONFIGS_PATH}`; + } + try { - localConfigs = (await yamlParseFile("instance_configs.yaml")) as Config[]; + localConfigs = (await yamlParseFile(path)) as Config[]; } catch { - log.warn("No instance_configs.yaml found"); + log.warn(`No ${path} found`); } return localConfigs; } -export async function pullInstanceConfigs(preview = false) { +export async function pullInstanceConfigs( + opts: GlobalOptions & InstanceSyncOptions, + preview = false +) { const remoteConfigs = (await wmill.listConfigs()).map((x) => { return { ...x, @@ -424,7 +466,7 @@ export async function pullInstanceConfigs(preview = false) { }); if (preview) { - const localConfigs: Config[] = await readLocalConfigs(); + const localConfigs: Config[] = await readLocalConfigs(opts); return compareInstanceObjects( remoteConfigs, @@ -436,22 +478,25 @@ export async function pullInstanceConfigs(preview = false) { log.info("Pulling configs from instance"); await Deno.writeTextFile( - "instance_configs.yaml", + INSTANCE_CONFIGS_PATH, yamlStringify(remoteConfigs as any) ); - log.info(colors.green("Configs written to instance_configs.yaml")); + log.info(colors.green(`Configs written to ${INSTANCE_CONFIGS_PATH}`)); } } -export async function pushInstanceConfigs(preview: boolean = false) { +export async function pushInstanceConfigs( + opts: GlobalOptions & InstanceSyncOptions, + preview: boolean = false +) { const remoteConfigs = (await wmill.listConfigs()).map((x) => { return { ...x, name: removeWorkerPrefix(x.name), }; }); - const localConfigs = await readLocalConfigs(); + const localConfigs = await readLocalConfigs(opts); if (preview) { return compareInstanceObjects( diff --git a/cli/user.ts b/cli/user.ts index 2ddeb997c9..c955113600 100644 --- a/cli/user.ts +++ b/cli/user.ts @@ -6,7 +6,7 @@ import { removeType, removePathPrefix, } from "./types.ts"; -import { compareInstanceObjects } from "./instance.ts"; +import { compareInstanceObjects, InstanceSyncOptions } from "./instance.ts"; import { colors, Command, @@ -386,47 +386,71 @@ export async function pushGroup( } } -export async function pullInstanceUsers(preview: boolean = false) { +const INSTANCE_USERS_PATH = "instance_users.yaml"; + +export async function pullInstanceUsers( + opts: GlobalOptions & InstanceSyncOptions, + preview: boolean = false +) { const remoteUsers = await wmill.globalUsersExport(); if (preview) { - const localUsers: ExportedUser[] = await readInstanceUsers(); + const localUsers: ExportedUser[] = await readInstanceUsers(opts); return compareInstanceObjects(remoteUsers, localUsers, "email", "user"); } else { log.info("Pulling users from instance..."); await Deno.writeTextFile( - "instance_users.yaml", + INSTANCE_USERS_PATH, yamlStringify(remoteUsers as any) ); - log.info(colors.green("Users written to instance_users.yaml")); + log.info(colors.green(`Users written to ${INSTANCE_USERS_PATH}`)); } } -export async function readInstanceUsers() { +export async function readInstanceUsers( + opts: GlobalOptions & InstanceSyncOptions +) { let localUsers: ExportedUser[] = []; + + let path = INSTANCE_USERS_PATH; + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + path = `${opts.prefix}/${INSTANCE_USERS_PATH}`; + } + try { - localUsers = (await yamlParseFile("instance_users.yaml")) as ExportedUser[]; + localUsers = (await yamlParseFile(path)) as ExportedUser[]; } catch { - log.warn("No instance_users.yaml file found"); + log.warn(`No ${path} file found`); } return localUsers; } -export async function readInstanceGroups() { +const INSTANCE_GROUPS_PATH = "instance_groups.yaml"; + +export async function readInstanceGroups( + opts: GlobalOptions & InstanceSyncOptions +) { let localGroups: InstanceGroup[] = []; + + let path = INSTANCE_GROUPS_PATH; + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + path = `${opts.prefix}/${INSTANCE_GROUPS_PATH}`; + } + try { - localGroups = (await yamlParseFile( - "instance_groups.yaml" - )) as ExportedInstanceGroup[]; + localGroups = (await yamlParseFile(path)) as ExportedInstanceGroup[]; } catch { - log.warn("No instance_groups.yaml file found"); + log.warn(`No ${path} file found`); } return localGroups; } -export async function pushInstanceUsers(preview: boolean = false) { +export async function pushInstanceUsers( + opts: GlobalOptions & InstanceSyncOptions, + preview: boolean = false +) { const remoteUsers = await wmill.globalUsersExport(); - const localUsers: ExportedUser[] = await readInstanceUsers(); + const localUsers: ExportedUser[] = await readInstanceUsers(opts); if (preview) { return compareInstanceObjects(localUsers, remoteUsers, "email", "user"); @@ -440,27 +464,33 @@ export async function pushInstanceUsers(preview: boolean = false) { } } -export async function pullInstanceGroups(preview = false) { +export async function pullInstanceGroups( + opts: GlobalOptions & InstanceSyncOptions, + preview = false +) { const remoteGroups = await wmill.exportInstanceGroups(); if (preview) { - const localGroups = await readInstanceGroups(); + const localGroups = await readInstanceGroups(opts); return compareInstanceObjects(remoteGroups, localGroups, "name", "group"); } else { log.info("Pulling groups from instance..."); await Deno.writeTextFile( - "instance_groups.yaml", + INSTANCE_GROUPS_PATH, yamlStringify(remoteGroups as any) ); - log.info(colors.green("Groups written to instance_groups.yaml")); + log.info(colors.green(`Groups written to ${INSTANCE_GROUPS_PATH}`)); } } -export async function pushInstanceGroups(preview: boolean = false) { +export async function pushInstanceGroups( + opts: GlobalOptions & InstanceSyncOptions, + preview: boolean = false +) { const remoteGroups = await wmill.exportInstanceGroups(); - const localGroups = await readInstanceGroups(); + const localGroups = await readInstanceGroups(opts); if (preview) { return compareInstanceObjects(localGroups, remoteGroups, "name", "group"); From ea40331ab78ed6ab00a42c69240a537e4a02484c Mon Sep 17 00:00:00 2001 From: Henri Courdent <122811744+hcourdent@users.noreply.github.com> Date: Sun, 3 Nov 2024 02:53:40 +0100 Subject: [PATCH 02/80] Deploy UI warning update (#4601) * Deploy UI warning update * Harmonization icons --------- Co-authored-by: Ruben Fiszel --- frontend/src/lib/components/DeployWorkspace.svelte | 2 +- frontend/src/lib/components/common/table/AppRow.svelte | 8 ++++---- frontend/src/lib/components/common/table/FlowRow.svelte | 8 ++++---- frontend/src/lib/components/common/table/RawAppRow.svelte | 4 ++-- frontend/src/lib/components/common/table/ScriptRow.svelte | 7 ++++--- .../(root)/(logged)/flows/get/[...path]/+page.svelte | 4 ++-- .../(root)/(logged)/scripts/get/[...hash]/+page.svelte | 4 ++-- 7 files changed, 19 insertions(+), 18 deletions(-) diff --git a/frontend/src/lib/components/DeployWorkspace.svelte b/frontend/src/lib/components/DeployWorkspace.svelte index 71af286658..d06d330e1d 100644 --- a/frontend/src/lib/components/DeployWorkspace.svelte +++ b/frontend/src/lib/components/DeployWorkspace.svelte @@ -533,7 +533,7 @@ > {:else if notSet == true} As an admin, go to "Workspace {'->'} Dev/Staging/Prod"As an admin, go to Settings {'->'} Workspace {'->'} Deployment UI {:else} { moveDrawer.openDrawer(path, summary, 'app') }, @@ -173,7 +173,7 @@ ? [ { displayName: 'Deploy to staging/prod', - icon: Globe, + icon: ChevronUpSquare, action: () => { deploymentDrawer.openDrawer(path, 'app') }, diff --git a/frontend/src/lib/components/common/table/FlowRow.svelte b/frontend/src/lib/components/common/table/FlowRow.svelte index bb66037e25..9b05924405 100644 --- a/frontend/src/lib/components/common/table/FlowRow.svelte +++ b/frontend/src/lib/components/common/table/FlowRow.svelte @@ -23,8 +23,8 @@ GitFork, Trash, List, - FileUp, - Globe, + FolderOpen, + ChevronUpSquare, Calendar, Share, Archive, @@ -179,7 +179,7 @@ }, { displayName: 'Move/Rename', - icon: FileUp, + icon: FolderOpen, action: () => { moveDrawer.openDrawer(path, flow.summary, 'flow') }, @@ -197,7 +197,7 @@ ? [ { displayName: 'Deploy to staging/prod', - icon: Globe, + icon: ChevronUpSquare, action: () => { deploymentDrawer.openDrawer(path, 'flow') }, diff --git a/frontend/src/lib/components/common/table/RawAppRow.svelte b/frontend/src/lib/components/common/table/RawAppRow.svelte index 087c29f9bf..07c05a43a6 100644 --- a/frontend/src/lib/components/common/table/RawAppRow.svelte +++ b/frontend/src/lib/components/common/table/RawAppRow.svelte @@ -14,7 +14,7 @@ import FileInput from '../fileInput/FileInput.svelte' import { goto } from '$lib/navigation' import type DeployWorkspaceDrawer from '$lib/components/DeployWorkspaceDrawer.svelte' - import { FileUp, Globe, Pen, Share, Trash } from 'lucide-svelte' + import { FolderOpen, Globe, Pen, Share, Trash } from 'lucide-svelte' import { isDeployable } from '$lib/utils_deployable' import { getDeployUiSettings } from '$lib/components/home/deploy_ui' @@ -94,7 +94,7 @@ return [ { displayName: 'Move/Rename', - icon: FileUp, + icon: FolderOpen, action: () => { moveDrawer.openDrawer(path, summary, 'raw_app') }, diff --git a/frontend/src/lib/components/common/table/ScriptRow.svelte b/frontend/src/lib/components/common/table/ScriptRow.svelte index af53bc4387..086091f05c 100644 --- a/frontend/src/lib/components/common/table/ScriptRow.svelte +++ b/frontend/src/lib/components/common/table/ScriptRow.svelte @@ -27,7 +27,8 @@ Code, Copy, Eye, - FileUp, + FolderOpen, + ChevronUpSquare, GitFork, List, Pen, @@ -207,7 +208,7 @@ }, { displayName: 'Move/Rename', - icon: FileUp, + icon: FolderOpen, action: () => { moveDrawer.openDrawer(script.path, script.summary, 'script') }, @@ -218,7 +219,7 @@ ? [ { displayName: 'Deploy to staging/prod', - icon: FileUp, + icon: ChevronUpSquare, action: () => { deploymentDrawer.openDrawer(script.path, 'script') }, diff --git a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte index 64b003a8a8..f91f68b7be 100644 --- a/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/get/[...path]/+page.svelte @@ -27,7 +27,7 @@ FolderOpen, Archive, Trash, - Server, + ChevronUpSquare, Share, Badge, Loader2, @@ -294,7 +294,7 @@ menuItems.push({ label: 'Deploy to staging/prod', onclick: () => deploymentDrawer.openDrawer(flow?.path ?? '', 'flow'), - Icon: Server + Icon: ChevronUpSquare }) } diff --git a/frontend/src/routes/(root)/(logged)/scripts/get/[...hash]/+page.svelte b/frontend/src/routes/(root)/(logged)/scripts/get/[...hash]/+page.svelte index a0523d77d1..b90ed9d2b3 100644 --- a/frontend/src/routes/(root)/(logged)/scripts/get/[...hash]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/scripts/get/[...hash]/+page.svelte @@ -57,7 +57,7 @@ History, Loader2, Pen, - Server, + ChevronUpSquare, Share, Table2, Trash, @@ -407,7 +407,7 @@ if (isDeployable('script', script?.path ?? '', deployUiSettings)) { menuItems.push({ label: 'Deploy to staging/prod', - Icon: Server, + Icon: ChevronUpSquare, onclick: () => { deploymentDrawer.openDrawer(script?.path ?? '', 'script') } From 372f5f4335e4b2598701f33a032e035cfcb44bdb Mon Sep 17 00:00:00 2001 From: Henri Courdent <122811744+hcourdent@users.noreply.github.com> Date: Sun, 3 Nov 2024 02:54:53 +0100 Subject: [PATCH 03/80] Regex Postgres Connection String (#3746) * Regex Postgres Connection String * Fix regex * Fix indentation * Indentation --------- Co-authored-by: Ruben Fiszel --- frontend/src/lib/components/ApiConnectForm.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/lib/components/ApiConnectForm.svelte b/frontend/src/lib/components/ApiConnectForm.svelte index 1155be67ba..680b54850e 100644 --- a/frontend/src/lib/components/ApiConnectForm.svelte +++ b/frontend/src/lib/components/ApiConnectForm.svelte @@ -80,9 +80,8 @@ let connectionString = '' let validConnectionString = true function parseConnectionString(close: (_: any) => void) { - // parse postgres connection string const regex = - /postgres:\/\/(?[^:@]+)(?::(?[^@]+))?@(?[^:\/?]+)(?::(?\d+))?\/(?[^\?]+)?(?:\?.*sslmode=(?[^&]+))?/ + /postgres(?:ql)?:\/\/(?[^:@]+)(?::(?[^@]+))?@(?[^:\/?]+)(?::(?\d+))?\/(?[^\?]+)?(?:\?.*sslmode=(?[^&]+))?/ const match = connectionString.match(regex) if (match) { validConnectionString = true From a1c0f676ca7360c7db279bb1f708d2659a95f487 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sun, 3 Nov 2024 03:09:26 +0100 Subject: [PATCH 04/80] chore(main): release 1.417.0 (#4628) * chore(main): release 1.0.0 * Apply automatic changes * update * Apply automatic changes * Update CHANGELOG.md --------- Co-authored-by: rubenfiszel --- CHANGELOG.md | 4 + backend/Cargo.lock | 200 +++++++++--------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 121 insertions(+), 117 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 111225c3a2..50172562a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.417.0 (2024-11-03) + +* feat(cli): instance yaml files inside the instance prefix folders (#4627) + ## [1.416.2](https://github.com/windmill-labs/windmill/compare/v1.416.1...v1.416.2) (2024-11-02) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index d12b1b2698..042a40b2b4 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -441,7 +441,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -588,7 +588,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -636,7 +636,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -678,7 +678,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1218,7 +1218,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.86", + "syn 2.0.87", "which 4.4.2", ] @@ -1237,7 +1237,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1381,7 +1381,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "syn_derive", ] @@ -1484,7 +1484,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -1599,9 +1599,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.33" +version = "1.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3788d6ac30243803df38a3e9991cf37e41210232916d41a8222ae378f912624" +checksum = "67b9470d453346108f93a59222a9a1a5724db32d0a4727b7ab7ace4b4d822dc9" dependencies = [ "jobserver", "libc", @@ -1744,7 +1744,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2124,7 +2124,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2172,7 +2172,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2194,7 +2194,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -2715,7 +2715,7 @@ dependencies = [ "quote", "strum 0.25.0", "strum_macros 0.25.3", - "syn 2.0.86", + "syn 2.0.87", "thiserror", ] @@ -2907,7 +2907,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3004,7 +3004,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3160,7 +3160,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3180,7 +3180,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3395,7 +3395,7 @@ checksum = "32016f1242eb82af5474752d00fd8ebcd9004bd69b462b1c91de833972d08ed4" dependencies = [ "proc-macro2", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3427,7 +3427,7 @@ checksum = "e99b8b3c28ae0e84b604c75f721c21dc77afb3706076af5e8216d15fd1deaae3" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3439,7 +3439,7 @@ dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3451,7 +3451,7 @@ dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3575,7 +3575,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -3828,7 +3828,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -4463,7 +4463,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -5113,7 +5113,7 @@ checksum = "a7ce64b975ed4f123575d11afd9491f2e37bbd5813fbfbc0f09ae1fbddea74e0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -5152,7 +5152,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "termcolor", "thiserror", ] @@ -5562,7 +5562,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -5839,7 +5839,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -5880,7 +5880,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6062,7 +6062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6115,7 +6115,7 @@ checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" dependencies = [ "proc-macro-rules-macros", "proc-macro2", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6127,7 +6127,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6188,7 +6188,7 @@ dependencies = [ "schemars", "serde", "serde_json", - "syn 2.0.86", + "syn 2.0.87", "thiserror", "typify", "unicode-ident", @@ -6208,7 +6208,7 @@ dependencies = [ "serde_json", "serde_tokenstream", "serde_yaml", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6251,7 +6251,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -6935,7 +6935,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.86", + "syn 2.0.87", "walkdir", ] @@ -7315,7 +7315,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -7462,7 +7462,7 @@ checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -7473,7 +7473,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -7548,7 +7548,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -7603,7 +7603,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -7972,7 +7972,7 @@ checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8043,7 +8043,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8066,7 +8066,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.86", + "syn 2.0.87", "tempfile", "tokio", "url", @@ -8218,7 +8218,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8272,7 +8272,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8285,7 +8285,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8393,7 +8393,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8442,7 +8442,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8527,7 +8527,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8634,7 +8634,7 @@ checksum = "63db0adcff29d220c3d151c5b25c0eabe7e32dd936212b84cdaa1392e3130497" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8645,7 +8645,7 @@ checksum = "f486687bfb7b5c560868f69ed2d458b880cebc9babebcb67e49f31b55c5bf847" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8668,7 +8668,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8684,9 +8684,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.86" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89275301d38033efb81a6e60e3497e734dfcc62571f2854bf4b16690398824c" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -8702,7 +8702,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8728,7 +8728,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -8993,7 +8993,7 @@ checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -9218,7 +9218,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -9545,7 +9545,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -9782,7 +9782,7 @@ dependencies = [ "regress", "schemars", "serde_json", - "syn 2.0.86", + "syn 2.0.87", "thiserror", "unicode-ident", ] @@ -9799,7 +9799,7 @@ dependencies = [ "serde", "serde_json", "serde_tokenstream", - "syn 2.0.86", + "syn 2.0.87", "typify-impl", ] @@ -10194,7 +10194,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -10228,7 +10228,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10261,7 +10261,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -10395,11 +10395,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "axum", - "base64 0.21.7", + "base64 0.22.1", "chrono", "deno_core", "dotenv", @@ -10437,7 +10437,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "argon2", @@ -10448,7 +10448,7 @@ dependencies = [ "async_zip", "axum", "base32", - "base64 0.21.7", + "base64 0.22.1", "bytes", "candle-core", "candle-nn", @@ -10522,9 +10522,9 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.416.2" +version = "1.417.0" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "chrono", "openapiv3", "prettyplease 0.1.25", @@ -10540,7 +10540,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.416.2" +version = "1.417.0" dependencies = [ "chrono", "serde", @@ -10553,7 +10553,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "rsmq_async", @@ -10568,7 +10568,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "async-stream", @@ -10614,7 +10614,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.416.2" +version = "1.417.0" dependencies = [ "regex", "rsmq_async", @@ -10629,7 +10629,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "bytes", @@ -10651,19 +10651,19 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.416.2" +version = "1.417.0" dependencies = [ "itertools 0.13.0", "lazy_static", "proc-macro2", "quote", "regex", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] name = "windmill-parser" -version = "1.416.2" +version = "1.417.0" dependencies = [ "convert_case 0.6.0", "serde", @@ -10672,7 +10672,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "lazy_static", @@ -10684,7 +10684,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "gosyn", @@ -10696,7 +10696,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "lazy_static", @@ -10708,7 +10708,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10719,7 +10719,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10730,7 +10730,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "async-recursion", @@ -10748,7 +10748,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -10758,14 +10758,14 @@ dependencies = [ "quote", "regex", "serde_json", - "syn 2.0.86", + "syn 2.0.87", "toml 0.7.8", "windmill-parser", ] [[package]] name = "windmill-parser-sql" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "lazy_static", @@ -10777,7 +10777,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "lazy_static", @@ -10795,7 +10795,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -10816,7 +10816,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "serde_json", @@ -10826,7 +10826,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "async-recursion", @@ -10859,7 +10859,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.416.2" +version = "1.417.0" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -10869,11 +10869,11 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.416.2" +version = "1.417.0" dependencies = [ "anyhow", "async-recursion", - "base64 0.21.7", + "base64 0.22.1", "bit-vec", "bytes", "chrono", @@ -11235,7 +11235,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "synstructure", ] @@ -11257,7 +11257,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", ] [[package]] @@ -11277,7 +11277,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.86", + "syn 2.0.87", "synstructure", ] diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 1c0abc299c..c8f69c7a01 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.416.2" +version = "1.417.0" authors.workspace = true edition.workspace = true @@ -29,7 +29,7 @@ members = [ ] [workspace.package] -version = "1.416.2" +version = "1.417.0" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index eebb8fd0a9..79e53b1c4c 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.416.2 + version: 1.417.0 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 3a229dc1e8..21accf330f 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.416.2"; +export const VERSION = "v1.417.0"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 562c3fde45..5e9ff5922b 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -60,7 +60,7 @@ export { // } // }); -export const VERSION = "1.416.2"; +export const VERSION = "1.417.0"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 028ac3e356..737328a229 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.416.2", + "version": "1.417.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.416.2", + "version": "1.417.0", "license": "AGPL-3.0", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 9c4f3a2a7d..82f52d8286 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.416.2", + "version": "1.417.0", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index c76b2cb3a0..668fff61d5 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.416.2" -wmill_pg = ">=1.416.2" +wmill = ">=1.417.0" +wmill_pg = ">=1.417.0" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index c2d1c0e9bd..c8f247c20b 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.416.2 + version: 1.417.0 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index bbf1ca823e..71290da659 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. -ModuleVersion = '1.416.2' +ModuleVersion = '1.417.0' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 7c7b08b1c4..fb55a7f4d7 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.416.2" +version = "1.417.0" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index cc280a1fe6..1712551627 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.416.2" +version = "1.417.0" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 4441b9c599..21ac695a0f 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.416.2", + "version": "1.417.0", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index ab8403f63d..4aaf4c3381 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.416.2", + "version": "1.417.0", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 049bcd7227..b3fc470a5d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.416.2 +1.417.0 From e92a338432d2732e6be74c3604b9fa95239e1ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?W=C3=ADtallo?= <15958770+witalloliveira@users.noreply.github.com> Date: Mon, 4 Nov 2024 13:12:51 -0300 Subject: [PATCH 05/80] fix: missing opts for pull and push instance configs (#4630) --- cli/instance.ts | 4 +-- cli/settings.ts | 62 ++++++++++++++++++++++++-------------------- cli/user.ts | 62 +++++++++++++++++++++++++------------------- cli/worker_groups.ts | 8 +++--- 4 files changed, 76 insertions(+), 60 deletions(-) diff --git a/cli/instance.ts b/cli/instance.ts index fb495c714f..f1a31f9702 100644 --- a/cli/instance.ts +++ b/cli/instance.ts @@ -261,7 +261,7 @@ export async function pickInstance( return instance; } -async function instancePull(opts: GlobalOptions & InstanceSyncOptions) { +async function instancePull(opts: InstanceSyncOptions) { const instance = await pickInstance(opts, true); log.info("Pulling instance-level changes"); log.info(`remote (${instance.name}) -> local`); @@ -393,7 +393,7 @@ async function instancePull(opts: GlobalOptions & InstanceSyncOptions) { } } -async function instancePush(opts: GlobalOptions & InstanceSyncOptions) { +async function instancePush(opts: InstanceSyncOptions) { let instances = await allInstances(); const instance = await pickInstance(opts, true); diff --git a/cli/settings.ts b/cli/settings.ts index d5feeca100..e938cd364e 100644 --- a/cli/settings.ts +++ b/cli/settings.ts @@ -33,6 +33,22 @@ export interface SimplifiedSettings { name: string; } +const INSTANCE_SETTINGS_PATH = "instance_settings.yaml"; +let instanceSettingsPath = INSTANCE_SETTINGS_PATH; +async function checkInstanceSettingsPath(opts: InstanceSyncOptions) { + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + instanceSettingsPath = `${opts.prefix}/${INSTANCE_SETTINGS_PATH}`; + } +} + +const INSTANCE_CONFIGS_PATH = "instance_configs.yaml"; +let instanceConfigsPath = INSTANCE_CONFIGS_PATH; +async function checkInstanceConfigPath(opts: InstanceSyncOptions) { + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + instanceConfigsPath = `${opts.prefix}/${INSTANCE_CONFIGS_PATH}`; + } +} + export async function pushWorkspaceSettings( workspace: string, _path: string, @@ -260,22 +276,15 @@ export async function pushWorkspaceKey( } } -const INSTANCE_SETTINGS_PATH = "instance_settings.yaml"; - -export async function readInstanceSettings( - opts: GlobalOptions & InstanceSyncOptions -) { +export async function readInstanceSettings(opts: InstanceSyncOptions) { let localSettings: GlobalSetting[] = []; - let path = INSTANCE_SETTINGS_PATH; - if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { - path = `${opts.prefix}/${INSTANCE_SETTINGS_PATH}`; - } + await checkInstanceSettingsPath(opts); try { - localSettings = (await yamlParseFile(path)) as GlobalSetting[]; + localSettings = (await yamlParseFile(instanceSettingsPath)) as GlobalSetting[]; } catch { - log.warn(`No ${path} found`); + log.warn(`No ${instanceSettingsPath} found`); } return localSettings; } @@ -337,11 +346,13 @@ async function processField( } export async function pullInstanceSettings( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview = false ) { const remoteSettings = await wmill.listGlobalSettings(); + await checkInstanceSettingsPath(opts); + if (preview) { const localSettings: GlobalSetting[] = await readInstanceSettings(opts); const processedSettings = await processInstanceSettings( @@ -362,16 +373,16 @@ export async function pullInstanceSettings( "encode" ); await Deno.writeTextFile( - INSTANCE_SETTINGS_PATH, + instanceSettingsPath, yamlStringify(processedSettings) ); - log.info(colors.green(`Settings written to ${INSTANCE_SETTINGS_PATH}`)); + log.info(colors.green(`Settings written to ${instanceSettingsPath}`)); } } export async function pushInstanceSettings( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview: boolean = false ) { const remoteSettings = await wmill.listGlobalSettings(); @@ -434,28 +445,23 @@ export async function pushInstanceSettings( } } -const INSTANCE_CONFIGS_PATH = "instance_configs.yaml"; - export async function readLocalConfigs( - opts: GlobalOptions & InstanceSyncOptions + opts: InstanceSyncOptions ) { let localConfigs: Config[] = []; - let path = INSTANCE_CONFIGS_PATH; - if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { - path = `${opts.prefix}/${INSTANCE_CONFIGS_PATH}`; - } + await checkInstanceConfigPath(opts); try { - localConfigs = (await yamlParseFile(path)) as Config[]; + localConfigs = (await yamlParseFile(instanceConfigsPath)) as Config[]; } catch { - log.warn(`No ${path} found`); + log.warn(`No ${instanceConfigsPath} found`); } return localConfigs; } export async function pullInstanceConfigs( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview = false ) { const remoteConfigs = (await wmill.listConfigs()).map((x) => { @@ -478,16 +484,16 @@ export async function pullInstanceConfigs( log.info("Pulling configs from instance"); await Deno.writeTextFile( - INSTANCE_CONFIGS_PATH, + instanceConfigsPath, yamlStringify(remoteConfigs as any) ); - log.info(colors.green(`Configs written to ${INSTANCE_CONFIGS_PATH}`)); + log.info(colors.green(`Configs written to ${instanceConfigsPath}`)); } } export async function pushInstanceConfigs( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview: boolean = false ) { const remoteConfigs = (await wmill.listConfigs()).map((x) => { diff --git a/cli/user.ts b/cli/user.ts index c955113600..6f37dd76a5 100644 --- a/cli/user.ts +++ b/cli/user.ts @@ -23,6 +23,22 @@ import { InstanceGroup, } from "./gen/types.gen.ts"; +const INSTANCE_USERS_PATH = "instance_users.yaml"; +let instanceUsersPath = INSTANCE_USERS_PATH; +async function checkInstanceUsersPath(opts: InstanceSyncOptions) { + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + instanceUsersPath = `${opts.prefix}/${INSTANCE_USERS_PATH}`; + } +} + +const INSTANCE_GROUPS_PATH = "instance_groups.yaml"; +let instanceGroupsPath = INSTANCE_GROUPS_PATH; +async function checkInstanceGroupsPath(opts: InstanceSyncOptions) { + if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { + instanceGroupsPath = `${opts.prefix}/${INSTANCE_GROUPS_PATH}`; + } +} + async function list(opts: GlobalOptions) { await requireLogin(opts); @@ -386,67 +402,59 @@ export async function pushGroup( } } -const INSTANCE_USERS_PATH = "instance_users.yaml"; - export async function pullInstanceUsers( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview: boolean = false ) { const remoteUsers = await wmill.globalUsersExport(); + await checkInstanceUsersPath(opts); + if (preview) { const localUsers: ExportedUser[] = await readInstanceUsers(opts); return compareInstanceObjects(remoteUsers, localUsers, "email", "user"); } else { log.info("Pulling users from instance..."); await Deno.writeTextFile( - INSTANCE_USERS_PATH, + instanceUsersPath, yamlStringify(remoteUsers as any) ); - log.info(colors.green(`Users written to ${INSTANCE_USERS_PATH}`)); + log.info(colors.green(`Users written to ${instanceUsersPath}`)); } } export async function readInstanceUsers( - opts: GlobalOptions & InstanceSyncOptions + opts: InstanceSyncOptions ) { let localUsers: ExportedUser[] = []; - let path = INSTANCE_USERS_PATH; - if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { - path = `${opts.prefix}/${INSTANCE_USERS_PATH}`; - } + await checkInstanceUsersPath(opts); try { - localUsers = (await yamlParseFile(path)) as ExportedUser[]; + localUsers = (await yamlParseFile(instanceUsersPath)) as ExportedUser[]; } catch { - log.warn(`No ${path} file found`); + log.warn(`No ${instanceUsersPath} file found`); } return localUsers; } -const INSTANCE_GROUPS_PATH = "instance_groups.yaml"; - export async function readInstanceGroups( - opts: GlobalOptions & InstanceSyncOptions + opts: InstanceSyncOptions ) { let localGroups: InstanceGroup[] = []; - let path = INSTANCE_GROUPS_PATH; - if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { - path = `${opts.prefix}/${INSTANCE_GROUPS_PATH}`; - } + await checkInstanceGroupsPath(opts); try { - localGroups = (await yamlParseFile(path)) as ExportedInstanceGroup[]; + localGroups = (await yamlParseFile(instanceGroupsPath)) as ExportedInstanceGroup[]; } catch { - log.warn(`No ${path} file found`); + log.warn(`No ${instanceGroupsPath} file found`); } return localGroups; } export async function pushInstanceUsers( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview: boolean = false ) { const remoteUsers = await wmill.globalUsersExport(); @@ -465,11 +473,13 @@ export async function pushInstanceUsers( } export async function pullInstanceGroups( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview = false ) { const remoteGroups = await wmill.exportInstanceGroups(); + await checkInstanceGroupsPath(opts); + if (preview) { const localGroups = await readInstanceGroups(opts); return compareInstanceObjects(remoteGroups, localGroups, "name", "group"); @@ -477,16 +487,16 @@ export async function pullInstanceGroups( log.info("Pulling groups from instance..."); await Deno.writeTextFile( - INSTANCE_GROUPS_PATH, + instanceGroupsPath, yamlStringify(remoteGroups as any) ); - log.info(colors.green(`Groups written to ${INSTANCE_GROUPS_PATH}`)); + log.info(colors.green(`Groups written to ${instanceGroupsPath}`)); } } export async function pushInstanceGroups( - opts: GlobalOptions & InstanceSyncOptions, + opts: InstanceSyncOptions, preview: boolean = false ) { const remoteGroups = await wmill.exportInstanceGroups(); diff --git a/cli/worker_groups.ts b/cli/worker_groups.ts index bd1eb6f56f..17ff13ec40 100644 --- a/cli/worker_groups.ts +++ b/cli/worker_groups.ts @@ -56,7 +56,7 @@ export async function displayWorkerGroups(opts: void) { async function pullWorkerGroups(opts: InstanceSyncOptions) { await pickInstance(opts, true); - const totalChanges = await pullInstanceConfigs(true) ?? 0; + const totalChanges = await pullInstanceConfigs(opts, true) ?? 0; if (totalChanges === 0) { log.info("No changes to apply"); @@ -72,14 +72,14 @@ async function pullWorkerGroups(opts: InstanceSyncOptions) { } if (confirm) { - await pullInstanceConfigs(false); + await pullInstanceConfigs(opts, false); } } async function pushWorkerGroups(opts: InstanceSyncOptions) { await pickInstance(opts, true); - const totalChanges = await pushInstanceConfigs(true) ?? 0; + const totalChanges = await pushInstanceConfigs(opts, true) ?? 0; if (totalChanges === 0) { log.info("No changes to apply"); @@ -95,7 +95,7 @@ async function pushWorkerGroups(opts: InstanceSyncOptions) { } if (confirm) { - await pushInstanceConfigs(false); + await pushInstanceConfigs(opts, false); } } From 021ed5a38b13990d6873c078499b93e7cdd735d9 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 4 Nov 2024 17:17:22 +0100 Subject: [PATCH 06/80] chore(main): release 1.417.1 (#4629) * chore(main): release 1.417.1 * Apply automatic changes --------- Co-authored-by: rubenfiszel --- CHANGELOG.md | 7 + backend/Cargo.lock | 278 +++++++++++++++--- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 264 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50172562a1..4a61842cf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.417.1](https://github.com/windmill-labs/windmill/compare/v1.417.0...v1.417.1) (2024-11-04) + + +### Bug Fixes + +* missing opts for pull and push instance configs ([#4630](https://github.com/windmill-labs/windmill/issues/4630)) ([e92a338](https://github.com/windmill-labs/windmill/commit/e92a338432d2732e6be74c3604b9fa95239e1ca3)) + ## 1.417.0 (2024-11-03) * feat(cli): instance yaml files inside the instance prefix folders (#4627) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 042a40b2b4..3900d14378 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -2984,6 +2984,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "dlopen2" version = "0.7.0" @@ -4345,6 +4356,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -4363,12 +4492,23 @@ dependencies = [ [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4456,11 +4596,11 @@ checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is-macro" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2069faacbe981460232f880d26bf3c7634e322d49053aa48c27e3ae642f728f1" +checksum = "1d57a3e447e24c22647738e4607f1df1e0ec6f72e16182c4cd199f647cdfb0e4" dependencies = [ - "Inflector", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.87", @@ -4761,6 +4901,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -8978,18 +9124,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" +checksum = "3b3c6efbfc763e64eb85c11c25320f0737cb7364c4b6336db90aa9ebe27a0bbd" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.66" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" +checksum = "b607164372e89797d78b8e23a6d67d5d1038c1c65efd52e1389ef8b77caba2a6" dependencies = [ "proc-macro2", "quote", @@ -9127,6 +9273,16 @@ dependencies = [ "crunchy", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" version = "1.8.0" @@ -10018,12 +10174,12 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna 1.0.3", "percent-encoding", "serde", ] @@ -10052,12 +10208,24 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + [[package]] name = "utf8-ranges" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -10395,7 +10563,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "axum", @@ -10437,7 +10605,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "argon2", @@ -10522,7 +10690,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.417.0" +version = "1.417.1" dependencies = [ "base64 0.22.1", "chrono", @@ -10540,7 +10708,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.417.0" +version = "1.417.1" dependencies = [ "chrono", "serde", @@ -10553,7 +10721,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "rsmq_async", @@ -10568,7 +10736,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "async-stream", @@ -10614,7 +10782,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.417.0" +version = "1.417.1" dependencies = [ "regex", "rsmq_async", @@ -10629,7 +10797,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "bytes", @@ -10651,7 +10819,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.417.0" +version = "1.417.1" dependencies = [ "itertools 0.13.0", "lazy_static", @@ -10663,7 +10831,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.417.0" +version = "1.417.1" dependencies = [ "convert_case 0.6.0", "serde", @@ -10672,7 +10840,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "lazy_static", @@ -10684,7 +10852,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "gosyn", @@ -10696,7 +10864,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "lazy_static", @@ -10708,7 +10876,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10719,7 +10887,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10730,7 +10898,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "async-recursion", @@ -10748,7 +10916,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -10765,7 +10933,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "lazy_static", @@ -10777,7 +10945,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "lazy_static", @@ -10795,7 +10963,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -10816,7 +10984,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "serde_json", @@ -10826,7 +10994,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "async-recursion", @@ -10859,7 +11027,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.417.0" +version = "1.417.1" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -10869,7 +11037,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.417.0" +version = "1.417.1" dependencies = [ "anyhow", "async-recursion", @@ -11165,6 +11333,18 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -11287,6 +11467,28 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "zip" version = "0.6.6" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index c8f69c7a01..f20693a6ea 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.417.0" +version = "1.417.1" authors.workspace = true edition.workspace = true @@ -29,7 +29,7 @@ members = [ ] [workspace.package] -version = "1.417.0" +version = "1.417.1" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 79e53b1c4c..87736e6c5b 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.0 + version: 1.417.1 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 21accf330f..6df3e64e5e 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.417.0"; +export const VERSION = "v1.417.1"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 5e9ff5922b..17db7b3b0b 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -60,7 +60,7 @@ export { // } // }); -export const VERSION = "1.417.0"; +export const VERSION = "1.417.1"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 737328a229..7682ea08a9 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.417.0", + "version": "1.417.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.417.0", + "version": "1.417.1", "license": "AGPL-3.0", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 82f52d8286..519d91d675 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.417.0", + "version": "1.417.1", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 668fff61d5..04411c3a06 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.417.0" -wmill_pg = ">=1.417.0" +wmill = ">=1.417.1" +wmill_pg = ">=1.417.1" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index c8f247c20b..f3235b8a3d 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.0 + version: 1.417.1 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 71290da659..4afb53ac42 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. -ModuleVersion = '1.417.0' +ModuleVersion = '1.417.1' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index fb55a7f4d7..3a719a0909 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.417.0" +version = "1.417.1" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 1712551627..3bbf15d780 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.417.0" +version = "1.417.1" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 21ac695a0f..c2bcf76076 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.417.0", + "version": "1.417.1", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index 4aaf4c3381..330bc6890a 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.417.0", + "version": "1.417.1", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index b3fc470a5d..eb20d7f0d1 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.417.0 +1.417.1 From 00748f43feab4f28f0dd2682e3dc8ccc15a5f49f Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 4 Nov 2024 17:45:42 +0100 Subject: [PATCH 07/80] fix(cli): improve pulling instance with folderPerInstance --- cli/instance.ts | 10 +++++++++- cli/user.ts | 22 ++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/cli/instance.ts b/cli/instance.ts index f1a31f9702..d271f5627e 100644 --- a/cli/instance.ts +++ b/cli/instance.ts @@ -286,6 +286,8 @@ async function instancePull(opts: InstanceSyncOptions) { const totalChanges = uChanges + sChanges + cChanges + gChanges; + const rootDir = Deno.cwd(); + if (totalChanges > 0) { let confirm = true; if (opts.yes !== true) { @@ -296,6 +298,13 @@ async function instancePull(opts: InstanceSyncOptions) { } if (confirm) { + if (uChanges > 0) { + if (opts.folderPerInstance && opts.prefixSettings) { + await Deno.mkdir(path.join(rootDir, opts.prefix), { + recursive: true, + }); + } + } if (!opts.skipUsers && uChanges > 0) { await pullInstanceUsers(opts); } @@ -315,7 +324,6 @@ async function instancePull(opts: InstanceSyncOptions) { if (opts.includeWorkspaces) { log.info("\nPulling all workspaces"); - const rootDir = Deno.cwd(); const localWorkspaces = await getLocalWorkspaces( rootDir, instance.prefix, diff --git a/cli/user.ts b/cli/user.ts index 6f37dd76a5..fcd979222b 100644 --- a/cli/user.ts +++ b/cli/user.ts @@ -25,7 +25,7 @@ import { const INSTANCE_USERS_PATH = "instance_users.yaml"; let instanceUsersPath = INSTANCE_USERS_PATH; -async function checkInstanceUsersPath(opts: InstanceSyncOptions) { +function checkInstanceUsersPath(opts: InstanceSyncOptions) { if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { instanceUsersPath = `${opts.prefix}/${INSTANCE_USERS_PATH}`; } @@ -33,7 +33,7 @@ async function checkInstanceUsersPath(opts: InstanceSyncOptions) { const INSTANCE_GROUPS_PATH = "instance_groups.yaml"; let instanceGroupsPath = INSTANCE_GROUPS_PATH; -async function checkInstanceGroupsPath(opts: InstanceSyncOptions) { +function checkInstanceGroupsPath(opts: InstanceSyncOptions) { if (opts.prefix && opts.folderPerInstance && opts.prefixSettings) { instanceGroupsPath = `${opts.prefix}/${INSTANCE_GROUPS_PATH}`; } @@ -408,7 +408,7 @@ export async function pullInstanceUsers( ) { const remoteUsers = await wmill.globalUsersExport(); - await checkInstanceUsersPath(opts); + checkInstanceUsersPath(opts); if (preview) { const localUsers: ExportedUser[] = await readInstanceUsers(opts); @@ -423,9 +423,7 @@ export async function pullInstanceUsers( } } -export async function readInstanceUsers( - opts: InstanceSyncOptions -) { +export async function readInstanceUsers(opts: InstanceSyncOptions) { let localUsers: ExportedUser[] = []; await checkInstanceUsersPath(opts); @@ -438,15 +436,15 @@ export async function readInstanceUsers( return localUsers; } -export async function readInstanceGroups( - opts: InstanceSyncOptions -) { +export async function readInstanceGroups(opts: InstanceSyncOptions) { let localGroups: InstanceGroup[] = []; - await checkInstanceGroupsPath(opts); + checkInstanceGroupsPath(opts); try { - localGroups = (await yamlParseFile(instanceGroupsPath)) as ExportedInstanceGroup[]; + localGroups = (await yamlParseFile( + instanceGroupsPath + )) as ExportedInstanceGroup[]; } catch { log.warn(`No ${instanceGroupsPath} file found`); } @@ -478,7 +476,7 @@ export async function pullInstanceGroups( ) { const remoteGroups = await wmill.exportInstanceGroups(); - await checkInstanceGroupsPath(opts); + checkInstanceGroupsPath(opts); if (preview) { const localGroups = await readInstanceGroups(opts); From e87a86062694a720b44e8fea021af737df7f6ce7 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 4 Nov 2024 17:51:04 +0100 Subject: [PATCH 08/80] chore(main): release 1.417.2 (#4633) * chore(main): release 1.417.2 * Apply automatic changes --------- Co-authored-by: rubenfiszel --- CHANGELOG.md | 7 +++ backend/Cargo.lock | 48 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 48 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a61842cf6..bf488aa816 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.417.2](https://github.com/windmill-labs/windmill/compare/v1.417.1...v1.417.2) (2024-11-04) + + +### Bug Fixes + +* **cli:** improve pulling instance with folderPerInstance ([00748f4](https://github.com/windmill-labs/windmill/commit/00748f43feab4f28f0dd2682e3dc8ccc15a5f49f)) + ## [1.417.1](https://github.com/windmill-labs/windmill/compare/v1.417.0...v1.417.1) (2024-11-04) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 3900d14378..4b9b38ea07 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -10563,7 +10563,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "axum", @@ -10605,7 +10605,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "argon2", @@ -10690,7 +10690,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.417.1" +version = "1.417.2" dependencies = [ "base64 0.22.1", "chrono", @@ -10708,7 +10708,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.417.1" +version = "1.417.2" dependencies = [ "chrono", "serde", @@ -10721,7 +10721,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "rsmq_async", @@ -10736,7 +10736,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "async-stream", @@ -10782,7 +10782,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.417.1" +version = "1.417.2" dependencies = [ "regex", "rsmq_async", @@ -10797,7 +10797,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "bytes", @@ -10819,7 +10819,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.417.1" +version = "1.417.2" dependencies = [ "itertools 0.13.0", "lazy_static", @@ -10831,7 +10831,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.417.1" +version = "1.417.2" dependencies = [ "convert_case 0.6.0", "serde", @@ -10840,7 +10840,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "lazy_static", @@ -10852,7 +10852,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "gosyn", @@ -10864,7 +10864,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "lazy_static", @@ -10876,7 +10876,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10887,7 +10887,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10898,7 +10898,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "async-recursion", @@ -10916,7 +10916,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -10933,7 +10933,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "lazy_static", @@ -10945,7 +10945,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "lazy_static", @@ -10963,7 +10963,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -10984,7 +10984,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "serde_json", @@ -10994,7 +10994,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "async-recursion", @@ -11027,7 +11027,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.417.1" +version = "1.417.2" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11037,7 +11037,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.417.1" +version = "1.417.2" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index f20693a6ea..c61d8a69d7 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.417.1" +version = "1.417.2" authors.workspace = true edition.workspace = true @@ -29,7 +29,7 @@ members = [ ] [workspace.package] -version = "1.417.1" +version = "1.417.2" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 87736e6c5b..70e9784210 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.1 + version: 1.417.2 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 6df3e64e5e..cb981a3e41 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.417.1"; +export const VERSION = "v1.417.2"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 17db7b3b0b..7005442b98 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -60,7 +60,7 @@ export { // } // }); -export const VERSION = "1.417.1"; +export const VERSION = "1.417.2"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 7682ea08a9..c77d286871 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.417.1", + "version": "1.417.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.417.1", + "version": "1.417.2", "license": "AGPL-3.0", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 519d91d675..9ce269d708 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.417.1", + "version": "1.417.2", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 04411c3a06..23cf2b8083 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.417.1" -wmill_pg = ">=1.417.1" +wmill = ">=1.417.2" +wmill_pg = ">=1.417.2" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index f3235b8a3d..92290c2fa2 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.1 + version: 1.417.2 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index 4afb53ac42..b86ea90b03 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. -ModuleVersion = '1.417.1' +ModuleVersion = '1.417.2' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 3a719a0909..10b7fdf8ab 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.417.1" +version = "1.417.2" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 3bbf15d780..41da973c05 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.417.1" +version = "1.417.2" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index c2bcf76076..0ae539e849 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.417.1", + "version": "1.417.2", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index 330bc6890a..b41e179b5a 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.417.1", + "version": "1.417.2", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index eb20d7f0d1..786c69cec3 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.417.1 +1.417.2 From 1e7909e95931e1e121cb3767bad093239254935d Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 4 Nov 2024 20:31:07 +0100 Subject: [PATCH 09/80] fix(cli): improve pulling instance with folderPerInstance --- cli/instance.ts | 16 ++++++++++------ cli/workspace.ts | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cli/instance.ts b/cli/instance.ts index d271f5627e..e80db19700 100644 --- a/cli/instance.ts +++ b/cli/instance.ts @@ -575,13 +575,14 @@ async function getLocalWorkspaces( } if (folderPerInstance) { for await (const dir of Deno.readDir(rootDir + "/" + localPrefix)) { - const dirName = dir.name; - localWorkspaces.push({ - dir: localPrefix + "/" + dirName, - id: dirName, - }); + if (dir.isDirectory) { + const dirName = dir.name; + localWorkspaces.push({ + dir: localPrefix + "/" + dirName, + id: dirName, + }); + } } - log.info(localWorkspaces); } else { for await (const dir of Deno.readDir(rootDir)) { const dirName = dir.name; @@ -593,6 +594,9 @@ async function getLocalWorkspaces( } } } + log.info( + "Local workspaces found: " + localWorkspaces.map((x) => x.id).join(", ") + ); return localWorkspaces; } diff --git a/cli/workspace.ts b/cli/workspace.ts index 4338e21cfe..cd0ff31ee9 100644 --- a/cli/workspace.ts +++ b/cli/workspace.ts @@ -285,8 +285,8 @@ export async function removeWorkspace( } return; } - if (silent) { - log.info(colors.yellow(`Replacing existing workspace ${name}`)); + if (!silent) { + log.info(colors.yellow(`Removing existing workspace ${name}`)); } await Deno.writeTextFile( From b245edc2ddaed41ee0de2f1885248badf3379cf3 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 4 Nov 2024 20:49:56 +0100 Subject: [PATCH 10/80] chore(main): release 1.417.3 (#4647) * chore(main): release 1.417.3 * Apply automatic changes --------- Co-authored-by: rubenfiszel --- CHANGELOG.md | 7 ++ backend/Cargo.lock | 68 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 58 insertions(+), 51 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf488aa816..769d59d283 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.417.3](https://github.com/windmill-labs/windmill/compare/v1.417.2...v1.417.3) (2024-11-04) + + +### Bug Fixes + +* **cli:** improve pulling instance with folderPerInstance ([1e7909e](https://github.com/windmill-labs/windmill/commit/1e7909e95931e1e121cb3767bad093239254935d)) + ## [1.417.2](https://github.com/windmill-labs/windmill/compare/v1.417.1...v1.417.2) (2024-11-04) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 4b9b38ea07..fb38b7b773 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -117,9 +117,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -3987,9 +3987,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" dependencies = [ "allocator-api2", "equivalent", @@ -4535,7 +4535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", "serde", ] @@ -4942,7 +4942,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.0", + "hashbrown 0.15.1", ] [[package]] @@ -9124,18 +9124,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3c6efbfc763e64eb85c11c25320f0737cb7364c4b6336db90aa9ebe27a0bbd" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.67" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b607164372e89797d78b8e23a6d67d5d1038c1c65efd52e1389ef8b77caba2a6" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", @@ -10563,7 +10563,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "axum", @@ -10605,7 +10605,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "argon2", @@ -10690,7 +10690,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.417.2" +version = "1.417.3" dependencies = [ "base64 0.22.1", "chrono", @@ -10708,7 +10708,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.417.2" +version = "1.417.3" dependencies = [ "chrono", "serde", @@ -10721,7 +10721,7 @@ dependencies = [ [[package]] name = "windmill-autoscaling" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "rsmq_async", @@ -10736,7 +10736,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "async-stream", @@ -10782,7 +10782,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.417.2" +version = "1.417.3" dependencies = [ "regex", "rsmq_async", @@ -10797,7 +10797,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "bytes", @@ -10819,7 +10819,7 @@ dependencies = [ [[package]] name = "windmill-macros" -version = "1.417.2" +version = "1.417.3" dependencies = [ "itertools 0.13.0", "lazy_static", @@ -10831,7 +10831,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.417.2" +version = "1.417.3" dependencies = [ "convert_case 0.6.0", "serde", @@ -10840,7 +10840,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "lazy_static", @@ -10852,7 +10852,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "gosyn", @@ -10864,7 +10864,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "lazy_static", @@ -10876,7 +10876,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10887,7 +10887,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10898,7 +10898,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "async-recursion", @@ -10916,7 +10916,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -10933,7 +10933,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "lazy_static", @@ -10945,7 +10945,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "lazy_static", @@ -10963,7 +10963,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -10984,7 +10984,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "serde_json", @@ -10994,7 +10994,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "async-recursion", @@ -11027,7 +11027,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.417.2" +version = "1.417.3" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -11037,7 +11037,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.417.2" +version = "1.417.3" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index c61d8a69d7..2ae0de9786 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.417.2" +version = "1.417.3" authors.workspace = true edition.workspace = true @@ -29,7 +29,7 @@ members = [ ] [workspace.package] -version = "1.417.2" +version = "1.417.3" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 70e9784210..cde1339c1c 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.2 + version: 1.417.3 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index cb981a3e41..8e6bdf9725 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.417.2"; +export const VERSION = "v1.417.3"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 7005442b98..9a5b682df7 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -60,7 +60,7 @@ export { // } // }); -export const VERSION = "1.417.2"; +export const VERSION = "1.417.3"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c77d286871..f43c1ac214 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.417.2", + "version": "1.417.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.417.2", + "version": "1.417.3", "license": "AGPL-3.0", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 9ce269d708..0c22355ecc 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.417.2", + "version": "1.417.3", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 23cf2b8083..c92dd2f3cb 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.417.2" -wmill_pg = ">=1.417.2" +wmill = ">=1.417.3" +wmill_pg = ">=1.417.3" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 92290c2fa2..2521b4193e 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.417.2 + version: 1.417.3 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index b86ea90b03..e45b054a4e 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. -ModuleVersion = '1.417.2' +ModuleVersion = '1.417.3' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 10b7fdf8ab..ab8e8d3275 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.417.2" +version = "1.417.3" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 41da973c05..5414909bd7 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.417.2" +version = "1.417.3" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 0ae539e849..5e8ff6c1d2 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.417.2", + "version": "1.417.3", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index b41e179b5a..5abc6f1f3f 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.417.2", + "version": "1.417.3", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 786c69cec3..e047a7c0be 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.417.2 +1.417.3 From 22ab51e9914376b47827f0be66708deef3a37767 Mon Sep 17 00:00:00 2001 From: Guilhem Date: Mon, 4 Nov 2024 23:18:09 +0100 Subject: [PATCH 11/80] feat(frontend): improve and simplify scheduled poll flows (#4560) --- backend/tests/worker.rs | 8 + backend/windmill-api/src/flows.rs | 3 + backend/windmill-common/src/flows.rs | 7 + backend/windmill-queue/src/jobs.rs | 1 + .../windmill-worker/src/worker_lockfiles.rs | 3 + frontend/package.json | 5 + frontend/src/lib/components/Dev.svelte | 5 +- .../src/lib/components/FlowBuilder.svelte | 17 +- .../components/FlowStatusViewerInner.svelte | 1 + .../lib/components/RunPageSchedules.svelte | 164 +++++--------- .../src/lib/components/ScriptBuilder.svelte | 6 +- frontend/src/lib/components/Toggle.svelte | 6 +- .../lib/components/copilot/MetadataGen.svelte | 2 +- .../details/DetailPageDetailPanel.svelte | 6 +- .../details/DetailPageLayout.svelte | 12 +- .../details/DetailPageTriggerPanel.svelte | 116 +++++----- .../flows/content/FlowPathViewer.svelte | 9 +- .../lib/components/flows/flowStateUtils.ts | 13 +- .../flows/map/FlowModuleSchemaItem.svelte | 11 +- .../flows/map/FlowModuleSchemaMap.svelte | 22 +- .../flows/map/InsertModuleButton.svelte | 22 +- .../lib/components/flows/map/MapItem.svelte | 3 + .../components/flows/map/VirtualItem.svelte | 47 +--- .../flows/map/VirtualItemWrapper.svelte | 45 ++++ .../src/lib/components/flows/scheduleUtils.ts | 110 +++++++++- .../lib/components/graph/FlowGraphV2.svelte | 207 ++++++++++++++---- .../src/lib/components/graph/graphBuilder.ts | 96 +++++--- .../graph/renderers/edges/BaseEdge.svelte | 39 ---- .../renderers/nodes/ForLoopEndNode.svelte | 38 +++- .../renderers/nodes/ForLoopStartNode.svelte | 3 +- .../graph/renderers/nodes/InputNode.svelte | 3 +- .../graph/renderers/nodes/TriggersNode.svelte | 113 +++++++++- .../renderers/triggers/TriggerButton.svelte | 2 +- .../renderers/triggers/TriggersBadge.svelte | 107 +++------ .../renderers/triggers/TriggersWrapper.svelte | 54 +++-- .../components/icons/SchedulePollIcon.svelte | 36 +++ frontend/src/lib/components/icons/index.ts | 2 + frontend/src/lib/components/triggers.ts | 26 ++- .../triggers/ScheduledPollPanel.svelte | 41 ++++ .../components/triggers/TriggersEditor.svelte | 128 ++++++----- frontend/src/routes/flows/dev/+page.svelte | 5 +- frontend/static/create_action.png | Bin 0 -> 40254 bytes frontend/static/script-picker.png | Bin 0 -> 12652 bytes frontend/static/trigger_button.png | Bin 17525 -> 0 bytes frontend/tailwind.config.cjs | 3 +- openflow.openapi.yaml | 4 + 46 files changed, 1011 insertions(+), 540 deletions(-) create mode 100644 frontend/src/lib/components/flows/map/VirtualItemWrapper.svelte create mode 100644 frontend/src/lib/components/icons/SchedulePollIcon.svelte create mode 100644 frontend/src/lib/components/triggers/ScheduledPollPanel.svelte create mode 100644 frontend/static/create_action.png create mode 100644 frontend/static/script-picker.png delete mode 100644 frontend/static/trigger_button.png diff --git a/backend/tests/worker.rs b/backend/tests/worker.rs index a93c6eef1d..69482f3922 100644 --- a/backend/tests/worker.rs +++ b/backend/tests/worker.rs @@ -1112,6 +1112,7 @@ async fn test_deno_flow(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, } .into(), stop_after_if: Default::default(), @@ -1153,6 +1154,7 @@ async fn test_deno_flow(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, } .into(), stop_after_if: Default::default(), @@ -1276,6 +1278,8 @@ async fn test_deno_flow_same_worker(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, + }.into(), stop_after_if: Default::default(), stop_after_all_iters_if: Default::default(), @@ -1327,6 +1331,7 @@ async fn test_deno_flow_same_worker(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, }.into(), stop_after_if: Default::default(), stop_after_all_iters_if: Default::default(), @@ -1364,6 +1369,8 @@ async fn test_deno_flow_same_worker(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, + }.into(), stop_after_if: Default::default(), stop_after_all_iters_if: Default::default(), @@ -1424,6 +1431,7 @@ async fn test_deno_flow_same_worker(db: Pool) { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, }.into(), stop_after_if: Default::default(), stop_after_all_iters_if: Default::default(), diff --git a/backend/windmill-api/src/flows.rs b/backend/windmill-api/src/flows.rs index 4fc9ce514f..f02f91dc41 100644 --- a/backend/windmill-api/src/flows.rs +++ b/backend/windmill-api/src/flows.rs @@ -1209,6 +1209,7 @@ mod tests { .into(), hash: None, tag_override: None, + is_trigger: None, }), stop_after_if: None, stop_after_all_iters_if: None, @@ -1236,6 +1237,7 @@ mod tests { custom_concurrency_key: None, concurrent_limit: None, concurrency_time_window_s: None, + is_trigger: None, }), stop_after_if: Some(StopAfterIf { expr: "foo = 'bar'".to_string(), @@ -1290,6 +1292,7 @@ mod tests { input_transforms: HashMap::new(), hash: None, tag_override: None, + is_trigger: None, } .into(), stop_after_if: Some(StopAfterIf { diff --git a/backend/windmill-common/src/flows.rs b/backend/windmill-common/src/flows.rs index 9b66cc65ac..d357a5ec72 100644 --- a/backend/windmill-common/src/flows.rs +++ b/backend/windmill-common/src/flows.rs @@ -426,6 +426,8 @@ pub enum FlowModuleValue { hash: Option, #[serde(skip_serializing_if = "Option::is_none")] tag_override: Option, + #[serde(skip_serializing_if = "Option::is_none")] + is_trigger: Option, }, Flow { #[serde(default)] @@ -474,6 +476,8 @@ pub enum FlowModuleValue { concurrent_limit: Option, #[serde(skip_serializing_if = "Option::is_none")] concurrency_time_window_s: Option, + #[serde(skip_serializing_if = "Option::is_none")] + is_trigger: Option, }, Identity, } @@ -505,6 +509,7 @@ struct UntaggedFlowModuleValue { custom_concurrency_key: Option, concurrent_limit: Option, concurrency_time_window_s: Option, + is_trigger: Option, } impl<'de> Deserialize<'de> for FlowModuleValue { @@ -522,6 +527,7 @@ impl<'de> Deserialize<'de> for FlowModuleValue { .ok_or_else(|| serde::de::Error::missing_field("path"))?, hash: untagged.hash, tag_override: untagged.tag_override, + is_trigger: untagged.is_trigger, }), "flow" => Ok(FlowModuleValue::Flow { input_transforms: untagged.input_transforms.unwrap_or_default(), @@ -574,6 +580,7 @@ impl<'de> Deserialize<'de> for FlowModuleValue { custom_concurrency_key: untagged.custom_concurrency_key, concurrent_limit: untagged.concurrent_limit, concurrency_time_window_s: untagged.concurrency_time_window_s, + is_trigger: untagged.is_trigger, }), "identity" => Ok(FlowModuleValue::Identity), other => Err(serde::de::Error::unknown_variant( diff --git a/backend/windmill-queue/src/jobs.rs b/backend/windmill-queue/src/jobs.rs index c0235c9b26..9b94c0f198 100644 --- a/backend/windmill-queue/src/jobs.rs +++ b/backend/windmill-queue/src/jobs.rs @@ -3522,6 +3522,7 @@ pub async fn push<'c, 'd, R: rsmq_async::RsmqConnection + Send + 'c>( path: path.clone(), hash: Some(hash), tag_override: tag_override, + is_trigger: None, }, ), stop_after_if: None, diff --git a/backend/windmill-worker/src/worker_lockfiles.rs b/backend/windmill-worker/src/worker_lockfiles.rs index f71c73f618..6c88294126 100644 --- a/backend/windmill-worker/src/worker_lockfiles.rs +++ b/backend/windmill-worker/src/worker_lockfiles.rs @@ -735,6 +735,7 @@ async fn lock_modules<'c>( custom_concurrency_key, concurrent_limit, concurrency_time_window_s, + is_trigger, } = e.get_value()? else { match e.get_value()? { @@ -970,6 +971,7 @@ async fn lock_modules<'c>( custom_concurrency_key, concurrent_limit, concurrency_time_window_s, + is_trigger, }); new_flow_modules.push(e); continue; @@ -992,6 +994,7 @@ async fn lock_modules<'c>( custom_concurrency_key, concurrent_limit, concurrency_time_window_s, + is_trigger, }); new_flow_modules.push(e); continue; diff --git a/frontend/package.json b/frontend/package.json index 0c22355ecc..a15b2e575c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -182,6 +182,11 @@ "svelte": "./package/components/icons/WindmillIcon2.svelte", "default": "./package/components/icons/WindmillIcon2.svelte" }, + "./components/icons/SchedulePollIcon.svelte": { + "types": "./package/components/icons/SchedulePollIcon.d.ts", + "svelte": "./package/components/icons/SchedulePollIcon.svelte", + "default": "./package/components/icons/SchedulePollIcon.svelte" + }, "./components/IconedResourceType.svelte": { "types": "./package/components/IconedResourceType.svelte.d.ts", "svelte": "./package/components/IconedResourceType.svelte", diff --git a/frontend/src/lib/components/Dev.svelte b/frontend/src/lib/components/Dev.svelte index 5e3b52d867..bde2bd265f 100644 --- a/frontend/src/lib/components/Dev.svelte +++ b/frontend/src/lib/components/Dev.svelte @@ -476,7 +476,7 @@ const testStepStore = writable>({}) const selectedIdStore = writable('settings-metadata') const selectedTriggerStore = writable< - 'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' + 'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' | 'scheduledPoll' >('webhooks') const primaryScheduleStore = writable(undefined) @@ -484,7 +484,8 @@ setContext('TriggerContext', { primarySchedule: primaryScheduleStore, selectedTrigger: selectedTriggerStore, - triggersCount: triggersCount + triggersCount: triggersCount, + simplifiedPoll: writable(false) }) setContext('FlowEditorContext', { selectedId: selectedIdStore, diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index b04fbdf8dc..f51b7e8bc8 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -144,7 +144,7 @@ ? { schedule_count: 1, primary_schedule: { schedule: savedPrimarySchedule.cron } } : undefined ) - + const simplifiedPoll = writable(false) export function setPrimarySchedule(schedule: ScheduleTrigger | undefined | false) { primaryScheduleStore.set(schedule) loadTriggers() @@ -468,7 +468,7 @@ const selectedIdStore = writable(selectedId ?? 'settings-metadata') const selectedTriggerStore = writable< - 'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' + 'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' | 'scheduledPoll' >('webhooks') export function getSelectedId() { @@ -490,7 +490,14 @@ } function selectTrigger( - selectedTrigger: 'webhooks' | 'emails' | 'schedules' | 'cli' | 'routes' | 'websockets' + selectedTrigger: + | 'webhooks' + | 'emails' + | 'schedules' + | 'cli' + | 'routes' + | 'websockets' + | 'scheduledPoll' ) { selectedTriggerStore.set(selectedTrigger) } @@ -517,7 +524,8 @@ setContext('TriggerContext', { selectedTrigger: selectedTriggerStore, primarySchedule: primaryScheduleStore, - triggersCount + triggersCount, + simplifiedPoll }) async function loadTriggers() { @@ -876,7 +884,6 @@ await tick() select(module.id) await tick() - await tick() focusCopilot() let isFirstInLoop = false diff --git a/frontend/src/lib/components/FlowStatusViewerInner.svelte b/frontend/src/lib/components/FlowStatusViewerInner.svelte index e881dad539..ec6982a5df 100644 --- a/frontend/src/lib/components/FlowStatusViewerInner.svelte +++ b/frontend/src/lib/components/FlowStatusViewerInner.svelte @@ -1008,6 +1008,7 @@ modules={job.raw_flow?.modules ?? []} failureModule={job.raw_flow?.failure_module} preprocessorModule={job.raw_flow?.preprocessor_module} + allowSimplifiedPoll={false} />
('TriggerContext') let scheduleEditor: ScheduleEditor + let schedules: Writable = writable(undefined) + let initialPrimarySchedule: Writable = writable(undefined) - $: loadSchedules(false) || path - - let schedules: Schedule[] | undefined = undefined - let initialPrimarySchedule: ScheduleTrigger | false | undefined = undefined - async function loadSchedules(forceRefresh: boolean) { - if (!path || path == '') { - schedules = [] - if ($primarySchedule == undefined) { - $primarySchedule = false - } - initialPrimarySchedule = structuredClone($primarySchedule) - return - } - try { - const allSchedules = await ScheduleService.listSchedules({ - workspace: $workspaceStore ?? '', - path: path, - isFlow - }) - const primary = allSchedules.find((s) => s.path == path) - let remotePrimarySchedule = primary - ? { - summary: primary.summary, - args: primary.args ?? {}, - cron: primary.schedule, - timezone: primary.timezone, - enabled: primary.enabled - } - : false - if ($primarySchedule == undefined || forceRefresh) { - $primarySchedule = remotePrimarySchedule - } - initialPrimarySchedule = structuredClone(remotePrimarySchedule) - - $triggersCount = { - ...($triggersCount ?? {}), - schedule_count: allSchedules.length, - primary_schedule: $primarySchedule ? { schedule: $primarySchedule.cron } : undefined - } - schedules = allSchedules.filter((s) => s.path != path) - } catch (e) { - console.error('impossible to load schedules', e) - } + async function updateSchedules(forceRefresh: boolean) { + loadSchedules( + forceRefresh, + path, + isFlow, + schedules, + primarySchedule, + initialPrimarySchedule, + $workspaceStore ?? '', + triggersCount + ) } + $: updateSchedules(false) || path + async function save() { - const scheduleExists = - path != '' && - !newItem && - (await ScheduleService.existsSchedule({ - workspace: $workspaceStore!, - path - })) - if (scheduleExists) { - console.log('primary schedule exists') - if ($primarySchedule) { - await ScheduleService.updateSchedule({ - workspace: $workspaceStore!, - path, - requestBody: { - summary: $primarySchedule.summary, - args: $primarySchedule.args, - schedule: $primarySchedule.cron, - timezone: $primarySchedule.timezone - } - }) - sendUserToast(`Primary schedule updated`) - } else { - await ScheduleService.deleteSchedule({ workspace: $workspaceStore!, path }) - sendUserToast(`Primary schedule deleted`) - } - } else { - if ($primarySchedule) { - await ScheduleService.createSchedule({ - workspace: $workspaceStore!, - requestBody: { - path, - script_path: path, - is_flow: isFlow, - summary: $primarySchedule.summary, - args: $primarySchedule.args, - schedule: $primarySchedule.cron, - timezone: $primarySchedule.timezone, - enabled: $primarySchedule.enabled - } - }) - sendUserToast(`Primary schedule created`) - } - } - loadSchedules(true) + await saveSchedule(path, newItem, $workspaceStore ?? '', primarySchedule, isFlow) + updateSchedules(true) } { - loadSchedules(true) + updateSchedules(true) }} bind:this={scheduleEditor} /> @@ -204,7 +136,7 @@

Define a schedule frequency first

{/if} - {#if initialPrimarySchedule != false} + {#if $initialPrimarySchedule != false}
- - {#if initialPrimarySchedule != undefined && initialPrimarySchedule != false && !newItem} +
+ +
+ {#if $initialPrimarySchedule != undefined && $initialPrimarySchedule != false && !newItem} @@ -274,12 +208,12 @@ {/if}