@n0safe/indirectus
Version:
Directus Tools CLI.
109 lines • 4.56 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const citty_1 = require("citty");
const console_1 = __importDefault(require("../console"));
const options_1 = require("@wolfpkgs/core/options");
const generator_1 = require("../../types/generators/generator");
const node_path_1 = __importDefault(require("node:path"));
(async function main() {
try {
}
catch (e) {
console_1.default.error(options_1.Options.getErrorMessage(e));
console_1.default.error(e);
process.exit(1);
}
})();
exports.default = (0, citty_1.defineCommand)({
meta: {
name: "generate",
description: "Generates an SDK for a given schema",
},
args: {
url: {
type: "string",
required: true,
description: "The URL of the Directus instance to generate an SDK for",
default: process.env.DIRECTUS_URL ?? "http://localhost:8055",
valueHint: process.env.DIRECTUS_URL ?? "http://localhost:8055",
},
token: {
type: "string",
description: "An static token with admin role assigned.",
default: process.env.DIRECTUS_TOKEN ?? undefined,
valueHint: "static-token",
},
dir: {
type: "string",
required: false,
description: "Set a custom directory instead of '.directus'",
default: "./.directus/",
valueHint: "./.directus/",
},
outputDir: {
type: "string",
required: false,
description: "Set a custom directory instead of '.directus'",
default: "./.directus/generated",
valueHint: "./.directus/generated",
},
cache: {
type: "boolean",
required: false,
description: "Whether to enable caching to avoid subsequent requests to the server.",
default: false,
},
plugins: {
type: 'positional',
required: false,
description: 'A list of plugins to use',
valueHint: 'plugin1,plugin2,...',
default: '',
}
},
async run(context) {
const options = await generator_1.GeneratorOptions.get({
url: context.args.url,
token: context.args.token,
config: context.args.dir,
output: context.args.outputDir ?? node_path_1.default.join(context.args.dir, "generated"),
template: "default",
useCache: context.args.cache,
plugins: context.args.plugins,
});
const generator = new generator_1.Generator(options);
generator.on("schema.begin", async () => console_1.default.start("Fetching schema"));
generator.on("schema.success", async () => console_1.default.success("Schema fetched"));
generator.on("schema.failure", async (err) => {
console_1.default.fail("Error fetching schema");
console_1.default.error(err);
});
generator.on("file.format.error", async (file, err) => {
console_1.default.error("Error formatting file", err);
});
generator.on("generation.begin", async () => console_1.default.start("Starting generation"));
generator.on("generation.success", async () => console_1.default.success("Generation finished"));
generator.on("generation.failure", async (err) => {
console_1.default.fail("Generation errror", err);
console_1.default.error(err);
});
generator.on("generation.plugins.begin", async () => console_1.default.start("Starting plugins generation"));
generator.on("generation.plugins.success", async () => console_1.default.success("Plugins generation finished"));
generator.on("generation.plugins.failure", async (err) => {
console_1.default.fail("Plugins Generation errror", err);
console_1.default.error(err);
});
generator.on('generation.plugins.generate', async (pluginName) => {
console_1.default.info(`Generating plugin: ${pluginName}`);
});
generator.on('plugins', async (plugins) => {
console_1.default.info(`Using plugins: ${plugins.join(', ')}`);
});
await generator.initialize();
await generator.generate();
},
});
//# sourceMappingURL=generate.js.map