UNPKG

trigger.dev

Version:

A Command-Line Interface for Trigger.dev (v3) projects

50 lines 1.79 kB
import fs from "fs/promises"; import { pathExists } from "./fileSystem.js"; import path from "path"; export async function createFileFromTemplate(params) { try { const response = await fetch(params.templateUrl); if (!response.ok) { throw new Error(`Failed to fetch template: ${response.statusText}`); } const template = await response.text(); if ((await pathExists(params.outputPath)) && !params.override) { return { success: true, alreadyExisted: true, }; } const output = replaceAll(template, params.replacements); const directoryName = path.dirname(params.outputPath); await fs.mkdir(directoryName, { recursive: true }); await fs.writeFile(params.outputPath, output); return { success: true, alreadyExisted: false, }; } catch (e) { if (e instanceof Error) { return { success: false, error: e.message, }; } return { success: false, error: JSON.stringify(e), }; } } // find strings that match ${varName} and replace with the value from a Record<string, string> where { varName: "value" } export function replaceAll(input, replacements) { let output = input; for (const [key, value] of Object.entries(replacements)) { output = output.replace(new RegExp(`\\$\\{${key}\\}`, "g"), value); } return output; } export function generateTemplateUrl(templateName, ref = "main") { return `https://raw.githubusercontent.com/triggerdotdev/trigger.dev/${ref}/packages/cli-v3/templates/${templateName}.template`; } //# sourceMappingURL=createFileFromTemplate.js.map