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