UNPKG

n8n-nodes-tail

Version:
92 lines 3.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Tail = void 0; const child_process_1 = require("child_process"); class Tail { constructor() { this.description = { displayName: 'Tail Trigger', name: 'tail', icon: 'fa:terminal', group: ['trigger'], version: 1, triggerPanel: true, subtitle: '={{$parameter["file"]}}', description: 'Starts the workflow when lines are added to this file', defaults: { name: 'Tail Trigger', }, inputs: ['main'], outputs: ['main'], properties: [ { displayName: 'Directory', name: 'directory', type: 'string', default: '/home/user/', required: true, description: 'Define a working directory', }, { displayName: 'File', name: 'file', type: 'string', default: 'file.log', required: true, description: 'Specify a file to monitor for real-time updates', }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add option', default: {}, options: [ { displayName: 'Last Lines', name: 'last', type: 'number', default: 0, description: 'How many last lines are loaded on startup?', }, ], }, ], }; } async trigger() { const directory = this.getNodeParameter('directory'); const file = this.getNodeParameter('file'); const options = this.getNodeParameter('options'); const last = options.last || 0; const args = ['-f', '-n', last.toString(), directory + file]; console.log(`Tail process starting on ${directory}${file}`); let child = (0, child_process_1.spawn)('tail', args); child.stderr.pipe(process.stderr); child.stdout.on('data', (data) => { console.log(data.toString()); const lines = data .toString() .split('\n') .filter((line) => line.trim() !== ''); for (const line of lines) { this.emit([this.helpers.returnJsonArray([{ line: line }])]); } }); child.on('close', (code, signal) => { console.log(`Tail process terminated on ${directory}${file}`); }); child.stderr.on('data', (error) => { closeFunction(); this.emitError(new Error(error.toString())); }); async function closeFunction() { child.kill('SIGHUP'); } return { closeFunction, }; } } exports.Tail = Tail; //# sourceMappingURL=Tail.node.js.map