From 205a033717d4597815a4daf9690e52f274204568 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Sat, 24 Oct 2020 14:37:45 +0200 Subject: [PATCH] :sparkles: Add CLI command to deactivate workflows --- packages/cli/bin/n8n | 17 +---- .../commands/config/workflow/deactivate.ts | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 packages/cli/commands/config/workflow/deactivate.ts diff --git a/packages/cli/bin/n8n b/packages/cli/bin/n8n index 7f02bd1a7d..063fab19a2 100755 --- a/packages/cli/bin/n8n +++ b/packages/cli/bin/n8n @@ -10,7 +10,7 @@ process.env.NODE_CONFIG_DIR = process.env.NODE_CONFIG_DIR || path.join(__dirname var versionFlags = [ // tslint:disable-line:no-var-keyword '-v', '-V', - '--version' + '--version', ]; if (versionFlags.includes(process.argv.slice(-1)[0])) { console.log(require('../package').version); @@ -22,21 +22,6 @@ if (process.argv.length === 2) { process.argv.push('start'); } -var command = process.argv[2]; // tslint:disable-line:no-var-keyword - -// Check if the command the user did enter is supported else stop -var supportedCommands = [ // tslint:disable-line:no-var-keyword - 'execute', - 'help', - 'start', -]; - -if (!supportedCommands.includes(command)) { - console.log('\nThe command "' + command + '" is not known!\n'); - process.argv.pop(); - process.argv.push('--help'); -} - if (parseInt(process.versions.node.split('.')[0], 10) < 10) { console.log('\nThe Node.js version is too old to run n8n. Please use version 10 or later!\n'); process.exit(0); diff --git a/packages/cli/commands/config/workflow/deactivate.ts b/packages/cli/commands/config/workflow/deactivate.ts new file mode 100644 index 0000000000..8c76dcf790 --- /dev/null +++ b/packages/cli/commands/config/workflow/deactivate.ts @@ -0,0 +1,70 @@ +import { + Command, flags, +} from '@oclif/command'; + +import { + IDataObject +} from 'n8n-workflow'; + +import { + Db, + GenericHelpers, +} from "../../../src"; + + +export class DeactivateCommand extends Command { + static description = '\nDeactivates workflows'; + + static examples = [ + `$ n8n config:workflow:deactivate --all`, + `$ n8n config:workflow:deactivate --id=5`, + ]; + + static flags = { + help: flags.help({ char: 'h' }), + all: flags.boolean({ + description: 'Deactivates all workflows', + }), + id: flags.string({ + description: 'Deactivats the workflow with the given ID', + }), + }; + + async run() { + const { flags } = this.parse(DeactivateCommand); + + if (!flags.all && !flags.id) { + GenericHelpers.logOutput(`Either option "--all" or "--id" have to be set!`); + return; + } + + if (flags.all && flags.id) { + GenericHelpers.logOutput(`Either "--all" or "--id" can be set never both!`); + return; + } + + try { + await Db.init(); + + const findQuery: IDataObject = {}; + if (flags.id) { + console.log(`Deactivating workflow with ID: ${flags.id}`); + findQuery.id = flags.id; + } else { + console.log('Deactivating all workflows'); + findQuery.active = true; + } + + await Db.collections.Workflow!.update(findQuery, { active: false }); + console.log('Done'); + } catch (e) { + console.error('\nGOT ERROR'); + console.log('===================================='); + console.error(e.message); + console.error(e.stack); + this.exit(1); + } + + this.exit(); + } +}