From f782c0e8def781c05075bb0d2f8299169f45986a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81d=C3=A1m=20Kov=C3=A1cs?= <43071496+adam-kov@users.noreply.github.com> Date: Fri, 31 Mar 2023 11:09:53 +0200 Subject: [PATCH] fix(frontend): Export python code as string (#1339) --- ...ure_module.py => python_failure_module.ts} | 4 +- ...ython_init_code.py => python_init_code.ts} | 6 +- .../init_scripts/python_init_code_clear.py | 5 - .../init_scripts/python_init_code_clear.ts | 5 + ...trigger.py => python_init_code_trigger.ts} | 4 +- frontend/src/lib/script_helpers.ts | 137 ++++++++++-------- frontend/svelte.config.js | 3 + 7 files changed, 90 insertions(+), 74 deletions(-) rename frontend/src/lib/init_scripts/{python_failure_module.py => python_failure_module.ts} (79%) rename frontend/src/lib/init_scripts/{python_init_code.py => python_init_code.ts} (91%) delete mode 100644 frontend/src/lib/init_scripts/python_init_code_clear.py create mode 100644 frontend/src/lib/init_scripts/python_init_code_clear.ts rename frontend/src/lib/init_scripts/{python_init_code_trigger.py => python_init_code_trigger.ts} (88%) diff --git a/frontend/src/lib/init_scripts/python_failure_module.py b/frontend/src/lib/init_scripts/python_failure_module.ts similarity index 79% rename from frontend/src/lib/init_scripts/python_failure_module.py rename to frontend/src/lib/init_scripts/python_failure_module.ts index 6802529782..e29457f209 100644 --- a/frontend/src/lib/init_scripts/python_failure_module.py +++ b/frontend/src/lib/init_scripts/python_failure_module.ts @@ -1,4 +1,4 @@ -import os +export default `import os # flow is considered recovered and a success unless an exception is raised @@ -7,4 +7,4 @@ def main(message: str, name: str): flow_id = os.environ.get("WM_FLOW_JOB_ID") print("message", message) print("name", name) - return message, flow_id + return message, flow_id` diff --git a/frontend/src/lib/init_scripts/python_init_code.py b/frontend/src/lib/init_scripts/python_init_code.ts similarity index 91% rename from frontend/src/lib/init_scripts/python_init_code.py rename to frontend/src/lib/init_scripts/python_init_code.ts index 39b01699e3..a1abbafada 100644 --- a/frontend/src/lib/init_scripts/python_init_code.py +++ b/frontend/src/lib/init_scripts/python_init_code.ts @@ -1,4 +1,4 @@ -import os +export default `import os import wmill # You can import any package from PyPI, even if the assistant complains @@ -22,7 +22,7 @@ def main( secret = wmill.get_variable("f/examples/secret") except: secret = "No secret yet at f/examples/secret !" - print(f"The variable at `f/examples/secret`: {secret}") + print(f"The variable at \`f/examples/secret\`: {secret}") # Get last state of this script execution by the same trigger/user last_state = wmill.get_state() @@ -34,4 +34,4 @@ def main( user = os.environ.get("WM_USERNAME") # return value is converted to JSON - return {"splitted": name.split(), "user": user, "state": new_state} + return {"splitted": name.split(), "user": user, "state": new_state}` diff --git a/frontend/src/lib/init_scripts/python_init_code_clear.py b/frontend/src/lib/init_scripts/python_init_code_clear.py deleted file mode 100644 index 32e567beca..0000000000 --- a/frontend/src/lib/init_scripts/python_init_code_clear.py +++ /dev/null @@ -1,5 +0,0 @@ -# import wmill - - -def main(x: str): - return x diff --git a/frontend/src/lib/init_scripts/python_init_code_clear.ts b/frontend/src/lib/init_scripts/python_init_code_clear.ts new file mode 100644 index 0000000000..e37835cd24 --- /dev/null +++ b/frontend/src/lib/init_scripts/python_init_code_clear.ts @@ -0,0 +1,5 @@ +export default `# import wmill + + +def main(x: str): + return x` diff --git a/frontend/src/lib/init_scripts/python_init_code_trigger.py b/frontend/src/lib/init_scripts/python_init_code_trigger.ts similarity index 88% rename from frontend/src/lib/init_scripts/python_init_code_trigger.py rename to frontend/src/lib/init_scripts/python_init_code_trigger.ts index 3f552dc1a4..c3038a7d4d 100644 --- a/frontend/src/lib/init_scripts/python_init_code_trigger.py +++ b/frontend/src/lib/init_scripts/python_init_code_trigger.ts @@ -1,4 +1,4 @@ -import wmill +export default `import wmill def main(): @@ -11,4 +11,4 @@ def main(): # wmill.setState(newState) # 4. Return the new rows # return range from (state to newState) - return [1, 2, 3] + return [1, 2, 3]` diff --git a/frontend/src/lib/script_helpers.ts b/frontend/src/lib/script_helpers.ts index b017334d3d..2c81e88e15 100644 --- a/frontend/src/lib/script_helpers.ts +++ b/frontend/src/lib/script_helpers.ts @@ -1,11 +1,16 @@ -import type { Script } from "./gen" +import type { Script } from './gen' -import PYTHON_INIT_CODE from '$lib/init_scripts/python_init_code.py?raw' -import PYTHON_INIT_CODE_CLEAR from '$lib/init_scripts/python_init_code_clear.py?raw' -import PYTHON_INIT_CODE_TRIGGER from '$lib/init_scripts/python_init_code_trigger.py?raw' -import PYTHON_FAILURE_MODULE_CODE from '$lib/init_scripts/python_failure_module.py?raw' +import PYTHON_INIT_CODE from '$lib/init_scripts/python_init_code' +import PYTHON_INIT_CODE_CLEAR from '$lib/init_scripts/python_init_code_clear' +import PYTHON_INIT_CODE_TRIGGER from '$lib/init_scripts/python_init_code_trigger' +import PYTHON_FAILURE_MODULE_CODE from '$lib/init_scripts/python_failure_module' -export { PYTHON_INIT_CODE, PYTHON_INIT_CODE_CLEAR, PYTHON_INIT_CODE_TRIGGER, PYTHON_FAILURE_MODULE_CODE } +export { + PYTHON_INIT_CODE, + PYTHON_INIT_CODE_CLEAR, + PYTHON_INIT_CODE_TRIGGER, + PYTHON_FAILURE_MODULE_CODE +} export const DENO_INIT_CODE = `// Ctrl+. to cache dependencies on imports hover, Ctrl+S to format. @@ -77,7 +82,6 @@ export async function main(message: string, name: string) { } ` - export const POSTGRES_INIT_CODE = `import { pgSql, type Resource, @@ -110,7 +114,7 @@ export async function main( db )\`INSERT INTO demo VALUES (\${key}, \${value})\`; return query.rows; -}`; +}` export const BASH_INIT_CODE = `# arguments of the form X="$I" are parsed as parameters X of type string msg="$1" @@ -120,7 +124,6 @@ dflt="\${2:-default value}" echo "Hello $msg" ` - export const DENO_INIT_CODE_TRIGGER = `import * as wmill from "https://deno.land/x/windmill@v${__pkg__.version}/mod.ts" export async function main() { @@ -172,61 +175,71 @@ export async function main(approver?: string) { return wmill.getResumeEndpoints(approver) }` -const ALL_INITIAL_CODE = [PYTHON_INIT_CODE, PYTHON_INIT_CODE_TRIGGER, DENO_INIT_CODE, POSTGRES_INIT_CODE, DENO_INIT_CODE_TRIGGER, DENO_INIT_CODE_CLEAR, PYTHON_INIT_CODE_CLEAR, DENO_INIT_CODE_APPROVAL, DENO_FAILURE_MODULE_CODE] +const ALL_INITIAL_CODE = [ + PYTHON_INIT_CODE, + PYTHON_INIT_CODE_TRIGGER, + DENO_INIT_CODE, + POSTGRES_INIT_CODE, + DENO_INIT_CODE_TRIGGER, + DENO_INIT_CODE_CLEAR, + PYTHON_INIT_CODE_CLEAR, + DENO_INIT_CODE_APPROVAL, + DENO_FAILURE_MODULE_CODE +] export function isInitialCode(content: string): boolean { - for (const code of ALL_INITIAL_CODE) { - if (content === code) { - return true - } - } - return false + for (const code of ALL_INITIAL_CODE) { + if (content === code) { + return true + } + } + return false } -export function initialCode(language: 'deno' | 'python3' | 'go' | 'bash', kind: Script.kind, subkind: 'pgsql' | 'mysql' | 'flow' | 'script' | undefined): string { - - if (language === 'deno') { - if (kind === 'trigger') { - return DENO_INIT_CODE_TRIGGER - } else if (kind === 'script') { - if (subkind === 'flow') { - return DENO_INIT_CODE_CLEAR - } - else if (subkind === 'pgsql') { - return POSTGRES_INIT_CODE - } - else if (subkind === 'mysql') { - return MYSQL_INIT_CODE - } else { - return DENO_INIT_CODE - } - } else if (kind === 'failure') { - return DENO_FAILURE_MODULE_CODE - } else if (kind === 'approval') { - return DENO_INIT_CODE_APPROVAL - } - else { - return DENO_INIT_CODE - } - } else if (language === 'python3') { - if (subkind === 'flow') { - return PYTHON_INIT_CODE_CLEAR - } else if (kind === 'failure') { - return PYTHON_FAILURE_MODULE_CODE - } else if (kind === 'trigger') { - return PYTHON_INIT_CODE_TRIGGER - } else { - return PYTHON_INIT_CODE - } - } else if (language == 'bash') { - return BASH_INIT_CODE - } else { - if (kind === 'failure') { - return GO_FAILURE_MODULE_CODE - } else if (kind === 'trigger') { - return GO_INIT_CODE_TRIGGER - } else { - return GO_INIT_CODE - } - } +export function initialCode( + language: 'deno' | 'python3' | 'go' | 'bash', + kind: Script.kind, + subkind: 'pgsql' | 'mysql' | 'flow' | 'script' | undefined +): string { + if (language === 'deno') { + if (kind === 'trigger') { + return DENO_INIT_CODE_TRIGGER + } else if (kind === 'script') { + if (subkind === 'flow') { + return DENO_INIT_CODE_CLEAR + } else if (subkind === 'pgsql') { + return POSTGRES_INIT_CODE + } else if (subkind === 'mysql') { + return MYSQL_INIT_CODE + } else { + return DENO_INIT_CODE + } + } else if (kind === 'failure') { + return DENO_FAILURE_MODULE_CODE + } else if (kind === 'approval') { + return DENO_INIT_CODE_APPROVAL + } else { + return DENO_INIT_CODE + } + } else if (language === 'python3') { + if (subkind === 'flow') { + return PYTHON_INIT_CODE_CLEAR + } else if (kind === 'failure') { + return PYTHON_FAILURE_MODULE_CODE + } else if (kind === 'trigger') { + return PYTHON_INIT_CODE_TRIGGER + } else { + return PYTHON_INIT_CODE + } + } else if (language == 'bash') { + return BASH_INIT_CODE + } else { + if (kind === 'failure') { + return GO_FAILURE_MODULE_CODE + } else if (kind === 'trigger') { + return GO_INIT_CODE_TRIGGER + } else { + return GO_INIT_CODE + } + } } diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js index 075593bc50..985007988c 100644 --- a/frontend/svelte.config.js +++ b/frontend/svelte.config.js @@ -10,6 +10,9 @@ const config = { postcss: true }) ], + package: { + dir: 'package' + }, kit: { adapter: