@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
47 lines • 2.53 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const schema_1 = require("@sprucelabs/schema");
const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
const spruce_skill_utils_2 = require("@sprucelabs/spruce-skill-utils");
const createSchemaOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema"));
const syncSchemasOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema"));
const AbstractAction_1 = __importDefault(require("../../AbstractAction"));
class CreateAction extends AbstractAction_1.default {
optionsSchema = createSchemaOptions_schema_1.default;
invocationMessage = 'Creating your schema builder... 📃';
async execute(options) {
const normalizedOptions = this.validateAndNormalizeOptions(options);
const { schemaBuilderDestinationDir, nameCamel, namePascal, nameReadable, syncAfterCreate, shouldEnableVersioning, version, ...rest } = normalizedOptions;
const resolvedDestination = spruce_skill_utils_2.diskUtil.resolvePath(this.cwd, schemaBuilderDestinationDir);
let resolvedVersion;
if (shouldEnableVersioning) {
resolvedVersion = await this.resolveVersion(version, resolvedDestination);
}
const generator = this.Writer('schema');
const results = await generator.writeBuilder(resolvedDestination, {
...rest,
nameCamel,
shouldEnableVersioning: shouldEnableVersioning ?? undefined,
version: resolvedVersion,
nameReadable: nameReadable ?? nameCamel,
namePascal: namePascal ?? spruce_skill_utils_1.namesUtil.toPascal(nameCamel),
});
let errors;
if (syncAfterCreate) {
const syncOptions = (0, schema_1.normalizeSchemaValues)(syncSchemasOptions_schema_1.default, rest, {
shouldIncludePrivateFields: true,
});
const syncResults = await this.Action('schema', 'sync').execute(syncOptions);
results.push(...(syncResults.files ?? []));
if (syncResults.errors) {
errors = syncResults.errors;
}
}
return { files: results, errors };
}
}
exports.default = CreateAction;
//# sourceMappingURL=CreateAction.js.map