From 58dc01bda9949eb44f1c48f02183a194484a8749 Mon Sep 17 00:00:00 2001 From: HaveAGitGat <43864057+HaveAGitGat@users.noreply.github.com> Date: Tue, 21 May 2024 12:26:36 +0100 Subject: [PATCH] Add useCustomCliPath and customCliPath inputs --- .../tools/runCli/1.0.0/index.ts | 109 ++++++++++++++---- 1 file changed, 84 insertions(+), 25 deletions(-) diff --git a/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts index 9fbc7fc0d..0495ddfc7 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts @@ -20,6 +20,16 @@ const details = (): IpluginDetails => ({ sidebarPosition: -1, icon: '', inputs: [ + { + label: 'Use Custom CLI Path?', + name: 'useCustomCliPath', + type: 'boolean', + defaultValue: 'false', + inputUI: { + type: 'switch', + }, + tooltip: 'Specify whether to use a custom CLI path', + }, { label: 'CLI', name: 'userCli', @@ -31,9 +41,49 @@ const details = (): IpluginDetails => ({ 'mkvmerge', 'mkvpropedit', ], + displayConditions: { + logic: 'AND', + sets: [ + { + logic: 'AND', + inputs: [ + { + name: 'useCustomCliPath', + value: 'false', + condition: '===', + }, + ], + }, + ], + }, }, tooltip: 'CLI to run', }, + { + label: 'Custom CLI Path', + name: 'customCliPath', + type: 'string', + defaultValue: '/usr/bin/mkvmerge', + inputUI: { + type: 'text', + displayConditions: { + logic: 'AND', + sets: [ + { + logic: 'AND', + inputs: [ + { + name: 'useCustomCliPath', + value: 'true', + condition: '===', + }, + ], + }, + ], + }, + }, + tooltip: 'Specify the path to the CLI to run', + }, { label: 'Does Command Create Output File?', name: 'doesCommandCreateOutputFile', @@ -82,6 +132,24 @@ const details = (): IpluginDetails => ({ \${cacheDir}/\${fileName}.{{{args.inputFileObj.container}}} `, }, + { + label: 'CLI Arguments', + name: 'cliArguments', + type: 'string', + // eslint-disable-next-line no-template-curly-in-string + defaultValue: '-o "${outputFilePath}" "{{{args.inputFileObj._id}}}"', + inputUI: { + type: 'text', + }, + tooltip: `Specify arguments to pass to the CLI. + Normal variable templating with {{{}}} applies but \${outputFilePath} is a special + variable from the "Output File Path" input above. + + \\nExample\\n + -o "\${outputFilePath}" "{{{args.inputFileObj._id}}}" + `, + }, + { label: 'Output File Becomes Working File?', name: 'outputFileBecomesWorkingFile', @@ -108,23 +176,6 @@ const details = (): IpluginDetails => ({ tooltip: 'Toggle this on to make the output file become the working file for the next plugin.', }, - { - label: 'CLI Arguments', - name: 'cliArguments', - type: 'string', - // eslint-disable-next-line no-template-curly-in-string - defaultValue: '-o "${outputFilePath}" "{{{args.inputFileObj._id}}}"', - inputUI: { - type: 'text', - }, - tooltip: `Specify arguments to pass to the CLI. - Normal variable templating with {{{}}} applies but \${outputFilePath} is a special - variable from the "Output File Path" input above. - - \\nExample\\n - -o "\${outputFilePath}" "{{{args.inputFileObj._id}}}" - `, - }, ], outputs: [ { @@ -140,7 +191,11 @@ const plugin = async (args: IpluginInputArgs): Promise => { // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); - let userCli = String(args.inputs.userCli); + const userCli = String(args.inputs.userCli); + const useCustomCliPath = args.inputs.useCustomCliPath; + const customCliPath = String(args.inputs.customCliPath); + let cliPath = ''; + const { outputFileBecomesWorkingFile, } = args.inputs; @@ -175,16 +230,20 @@ const plugin = async (args: IpluginInputArgs): Promise => { mkvmerge: 'mkvmerge', }; - if (!availableCli[userCli]) { - const msg = `CLI ${userCli} not available to run in this plugin`; - args.jobLog(msg); - throw new Error(msg); - } + if (useCustomCliPath) { + cliPath = customCliPath; + } else { + if (!availableCli[userCli]) { + const msg = `CLI ${userCli} not available to run in this plugin`; + args.jobLog(msg); + throw new Error(msg); + } - userCli = availableCli[userCli]; + cliPath = availableCli[userCli]; + } const cli = new CLI({ - cli: userCli, + cli: cliPath, spawnArgs: cliArgs, spawnOpts: {}, jobLog: args.jobLog,