UNPKG

@salesforce/plugin-templates

Version:

Commands to create metadata from a default or custom template

113 lines 4.94 kB
/* * Copyright (c) 2019, salesforce.com, inc. * All rights reserved. * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { TemplateType } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; import { internalFlag, outputDirFlag } from '../../../../utils/flags.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'flexipage'); export default class FlexipageGenerate extends SfCommand { static summary = messages.getMessage('summary'); static description = messages.getMessage('description'); static examples = messages.getMessages('examples'); static state = 'beta'; static flags = { name: Flags.string({ char: 'n', summary: messages.getMessage('flags.name.summary'), description: messages.getMessage('flags.name.description'), required: true, aliases: ['flexipagename'], deprecateAliases: true, }), template: Flags.option({ char: 't', summary: messages.getMessage('flags.template.summary'), required: true, options: ['RecordPage', 'AppPage', 'HomePage'], })(), 'output-dir': outputDirFlag, 'api-version': orgApiVersionFlagWithDeprecations, label: Flags.string({ summary: messages.getMessage('flags.label.summary'), aliases: ['masterlabel'], deprecateAliases: true, }), description: Flags.string({ summary: messages.getMessage('flags.description.summary'), }), sobject: Flags.string({ char: 's', summary: messages.getMessage('flags.sobject.summary'), description: messages.getMessage('flags.sobject.description'), aliases: ['entity-name', 'entity'], deprecateAliases: true, }), 'primary-field': Flags.string({ summary: messages.getMessage('flags.primary-field.summary'), }), 'secondary-fields': Flags.string({ summary: messages.getMessage('flags.secondary-fields.summary'), multiple: true, delimiter: ',', }), 'detail-fields': Flags.string({ summary: messages.getMessage('flags.detail-fields.summary'), multiple: true, delimiter: ',', }), internal: internalFlag, loglevel, }; static MAX_SECONDARY_FIELDS = 11; async run() { const { flags } = await this.parse(FlexipageGenerate); // Validate RecordPage requires sobject if (flags.template === 'RecordPage' && !flags.sobject) { throw new Error(messages.getMessage('errors.recordPageRequiresSobject')); } // Validate RecordPage-specific flags are only used with RecordPage template const recordPageOnlyFlags = ['primary-field', 'secondary-fields', 'detail-fields']; if (flags.template !== 'RecordPage') { for (const flagName of recordPageOnlyFlags) { if (flags[flagName]) { throw new Error(messages.getMessage('errors.flagRequiresRecordPage', [flagName])); } } } // Validate secondary fields limit (Dynamic Highlights Panel supports max 11) const secondaryFieldsCount = flags['secondary-fields']?.length ?? 0; if (secondaryFieldsCount > FlexipageGenerate.MAX_SECONDARY_FIELDS) { throw new Error(messages.getMessage('errors.tooManySecondaryFields', [ secondaryFieldsCount.toString(), FlexipageGenerate.MAX_SECONDARY_FIELDS.toString(), ])); } // Convert CLI flags to library options const flagsAsOptions = { flexipagename: flags.name, template: flags.template, outputdir: flags['output-dir'], apiversion: flags['api-version'], masterlabel: flags.label, description: flags.description, entityName: flags.sobject, primaryField: flags['primary-field'], secondaryFields: flags['secondary-fields'] ?? [], detailFields: flags['detail-fields'] ?? [], internal: flags.internal, }; return runGenerator({ templateType: TemplateType.Flexipage, opts: flagsAsOptions, ux: new Ux({ jsonEnabled: this.jsonEnabled() }), templates: getCustomTemplates(this.configAggregator), }); } } //# sourceMappingURL=index.js.map