forked from tsai/budibase
3 changed files with 60 additions and 1 deletions
@ -0,0 +1,56 @@ |
|||
const scriptController = require("../../api/controllers/script") |
|||
const { execSync } = require("child_process") |
|||
const { processStringSync } = require("@budibase/string-templates") |
|||
|
|||
module.exports.definition = { |
|||
name: "Bash Scripting", |
|||
tagline: "Execute a bash command", |
|||
icon: "ri-terminal-box-line", |
|||
description: "Run a bash script", |
|||
type: "ACTION", |
|||
stepId: "EXECUTE_BASH", |
|||
inputs: {}, |
|||
schema: { |
|||
inputs: { |
|||
properties: { |
|||
code: { |
|||
type: "string", |
|||
customType: "code", |
|||
title: "Code", |
|||
}, |
|||
}, |
|||
required: ["code"], |
|||
}, |
|||
outputs: { |
|||
properties: { |
|||
stdout: { |
|||
type: "string", |
|||
description: "Standard output of your bash command or script.", |
|||
}, |
|||
}, |
|||
}, |
|||
required: ["stdout"], |
|||
}, |
|||
} |
|||
|
|||
module.exports.run = async function ({ inputs, context }) { |
|||
if (inputs.code == null) { |
|||
return { |
|||
stdout: "Budibase bash automation failed: Invalid inputs", |
|||
} |
|||
} |
|||
|
|||
try { |
|||
const command = processStringSync(inputs.code, context) |
|||
const stdout = execSync(command, { timeout: 1000 }) |
|||
return { |
|||
stdout, |
|||
} |
|||
} catch (err) { |
|||
console.error(err) |
|||
return { |
|||
success: false, |
|||
response: err, |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue