@defer/redwood
Version:
Setup Defer in RedwoodJS
82 lines (81 loc) • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateTomlConfig = exports.configureDeferClient = exports.addDeferHelloWorldExampleTask = exports.tasks = void 0;
const tslib_1 = require("tslib");
const path_1 = tslib_1.__importDefault(require("path"));
const execa_1 = tslib_1.__importDefault(require("execa"));
const listr2_1 = require("listr2");
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
const cli_helpers_1 = require("@redwoodjs/cli-helpers");
const project_config_1 = require("@redwoodjs/project-config");
const tasks = (options) => {
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 = {
SRC_DEFER_PATH,
SRC_DEFER_CLIENT_PATH_FILE,
};
const existingFiles = options.force ? "OVERWRITE" : "FAIL";
return new listr2_1.Listr([
{
title: "Install Defer packages ...",
task: () => {
execa_1.default.commandSync("yarn workspace api add @defer/client", process.env["RWJS_CWD"]
? {
cwd: process.env["RWJS_CWD"],
}
: {});
},
},
{
title: "Adding config to redwood.toml...",
task: () => {
(0, exports.updateTomlConfig)();
},
},
{
title: "Configure Defer client ...",
task: () => {
(0, exports.configureDeferClient)({ commandPaths, existingFiles });
},
},
{
title: "Add Defer helloWorld function example ...",
task: () => {
(0, exports.addDeferHelloWorldExampleTask)({ commandPaths, existingFiles });
},
},
], { rendererOptions: {} });
};
exports.tasks = tasks;
const addDeferHelloWorldExampleTask = ({ commandPaths, existingFiles, }) => {
// save example Defer function in the defer folder
fs_extra_1.default.ensureDirSync(commandPaths["SRC_DEFER_PATH"]);
const deferHelloWorldTemplate = fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, "..", "..", "templates", "plugin", "helloWorld.ts.template"), "utf-8");
return (0, cli_helpers_1.writeFile)(path_1.default.join(commandPaths["SRC_DEFER_PATH"], "helloWorld.ts"), deferHelloWorldTemplate, {
existingFiles,
});
};
exports.addDeferHelloWorldExampleTask = addDeferHelloWorldExampleTask;
const configureDeferClient = ({ commandPaths, existingFiles, }) => {
const deferHelloWorldTemplate = fs_extra_1.default.readFileSync(path_1.default.resolve(__dirname, "..", "..", "templates", "plugin", "client.ts.template"), "utf-8");
return (0, cli_helpers_1.writeFile)(commandPaths["SRC_DEFER_CLIENT_PATH_FILE"], deferHelloWorldTemplate, {
existingFiles,
});
};
exports.configureDeferClient = configureDeferClient;
const tomlString = `
[experimental.cli]
autoInstall = false
[[experimental.cli.plugins]]
package = "@defer/redwood"`;
const updateTomlConfig = () => {
const redwoodTomlPath = (0, project_config_1.getConfigPath)();
const configContent = fs_extra_1.default.readFileSync(redwoodTomlPath, "utf-8");
if (!configContent.includes("@defer/redwood")) {
(0, cli_helpers_1.writeFile)(redwoodTomlPath, configContent.concat(tomlString), {
existingFiles: "OVERWRITE",
});
}
};
exports.updateTomlConfig = updateTomlConfig;