Skip to content

Commit

Permalink
Merge pull request #643 from HaveAGitGat/cli
Browse files Browse the repository at this point in the history
Add useCustomCliPath and customCliPath inputs
  • Loading branch information
HaveAGitGat authored May 21, 2024
2 parents b52baf8 + 8390f41 commit 11a623c
Show file tree
Hide file tree
Showing 2 changed files with 160 additions and 43 deletions.
94 changes: 76 additions & 18 deletions FlowPlugins/CommunityFlowPlugins/tools/runCli/1.0.0/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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',
Expand Down Expand Up @@ -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',
Expand All @@ -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: [
{
Expand All @@ -159,14 +209,17 @@ 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:
lib = require('../../../../../methods/lib')();
// 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);
Expand All @@ -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,
Expand Down
109 changes: 84 additions & 25 deletions FlowPluginsTs/CommunityFlowPlugins/tools/runCli/1.0.0/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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',
Expand Down Expand Up @@ -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',
Expand All @@ -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: [
{
Expand All @@ -140,7 +191,11 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {
// 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;
const customCliPath = String(args.inputs.customCliPath);
let cliPath = '';

const {
outputFileBecomesWorkingFile,
} = args.inputs;
Expand Down Expand Up @@ -175,16 +230,20 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {
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,
Expand Down

0 comments on commit 11a623c

Please sign in to comment.