1.8 KiB
1.8 KiB
Script Runner
Overview
The Script Runner wraps your script's main logic to automatically handle logging, status tracking (success/error), and progress updates. Script execution status can be viewed from "Script Logs" portal page.
Features
- Automatically logs the start and end of your script.
- Records the final status ('success' or 'error').
- Provides a simple function (
trackProgress
) to your script for logging custom progress steps. - Captures script parameters and basic environment details.
Usage
- Import
scriptRunner
. - Define your script's main logic as an
async
function that acceptstrackProgress
as its argument (can ignoretrackProgress
if you don't need to track progress). - Call
scriptRunner
, passing your function and any variables it needs. - Check script execution status by visiting the "Script Logs" portal page using the URL printed in the console output.
Example:
// Import the script runner utility (adjust the path as needed)
import { scriptRunner } from './lib/ScriptRunner.mjs'
const subJobs = 30
/**
* Your script's main work goes here.
* It must be an async function and accept `trackProgress`.
* @param {(message: string) => void} trackProgress - Call this to log progress.
*/
async function main(trackProgress) {
for (let i = 0; i < subJobs; i++) {
await new Promise(resolve => setTimeout(() => resolve(), 1000))
await trackProgress(`Job in progress ${i + 1}/${subJobs}`)
}
await trackProgress('Job finished')
}
// Define any variables your script needs (optional)
const scriptVariables = {
subJobs,
}
// --- Execute the script using the runner with async/await ---
try {
await scriptRunner(main, scriptVariables)
process.exit()
} catch (error) {
console.error(error)
process.exit(1)
}