Add useCustomCliPath and customCliPath inputs

make-only-subtitle-default
HaveAGitGat 2 years ago
parent b52baf82d8
commit 58dc01bda9

@ -20,6 +20,16 @@ const details = (): IpluginDetails => ({
sidebarPosition: -1, sidebarPosition: -1,
icon: '', icon: '',
inputs: [ 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', label: 'CLI',
name: 'userCli', name: 'userCli',
@ -31,9 +41,49 @@ const details = (): IpluginDetails => ({
'mkvmerge', 'mkvmerge',
'mkvpropedit', 'mkvpropedit',
], ],
displayConditions: {
logic: 'AND',
sets: [
{
logic: 'AND',
inputs: [
{
name: 'useCustomCliPath',
value: 'false',
condition: '===',
},
],
},
],
},
}, },
tooltip: 'CLI to run', 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?', label: 'Does Command Create Output File?',
name: 'doesCommandCreateOutputFile', name: 'doesCommandCreateOutputFile',
@ -82,6 +132,24 @@ const details = (): IpluginDetails => ({
\${cacheDir}/\${fileName}.{{{args.inputFileObj.container}}} \${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?', label: 'Output File Becomes Working File?',
name: 'outputFileBecomesWorkingFile', name: 'outputFileBecomesWorkingFile',
@ -108,23 +176,6 @@ const details = (): IpluginDetails => ({
tooltip: tooltip:
'Toggle this on to make the output file become the working file for the next plugin.', '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: [ outputs: [
{ {
@ -140,7 +191,11 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details); 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 { const {
outputFileBecomesWorkingFile, outputFileBecomesWorkingFile,
} = args.inputs; } = args.inputs;
@ -175,16 +230,20 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {
mkvmerge: 'mkvmerge', mkvmerge: 'mkvmerge',
}; };
if (useCustomCliPath) {
cliPath = customCliPath;
} else {
if (!availableCli[userCli]) { if (!availableCli[userCli]) {
const msg = `CLI ${userCli} not available to run in this plugin`; const msg = `CLI ${userCli} not available to run in this plugin`;
args.jobLog(msg); args.jobLog(msg);
throw new Error(msg); throw new Error(msg);
} }
userCli = availableCli[userCli]; cliPath = availableCli[userCli];
}
const cli = new CLI({ const cli = new CLI({
cli: userCli, cli: cliPath,
spawnArgs: cliArgs, spawnArgs: cliArgs,
spawnOpts: {}, spawnOpts: {},
jobLog: args.jobLog, jobLog: args.jobLog,

Loading…
Cancel
Save