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 1/3] 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, From 4ce7fabddd50c742b691c7571b2635b3e878bea6 Mon Sep 17 00:00:00 2001 From: HaveAGitGat <43864057+HaveAGitGat@users.noreply.github.com> Date: Tue, 21 May 2024 12:27:59 +0100 Subject: [PATCH 2/3] Use destructuring --- FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts b/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts index 0495ddfc7..f29093e48 100644 --- a/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts +++ b/FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts @@ -192,7 +192,7 @@ const plugin = async (args: IpluginInputArgs): Promise => { args.inputs = lib.loadDefaultValues(args.inputs, details); const userCli = String(args.inputs.userCli); - const useCustomCliPath = args.inputs.useCustomCliPath; + const { useCustomCliPath } = args.inputs; const customCliPath = String(args.inputs.customCliPath); let cliPath = ''; From 8390f412f442974409b9cbc3a8802e7562e43843 Mon Sep 17 00:00:00 2001 From: HaveAGitGat Date: Tue, 21 May 2024 11:29:45 +0000 Subject: [PATCH 3/3] Apply auto-build changes --- .../tools/runCli/1.0.0/index.js | 94 +++++++++++++++---- 1 file changed, 76 insertions(+), 18 deletions(-) diff --git a/FlowPlugins/CommunityFlowPlugins/tools/runCli/1.0.0/index.js b/FlowPlugins/CommunityFlowPlugins/tools/runCli/1.0.0/index.js index 412e89fc9..e9f1e9f5b 100644 --- a/FlowPlugins/CommunityFlowPlugins/tools/runCli/1.0.0/index.js +++ b/FlowPlugins/CommunityFlowPlugins/tools/runCli/1.0.0/index.js @@ -62,6 +62,16 @@ var details = function () { return ({ 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', @@ -73,9 +83,49 @@ var details = function () { return ({ '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', @@ -112,6 +162,17 @@ var details = function () { return ({ }, tooltip: "\n This path can be accessed using ${outputFilePath} in the \"CLI Arguments\" input below.\n\n \\n\n ${cacheDir} is a special variable that points to the Tdarr worker cache directory.\n\n \\n \n ${fileName} is a special variable for the filename without extension.\n \n \\nExample\\n\n ${cacheDir}/${fileName}.{{{args.inputFileObj.container}}}\n ", }, + { + 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. \n Normal variable templating with {{{}}} applies but ${outputFilePath} is a special\n variable from the \"Output File Path\" input above.\n\n \\nExample\\n\n -o \"${outputFilePath}\" \"{{{args.inputFileObj._id}}}\"\n ", + }, { label: 'Output File Becomes Working File?', name: 'outputFileBecomesWorkingFile', @@ -137,17 +198,6 @@ var details = function () { return ({ }, 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. \n Normal variable templating with {{{}}} applies but ${outputFilePath} is a special\n variable from the \"Output File Path\" input above.\n\n \\nExample\\n\n -o \"${outputFilePath}\" \"{{{args.inputFileObj._id}}}\"\n ", - }, ], outputs: [ { @@ -159,7 +209,7 @@ var details = function () { return ({ exports.details = details; // eslint-disable-next-line @typescript-eslint/no-unused-vars var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function () { - var lib, userCli, outputFileBecomesWorkingFile, userOutputFilePath, cliArguments, cacheDir, fileName, cliArgs, availableCli, msg, cli, res, msg; + var lib, userCli, useCustomCliPath, customCliPath, cliPath, outputFileBecomesWorkingFile, userOutputFilePath, cliArguments, cacheDir, fileName, cliArgs, availableCli, msg, cli, res, msg; return __generator(this, function (_a) { switch (_a.label) { case 0: @@ -167,6 +217,9 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign args.inputs = lib.loadDefaultValues(args.inputs, details); userCli = String(args.inputs.userCli); + useCustomCliPath = args.inputs.useCustomCliPath; + customCliPath = String(args.inputs.customCliPath); + cliPath = ''; outputFileBecomesWorkingFile = args.inputs.outputFileBecomesWorkingFile; userOutputFilePath = String(args.inputs.userOutputFilePath); cliArguments = String(args.inputs.cliArguments); @@ -189,14 +242,19 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function mkvpropedit: args.mkvpropeditPath, mkvmerge: 'mkvmerge', }; - if (!availableCli[userCli]) { - msg = "CLI ".concat(userCli, " not available to run in this plugin"); - args.jobLog(msg); - throw new Error(msg); + if (useCustomCliPath) { + cliPath = customCliPath; + } + else { + if (!availableCli[userCli]) { + msg = "CLI ".concat(userCli, " not available to run in this plugin"); + args.jobLog(msg); + throw new Error(msg); + } + cliPath = availableCli[userCli]; } - userCli = availableCli[userCli]; cli = new cliUtils_1.CLI({ - cli: userCli, + cli: cliPath, spawnArgs: cliArgs, spawnOpts: {}, jobLog: args.jobLog,