UNPKG

@defer/redwood

Version:
52 lines (51 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCronTask = exports.tasks = void 0; const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const listr2_1 = require("listr2"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const cli_helpers_1 = require("@redwoodjs/cli-helpers"); const humanize_string_1 = tslib_1.__importDefault(require("humanize-string")); const tasks = (options) => { const PACKAGE_JSON_PATH = path_1.default.join((0, cli_helpers_1.getPaths)().api.base, "package.json"); const SRC_DEFER_PATH = path_1.default.join((0, cli_helpers_1.getPaths)().api.src, "jobs", "defer"); const SRC_DEFER_CLIENT_PATH_FILE = path_1.default.join((0, cli_helpers_1.getPaths)().api.src, "jobs", "clients", "defer.ts"); const commandPaths = { PACKAGE_JSON_PATH, SRC_DEFER_PATH, SRC_DEFER_CLIENT_PATH_FILE, }; const existingFiles = options.force ? "OVERWRITE" : "FAIL"; return new listr2_1.Listr([ { title: "Check Defer is properly configured ...", task: () => { const pkg = JSON.parse(fs_extra_1.default.readFileSync(PACKAGE_JSON_PATH, "utf-8")); if (!Object.keys(pkg.dependencies || {}).includes("@defer/client") || !fs_extra_1.default.existsSync(SRC_DEFER_CLIENT_PATH_FILE)) { throw new Error("Please setup Defer before creating a background function."); } }, }, { title: `Create ${(0, humanize_string_1.default)(options.name)} CRON ...`, task: () => { (0, exports.createCronTask)({ commandPaths, existingFiles, name: options.name, }); }, }, ], { rendererOptions: {} }); }; exports.tasks = tasks; const createCronTask = ({ commandPaths, existingFiles, name, }) => { fs_extra_1.default.ensureDirSync(commandPaths["SRC_DEFER_PATH"]); const deferCronTemplate = fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, "..", "..", "templates", "cron", "sendMondayNewsletter.template"), "utf-8"); return (0, cli_helpers_1.writeFile)(path_1.default.join(commandPaths["SRC_DEFER_PATH"], `${(0, humanize_string_1.default)(name)}.ts`), deferCronTemplate.replace(/sendMondayNewsletter/g, (0, humanize_string_1.default)(name)), { existingFiles, }); }; exports.createCronTask = createCronTask;