diff --git a/command-snapshot.json b/command-snapshot.json index f2237961..d18f08e0 100644 --- a/command-snapshot.json +++ b/command-snapshot.json @@ -1,55 +1,79 @@ [ { - "alias": ["force:analytics:template:create"], - "command": "analytics:generate:template", + "alias": ["force:analytics:template:create", "analytics:generate:template"], + "command": "template:generate:analytics:template", "flagAliases": ["apiversion", "outputdir", "templatename"], "flagChars": ["d", "n"], "flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:lightning:app:create"], - "command": "lightning:generate:app", + "alias": ["force:apex:class:create", "apex:generate:class"], + "command": "template:generate:apex:class", + "flagAliases": ["apiversion", "classname", "outputdir"], + "flagChars": ["d", "n", "t"], + "flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "template"], + "plugin": "@salesforce/plugin-templates" + }, + { + "alias": ["force:apex:trigger:create", "apex:generate:trigger"], + "command": "template:generate:apex:trigger", + "flagAliases": ["apiversion", "outputdir", "triggerevents", "triggername"], + "flagChars": ["d", "e", "n", "s", "t"], + "flags": ["api-version", "event", "flags-dir", "json", "loglevel", "name", "output-dir", "sobject", "template"], + "plugin": "@salesforce/plugin-templates" + }, + { + "alias": [], + "command": "template:generate:digital-experience:site", + "flagAliases": [], + "flagChars": ["d", "e", "n", "o", "p", "t"], + "flags": ["admin-email", "flags-dir", "json", "name", "output-dir", "target-org", "template", "url-path-prefix"], + "plugin": "@salesforce/plugin-templates" + }, + { + "alias": ["force:lightning:app:create", "lightning:generate:app"], + "command": "template:generate:lightning:app", "flagAliases": ["apiversion", "appname", "outputdir"], "flagChars": ["d", "i", "n", "t"], "flags": ["api-version", "flags-dir", "internal", "json", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:lightning:component:create"], - "command": "lightning:generate:component", + "alias": ["force:lightning:component:create", "lightning:generate:component"], + "command": "template:generate:lightning:component", "flagAliases": ["apiversion", "componentname", "outputdir"], "flagChars": ["d", "i", "n", "t"], "flags": ["api-version", "flags-dir", "internal", "json", "loglevel", "name", "output-dir", "template", "type"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:lightning:event:create"], - "command": "lightning:generate:event", + "alias": ["force:lightning:event:create", "lightning:generate:event"], + "command": "template:generate:lightning:event", "flagAliases": ["apiversion", "eventname", "outputdir"], "flagChars": ["d", "i", "n", "t"], "flags": ["api-version", "flags-dir", "internal", "json", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:lightning:interface:create"], - "command": "lightning:generate:interface", + "alias": ["force:lightning:interface:create", "lightning:generate:interface"], + "command": "template:generate:lightning:interface", "flagAliases": ["apiversion", "interfacename", "outputdir"], "flagChars": ["d", "i", "n", "t"], "flags": ["api-version", "flags-dir", "internal", "json", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:lightning:test:create"], - "command": "lightning:generate:test", + "alias": ["force:lightning:test:create", "lightning:generate:test"], + "command": "template:generate:lightning:test", "flagAliases": ["apiversion", "outputdir", "testname"], "flagChars": ["d", "i", "n", "t"], "flags": ["api-version", "flags-dir", "internal", "json", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:project:create"], - "command": "project:generate", + "alias": ["force:project:create", "project:generate"], + "command": "template:generate:project", "flagAliases": ["defaultpackagedir", "loginurl", "outputdir", "projectname"], "flagChars": ["d", "l", "n", "p", "s", "t", "x"], "flags": [ @@ -68,56 +92,32 @@ "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:staticresource:create"], - "command": "static-resource:generate", + "alias": ["force:staticresource:create", "static-resource:generate"], + "command": "template:generate:static-resource", "flagAliases": ["apiversion", "contenttype", "outputdir", "resourcename"], "flagChars": ["d", "n"], "flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "type"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:apex:class:create", "apex:generate:class"], - "command": "template:generate:apex:class", - "flagAliases": ["apiversion", "classname", "outputdir"], - "flagChars": ["d", "n", "t"], - "flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "template"], - "plugin": "@salesforce/plugin-templates" - }, - { - "alias": ["force:apex:trigger:create", "apex:generate:trigger"], - "command": "template:generate:apex:trigger", - "flagAliases": ["apiversion", "outputdir", "triggerevents", "triggername"], - "flagChars": ["d", "e", "n", "s", "t"], - "flags": ["api-version", "event", "flags-dir", "json", "loglevel", "name", "output-dir", "sobject", "template"], - "plugin": "@salesforce/plugin-templates" - }, - { - "alias": [], - "command": "template:generate:digital-experience:site", - "flagAliases": [], - "flagChars": ["d", "n", "p", "e", "o", "t"], - "flags": ["flags-dir", "json", "name", "output-dir", "url-path-prefix", "admin-email", "target-org", "template"], - "plugin": "@salesforce/plugin-templates" - }, - { - "alias": ["force:visualforce:component:create"], - "command": "visualforce:generate:component", + "alias": ["force:visualforce:component:create", "visualforce:generate:component"], + "command": "template:generate:visualforce:component", "flagAliases": ["apiversion", "componentname", "outputdir"], "flagChars": ["d", "l", "n", "t"], "flags": ["api-version", "flags-dir", "json", "label", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": ["force:visualforce:page:create"], - "command": "visualforce:generate:page", + "alias": ["force:visualforce:page:create", "visualforce:generate:page"], + "command": "template:generate:visualforce:page", "flagAliases": ["apiversion", "outputdir", "pagename"], "flagChars": ["d", "l", "n", "t"], "flags": ["api-version", "flags-dir", "json", "label", "loglevel", "name", "output-dir", "template"], "plugin": "@salesforce/plugin-templates" }, { - "alias": [], - "command": "webapp:generate", + "alias": ["webapp:generate"], + "command": "template:generate:webapp", "flagAliases": [], "flagChars": ["d", "l", "n", "t"], "flags": ["api-version", "flags-dir", "json", "label", "name", "output-dir", "template"], diff --git a/package.json b/package.json index 336d8ed6..93c9571f 100644 --- a/package.json +++ b/package.json @@ -52,49 +52,35 @@ "@salesforce/plugin-settings" ], "topics": { - "analytics": { - "external": true, - "description": "Work with analytics assets.", - "subtopics": { - "generate": { - "description": "Create analytics templates." - } - } - }, - "lightning": { - "description": "Work with Lightning Web and Aura components.", - "external": true, - "subtopics": { - "generate": { - "description": "Create LWC and Aura components and associated metadata." - } - } - }, - "project": { - "description": "Work with projects, such as deploy and retrieve metadata." - }, - "visualforce": { - "description": "Work with Visualforce components.", - "subtopics": { - "generate": { - "description": "Create a Visualforce page or component." - } - } - }, - "static-resource": { - "description": "Work with static resources." - }, "template": { "description": "Collection of Salesforce templates.", "subtopics": { "generate": { "description": "Use a Salesforce template to generate local files.", "subtopics": { + "analytics": { + "description": "Create analytics templates." + }, "apex": { "description": "Create an apex class or trigger." }, "digital-experience": { "description": "Create a Digital Experience site." + }, + "lightning": { + "description": "Create LWC and Aura components and associated metadata." + }, + "project": { + "description": "Work with projects, such as deploy and retrieve metadata." + }, + "static-resource": { + "description": "Work with static resources." + }, + "visualforce": { + "description": "Create a visualforce page or component." + }, + "webapp": { + "description": "Create a web application." } } } diff --git a/src/commands/analytics/generate/template.ts b/src/commands/template/generate/analytics/template.ts similarity index 90% rename from src/commands/analytics/generate/template.ts rename to src/commands/template/generate/analytics/template.ts index c2813564..5c564562 100644 --- a/src/commands/analytics/generate/template.ts +++ b/src/commands/template/generate/analytics/template.ts @@ -8,8 +8,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { AnalyticsTemplateOptions, CreateOutput, TemplateType } from '@salesforce/templates'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { outputDirFlag } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { outputDirFlag } from '../../../../utils/flags.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'analyticsTemplate'); @@ -17,7 +17,7 @@ export default class AnalyticsTemplate extends SfCommand { public static readonly examples = messages.getMessages('examples'); public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); - public static readonly aliases = ['force:analytics:template:create']; + public static readonly aliases = ['force:analytics:template:create', 'analytics generate template']; public static readonly deprecateAliases = true; public static readonly flags = { 'output-dir': outputDirFlag, diff --git a/src/commands/lightning/generate/app.ts b/src/commands/template/generate/lightning/app.ts similarity index 93% rename from src/commands/lightning/generate/app.ts rename to src/commands/template/generate/lightning/app.ts index f0e2593b..0805b370 100644 --- a/src/commands/lightning/generate/app.ts +++ b/src/commands/template/generate/lightning/app.ts @@ -9,8 +9,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } fro import { CreateOutput, LightningAppOptions, TemplateType } from '@salesforce/templates'; import { CreateUtil } from '@salesforce/templates/lib/utils/index.js'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { internalFlag, outputDirFlagLightning } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { internalFlag, outputDirFlagLightning } from '../../../../utils/flags.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const lightningCommonMessages = Messages.loadMessages('@salesforce/plugin-templates', 'lightning'); @@ -22,7 +22,7 @@ export default class LightningApp extends SfCommand { public static readonly summary = lightningCommonMessages.getMessage('summary', [BUNDLE_TYPE]); public static readonly description = lightningCommonMessages.getMessage('description', [BUNDLE_TYPE]); public static readonly examples = lightningAppMessages.getMessages('examples'); - public static readonly aliases = ['force:lightning:app:create']; + public static readonly aliases = ['force:lightning:app:create', 'lightning:generate:app']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/lightning/generate/component.ts b/src/commands/template/generate/lightning/component.ts similarity index 93% rename from src/commands/lightning/generate/component.ts rename to src/commands/template/generate/lightning/component.ts index 3f0995c3..7b8af80e 100644 --- a/src/commands/lightning/generate/component.ts +++ b/src/commands/template/generate/lightning/component.ts @@ -10,8 +10,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { CreateOutput, LightningComponentOptions, TemplateType } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { internalFlag, outputDirFlagLightning } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { internalFlag, outputDirFlagLightning } from '../../../../utils/flags.js'; const BUNDLE_TYPE = 'Component'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -21,7 +21,7 @@ export default class LightningComponent extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:lightning:component:create']; + public static readonly aliases = ['force:lightning:component:create', 'lightning:generate:component']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/lightning/generate/event.ts b/src/commands/template/generate/lightning/event.ts similarity index 92% rename from src/commands/lightning/generate/event.ts rename to src/commands/template/generate/lightning/event.ts index 64c143f7..d9931dd4 100644 --- a/src/commands/lightning/generate/event.ts +++ b/src/commands/template/generate/lightning/event.ts @@ -9,8 +9,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } fro import { CreateOutput, LightningEventOptions, TemplateType } from '@salesforce/templates'; import { CreateUtil } from '@salesforce/templates/lib/utils/index.js'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { internalFlag, outputDirFlagLightning } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { internalFlag, outputDirFlagLightning } from '../../../../utils/flags.js'; const lightningEventFileSuffix = /.evt$/; const BUNDLE_TYPE = 'Event'; @@ -23,7 +23,7 @@ export default class LightningEvent extends SfCommand { public static readonly summary = lightningCommon.getMessage('summary', [BUNDLE_TYPE]); public static readonly description = lightningCommon.getMessage('description', [BUNDLE_TYPE]); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:lightning:event:create']; + public static readonly aliases = ['force:lightning:event:create', 'lightning:generate:event']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/lightning/generate/interface.ts b/src/commands/template/generate/lightning/interface.ts similarity index 92% rename from src/commands/lightning/generate/interface.ts rename to src/commands/template/generate/lightning/interface.ts index 74be3b77..1aaf38c4 100644 --- a/src/commands/lightning/generate/interface.ts +++ b/src/commands/template/generate/lightning/interface.ts @@ -9,8 +9,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } fro import { CreateOutput, LightningInterfaceOptions, TemplateType } from '@salesforce/templates'; import { CreateUtil } from '@salesforce/templates/lib/utils/index.js'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { internalFlag, outputDirFlagLightning } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { internalFlag, outputDirFlagLightning } from '../../../../utils/flags.js'; const lightningInterfaceFileSuffix = /.intf$/; const BUNDLE_TYPE = 'Interface'; @@ -22,7 +22,7 @@ export default class LightningInterface extends SfCommand { public static readonly summary = lightningCommon.getMessage('summary', [BUNDLE_TYPE]); public static readonly description = lightningCommon.getMessage('description', [BUNDLE_TYPE]); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:lightning:interface:create']; + public static readonly aliases = ['force:lightning:interface:create', 'lightning:generate:interface']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/lightning/generate/test.ts b/src/commands/template/generate/lightning/test.ts similarity index 93% rename from src/commands/lightning/generate/test.ts rename to src/commands/template/generate/lightning/test.ts index f51a6d52..5bdd61a7 100644 --- a/src/commands/lightning/generate/test.ts +++ b/src/commands/template/generate/lightning/test.ts @@ -9,8 +9,8 @@ import { Flags, loglevel, SfCommand, orgApiVersionFlagWithDeprecations, Ux } fro import { CreateOutput, LightningTestOptions, TemplateType } from '@salesforce/templates'; import { CreateUtil } from '@salesforce/templates/lib/utils/index.js'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { internalFlag, outputDirFlagLightning } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { internalFlag, outputDirFlagLightning } from '../../../../utils/flags.js'; const lightningTestFileSuffix = /.resource$/; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -20,7 +20,7 @@ export default class LightningTest extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:lightning:test:create']; + public static readonly aliases = ['force:lightning:test:create', 'lightning:generate:test']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/project/generate.ts b/src/commands/template/generate/project/index.ts similarity index 93% rename from src/commands/project/generate.ts rename to src/commands/template/generate/project/index.ts index 920ed6f9..f8bc66bd 100644 --- a/src/commands/project/generate.ts +++ b/src/commands/template/generate/project/index.ts @@ -8,8 +8,8 @@ import { Flags, loglevel, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { CreateOutput, ProjectOptions, TemplateType } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../utils/templateCommand.js'; -import { outputDirFlag } from '../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { outputDirFlag } from '../../../../utils/flags.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'project'); @@ -17,7 +17,7 @@ export default class Project extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:project:create']; + public static readonly aliases = ['force:project:create', 'project:generate']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/static-resource/generate.ts b/src/commands/template/generate/static-resource/index.ts similarity index 92% rename from src/commands/static-resource/generate.ts rename to src/commands/template/generate/static-resource/index.ts index 218f0eb8..90460ff1 100644 --- a/src/commands/static-resource/generate.ts +++ b/src/commands/template/generate/static-resource/index.ts @@ -8,8 +8,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { CreateOutput, StaticResourceOptions, TemplateType } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; -import { outputDirFlag } from '../../utils/flags.js'; -import { getCustomTemplates, runGenerator } from '../../utils/templateCommand.js'; +import { outputDirFlag } from '../../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'staticResource'); @@ -17,7 +17,7 @@ export default class StaticResource extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); - public static readonly aliases = ['force:staticresource:create']; + public static readonly aliases = ['force:staticresource:create', 'static-resource:generate']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/visualforce/generate/component.ts b/src/commands/template/generate/visualforce/component.ts similarity index 93% rename from src/commands/visualforce/generate/component.ts rename to src/commands/template/generate/visualforce/component.ts index 8ef80ed5..5f2b5363 100644 --- a/src/commands/visualforce/generate/component.ts +++ b/src/commands/template/generate/visualforce/component.ts @@ -9,8 +9,8 @@ import { Flags, SfCommand, orgApiVersionFlagWithDeprecations, Ux, loglevel } fro import { CreateOutput, TemplateType, VisualforceComponentOptions } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; import { CreateUtil } from '@salesforce/templates/lib/utils/index.js'; -import { outputDirFlag } from '../../../utils/flags.js'; -import { runGenerator, getCustomTemplates } from '../../../utils/templateCommand.js'; +import { outputDirFlag } from '../../../../utils/flags.js'; +import { runGenerator, getCustomTemplates } from '../../../../utils/templateCommand.js'; const visualforceComponentFileSuffix = /.component$/; const VF_TYPE = 'Component'; @@ -22,7 +22,7 @@ export default class VisualforceComponent extends SfCommand { public static readonly summary = messages.getMessage('summary', [VF_TYPE]); public static readonly description = messages.getMessage('description', [VF_TYPE]); public static readonly examples = messages.getMessages('examples.component'); - public static readonly aliases = ['force:visualforce:component:create']; + public static readonly aliases = ['force:visualforce:component:create', 'visualforce:generate:component']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/visualforce/generate/page.ts b/src/commands/template/generate/visualforce/page.ts similarity index 93% rename from src/commands/visualforce/generate/page.ts rename to src/commands/template/generate/visualforce/page.ts index 40d1708c..0b8cfb79 100644 --- a/src/commands/visualforce/generate/page.ts +++ b/src/commands/template/generate/visualforce/page.ts @@ -8,8 +8,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { CreateOutput, CreateUtil, TemplateType, VisualforcePageOptions } from '@salesforce/templates'; import { Messages } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js'; -import { outputDirFlag } from '../../../utils/flags.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; +import { outputDirFlag } from '../../../../utils/flags.js'; const visualforcePageFileSuffix = /.page$/; const VF_TYPE = 'Page'; @@ -20,7 +20,7 @@ export default class VisualforcePage extends SfCommand { public static readonly summary = messages.getMessage('summary', [VF_TYPE]); public static readonly description = messages.getMessage('description', [VF_TYPE]); public static readonly examples = messages.getMessages('examples.page'); - public static readonly aliases = ['force:visualforce:page:create']; + public static readonly aliases = ['force:visualforce:page:create', 'visualforce:generate:page']; public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ diff --git a/src/commands/webapp/generate.ts b/src/commands/template/generate/webapp/index.ts similarity index 94% rename from src/commands/webapp/generate.ts rename to src/commands/template/generate/webapp/index.ts index 92149f0f..e91d2b57 100644 --- a/src/commands/webapp/generate.ts +++ b/src/commands/template/generate/webapp/index.ts @@ -9,7 +9,7 @@ import path from 'node:path'; import { Flags, SfCommand, Ux } from '@salesforce/sf-plugins-core'; import { CreateOutput, WebApplicationOptions, TemplateType } from '@salesforce/templates'; import { Messages, SfProject } from '@salesforce/core'; -import { getCustomTemplates, runGenerator } from '../../utils/templateCommand.js'; +import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'webApplication'); @@ -19,6 +19,8 @@ export default class WebAppGenerate extends SfCommand { public static readonly description = messages.getMessage('description'); public static readonly examples = messages.getMessages('examples'); public static readonly hidden = true; // Hide from external developers until GA + public static readonly aliases = ['webapp:generate']; + public static readonly deprecateAliases = true; public static readonly flags = { name: Flags.string({ char: 'n', diff --git a/test/commands/force/analytics/template/create.nut.ts b/test/commands/template/generate/analytics/template.nut.ts similarity index 84% rename from test/commands/force/analytics/template/create.nut.ts rename to test/commands/template/generate/analytics/template.nut.ts index fa600e45..a1c3e3ef 100644 --- a/test/commands/force/analytics/template/create.nut.ts +++ b/test/commands/template/generate/analytics/template.nut.ts @@ -13,7 +13,7 @@ import assert from 'yeoman-assert'; config.truncateThreshold = 0; -describe('Analytics template creation tests:', () => { +describe('template generate analytics template:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -26,7 +26,7 @@ describe('Analytics template creation tests:', () => { }); it('should create analytics template foo using foo as the output name and internal values', () => { - execCmd('force:analytics:template:create --templatename foo --outputdir waveTemplates', { ensureExitCode: 0 }); + execCmd('template generate analytics template --templatename foo --outputdir waveTemplates', { ensureExitCode: 0 }); const rawFileContents = fs.readFileSync( path.join(session.project.dir, 'waveTemplates', 'foo', 'template-info.json'), 'utf-8' @@ -75,17 +75,18 @@ describe('Analytics template creation tests:', () => { }); describe('errors', () => { it('should throw error output directory does not contain waveTemplates', () => { - const stderr = execCmd('force:analytics:template:create --templatename foo --outputdir foo').shellOutput.stderr; + const stderr = execCmd('template generate analytics template --templatename foo --outputdir foo').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('MissingWaveTemplatesDir')); }); it('should throw error when missing required name field', () => { - const stderr = execCmd('force:analytics:template:create').shellOutput.stderr; + const stderr = execCmd('template generate analytics template').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw error with message about invalid characters in name', () => { - const stderr = execCmd('force:analytics:template:create --templatename foo$^s --outputdir waveTemplates') + const stderr = execCmd('template generate analytics template --templatename foo$^s --outputdir waveTemplates') .shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); diff --git a/test/commands/template/generate/digital-experience/site/create.nut.ts b/test/commands/template/generate/digital-experience/site.nut.ts similarity index 100% rename from test/commands/template/generate/digital-experience/site/create.nut.ts rename to test/commands/template/generate/digital-experience/site.nut.ts diff --git a/test/commands/force/lightning/app/create.nut.ts b/test/commands/template/generate/lightning/app.nut.ts similarity index 74% rename from test/commands/force/lightning/app/create.nut.ts rename to test/commands/template/generate/lightning/app.nut.ts index b323265c..bf030820 100644 --- a/test/commands/force/lightning/app/create.nut.ts +++ b/test/commands/template/generate/lightning/app.nut.ts @@ -17,7 +17,7 @@ const messages = Messages.loadMessages('@salesforce/plugin-templates', 'messages config.truncateThreshold = 0; -describe('Lightning app creation tests:', () => { +describe('template generate lightning app:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -37,7 +37,7 @@ describe('Lightning app creation tests:', () => { describe('Check lightning app creation', () => { const name = 'foo'; it('should create lightning app foo using DefaultLightningApp template', () => { - execCmd(`force:lightning:app:create --appname ${name} --outputdir aura --template DefaultLightningApp`, { + execCmd(`template generate lightning app --appname ${name} --outputdir aura --template DefaultLightningApp`, { ensureExitCode: 0, }); assert.file(fileFormatter(name, name)); @@ -53,7 +53,7 @@ describe('Lightning app creation tests:', () => { }); it('should create lightning app foo in a new directory without the -meta.xml file', () => { - execCmd(`force:lightning:app:create --appname foo --outputdir ${path.join('aura', 'testing')} --internal`, { + execCmd(`template generate lightning app --appname foo --outputdir ${path.join('aura', 'testing')} --internal`, { ensureExitCode: 0, }); assert.file(fileFormatter(path.join('testing', name), name)); @@ -61,38 +61,38 @@ describe('Lightning app creation tests:', () => { }); describe('lightning app failures', () => { it('should throw invalid template name error', () => { - const stderr = execCmd('force:lightning:app:create --appname foo --outputdir aura --template foo').shellOutput - .stderr; + const stderr = execCmd('template generate lightning app --appname foo --outputdir aura --template foo') + .shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('InvalidTemplate')); }); it('should throw missing aura parent folder error', () => { - const stderr = execCmd('force:lightning:app:create --appname foo').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --appname foo').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('MissingAuraFolder')); }); it('should throw missing appname error', () => { - const stderr = execCmd('force:lightning:app:create --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --outputdir aura').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric appname error', () => { - const stderr = execCmd('force:lightning:app:create --appname /a --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --appname /a --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid appname starting with numeric error', () => { - const stderr = execCmd('force:lightning:app:create --appname 3aa --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --appname 3aa --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid appname ending with underscore error', () => { - const stderr = execCmd('force:lightning:app:create --appname a_ --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --appname a_ --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid appname with double underscore error', () => { - const stderr = execCmd('force:lightning:app:create --appname a__a --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning app --appname a__a --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); }); diff --git a/test/commands/force/lightning/component/create.nut.ts b/test/commands/template/generate/lightning/component.nut.ts similarity index 82% rename from test/commands/force/lightning/component/create.nut.ts rename to test/commands/template/generate/lightning/component.nut.ts index 326d09fe..0773d63c 100644 --- a/test/commands/force/lightning/component/create.nut.ts +++ b/test/commands/template/generate/lightning/component.nut.ts @@ -16,7 +16,7 @@ const messages = Messages.loadMessages('@salesforce/plugin-templates', 'messages config.truncateThreshold = 0; -describe('Lightning component creation tests:', () => { +describe('template generate lightning component:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -35,7 +35,9 @@ describe('Lightning component creation tests:', () => { describe('Check lightning aura components creation', () => { it('should create lightning aura component files in the aura output directory', () => { - execCmd('force:lightning:component:create --componentname foo --outputdir aura', { ensureExitCode: 0 }); + execCmd('template generate lightning component --componentname foo --outputdir aura', { + ensureExitCode: 0, + }); assert.file(fileFormatter('foo', 'foo')); assert.file(path.join(session.project.dir, 'aura', 'foo', 'foo.cmp-meta.xml')); assert.fileContent( @@ -45,7 +47,7 @@ describe('Lightning component creation tests:', () => { }); it('should create lightning aura component files from default template in the aura output directory', () => { - execCmd('force:lightning:component:create --componentname foo --outputdir aura --template default', { + execCmd('template generate lightning component --componentname foo --outputdir aura --template default', { ensureExitCode: 0, }); assert.file(fileFormatter('foo', 'foo')); @@ -59,7 +61,7 @@ describe('Lightning component creation tests:', () => { describe('Check lightning aura components creation without -meta.xml file', () => { it('should create lightning aura component files in the aura output directory without a -meta.xml file', () => { - execCmd('force:lightning:component:create --componentname internalflagtest --outputdir aura --internal', { + execCmd('template generate lightning component --componentname internalflagtest --outputdir aura --internal', { ensureExitCode: 0, }); assert.file(fileFormatter('internalflagtest', 'internalflagtest')); @@ -70,7 +72,7 @@ describe('Lightning component creation tests:', () => { describe('Check lightning web components creation without -meta-xml file', () => { it('should create lightning web component files in the lwc output directory with the internal flag for disabling -meta.xml files', () => { execCmd( - 'force:lightning:component:create --componentname internallwctest --outputdir lwc --type lwc --internal', + 'template generate lightning component --componentname internallwctest --outputdir lwc --type lwc --internal', { ensureExitCode: 0 } ); assert.noFile(path.join(session.project.dir, 'lwc', 'internallwctest', 'internallwctest.js-meta.xml')); @@ -85,7 +87,9 @@ describe('Lightning component creation tests:', () => { describe('Check lightning web components creation with -meta-xml file', () => { it('should create lightning web component files in the lwc output directory', () => { - execCmd('force:lightning:component:create --componentname foo --outputdir lwc --type lwc', { ensureExitCode: 0 }); + execCmd('template generate lightning component --componentname foo --outputdir lwc --type lwc', { + ensureExitCode: 0, + }); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.js-meta.xml')); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.html')); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.js')); @@ -96,9 +100,12 @@ describe('Lightning component creation tests:', () => { }); it('should create lightning web component files from default template in the lwc output directory', () => { - execCmd('force:lightning:component:create --componentname foo --outputdir lwc --type lwc --template default', { - ensureExitCode: 0, - }); + execCmd( + 'template generate lightning component --componentname foo --outputdir lwc --type lwc --template default', + { + ensureExitCode: 0, + } + ); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.js-meta.xml')); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.html')); assert.file(path.join(session.project.dir, 'lwc', 'foo', 'foo.js')); @@ -112,7 +119,7 @@ describe('Lightning component creation tests:', () => { describe('Check analytics dashboard lwc creation', () => { it('should create analyticsDashboard lwc files in the lwc output directory', () => { execCmd( - 'force:lightning:component:create --componentname foo --outputdir lwc --type lwc --template analyticsDashboard', + 'template generate lightning component --componentname foo --outputdir lwc --type lwc --template analyticsDashboard', { ensureExitCode: 0 } ); const jsFile = path.join(session.project.dir, 'lwc', 'foo', 'foo.js'); @@ -133,7 +140,7 @@ describe('Lightning component creation tests:', () => { it('should create analyticsDashboardWithStep lwc files in the lwc output directory', () => { execCmd( - 'force:lightning:component:create --componentname fooWithStep --outputdir lwc --type lwc --template analyticsDashboardWithStep', + 'template generate lightning component --componentname fooWithStep --outputdir lwc --type lwc --template analyticsDashboardWithStep', { ensureExitCode: 0 } ); const jsFile = path.join(session.project.dir, 'lwc', 'fooWithStep', 'fooWithStep.js'); @@ -160,30 +167,30 @@ describe('Lightning component creation tests:', () => { describe('lightning component failures', () => { it('should throw missing component name error', () => { - const stderr = execCmd('force:lightning:component:create --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning component --outputdir aura').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw missing aura parent folder error', () => { - const stderr = execCmd('force:lightning:component:create --componentname foo').shellOutput.stderr; + const stderr = execCmd('template generate lightning component --componentname foo').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('MissingAuraFolder')); }); it('should throw missing lwc parent folder error', () => { - const stderr = execCmd('force:lightning:component:create --componentname foo --type lwc').shellOutput.stderr; + const stderr = execCmd('template generate lightning component --componentname foo --type lwc').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('MissingLWCFolder')); }); it('should throw invalid template error', () => { const stderr = execCmd( - 'force:lightning:component:create --outputdir lwc --componentname foo --type lwc --template foo' + 'template generate lightning component --outputdir lwc --componentname foo --type lwc --template foo' ).shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('InvalidTemplate')); }); it('should throw missing template error', () => { const stderr = execCmd( - 'force:lightning:component:create --outputdir aura --componentname foo --type aura --template analyticsDashboard' + 'template generate lightning component --outputdir aura --componentname foo --type aura --template analyticsDashboard' ).shellOutput.stderr; expect(stderr).to.contain( messages.getMessage('MissingLightningComponentTemplate', ['analyticsDashboard', 'aura']) diff --git a/test/commands/force/lightning/event/create.nut.ts b/test/commands/template/generate/lightning/event.nut.ts similarity index 71% rename from test/commands/force/lightning/event/create.nut.ts rename to test/commands/template/generate/lightning/event.nut.ts index 6cbaf046..8e14c98a 100644 --- a/test/commands/force/lightning/event/create.nut.ts +++ b/test/commands/template/generate/lightning/event.nut.ts @@ -17,7 +17,7 @@ config.truncateThreshold = 0; Messages.importMessagesDirectory(path.dirname(url.fileURLToPath(import.meta.url))); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'messages'); -describe('Lightning event creation tests:', () => { +describe('template generate lightning event:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -31,7 +31,7 @@ describe('Lightning event creation tests:', () => { describe('Check lightning event creation', () => { it('should create lightning event foo using DefaultLightningEvt template and aura output directory', () => { - execCmd('force:lightning:event:create --eventname foo --outputdir aura --template DefaultLightningEvt', { + execCmd('template generate lightning event --eventname foo --outputdir aura --template DefaultLightningEvt', { ensureExitCode: 0, }); assert.file(path.join(session.project.dir, 'aura', 'foo', 'foo.evt')); @@ -40,7 +40,7 @@ describe('Lightning event creation tests:', () => { it('should create lightning event foo using DefaultLightningEvt template and aura output directory with no -meta.xml file', () => { execCmd( - 'force:lightning:event:create --eventname foometa --outputdir aura --template DefaultLightningEvt --internal', + 'template generate lightning event --eventname foometa --outputdir aura --template DefaultLightningEvt --internal', { ensureExitCode: 0 } ); assert.file(path.join(session.project.dir, 'aura', 'foometa', 'foometa.evt')); @@ -48,7 +48,7 @@ describe('Lightning event creation tests:', () => { }); it('should create lightning event foo in a new directory', () => { - execCmd(`force:lightning:event:create --eventname foo --outputdir ${path.join('aura', 'testing')}`, { + execCmd(`template generate lightning event --eventname foo --outputdir ${path.join('aura', 'testing')}`, { ensureExitCode: 0, }); assert.file(path.join(session.project.dir, 'aura', 'testing', 'foo', 'foo.evt')); @@ -56,38 +56,39 @@ describe('Lightning event creation tests:', () => { }), describe('lightning event failures', () => { it('should throw invalid template name error', () => { - const stderr = execCmd('force:lightning:event:create --eventname foo --outputdir aura --template foo') + const stderr = execCmd('template generate lightning event --eventname foo --outputdir aura --template foo') .shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('InvalidTemplate')); }); it('should throw missing aura parent folder error', () => { - const stderr = execCmd('force:lightning:event:create --eventname foo').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --eventname foo').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('MissingAuraFolder')); }); it('should throw missing eventname error', () => { - const stderr = execCmd('force:lightning:event:create --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --outputdir aura').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric eventname error', () => { - const stderr = execCmd('force:lightning:event:create --eventname /a --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --eventname /a --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid eventname starting with numeric error', () => { - const stderr = execCmd('force:lightning:event:create --eventname 3aa --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --eventname 3aa --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid eventname ending with underscore error', () => { - const stderr = execCmd('force:lightning:event:create --eventname a_ --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --eventname a_ --outputdir aura').shellOutput.stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid eventname with double underscore error', () => { - const stderr = execCmd('force:lightning:event:create --eventname a__a --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning event --eventname a__a --outputdir aura').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); }); diff --git a/test/commands/force/lightning/interface/create.nut.ts b/test/commands/template/generate/lightning/interface.nut.ts similarity index 60% rename from test/commands/force/lightning/interface/create.nut.ts rename to test/commands/template/generate/lightning/interface.nut.ts index 5c2150b9..b69566e4 100644 --- a/test/commands/force/lightning/interface/create.nut.ts +++ b/test/commands/template/generate/lightning/interface.nut.ts @@ -15,7 +15,7 @@ import assert from 'yeoman-assert'; Messages.importMessagesDirectory(path.dirname(url.fileURLToPath(import.meta.url))); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'messages'); -describe('Lightning interface creation tests:', () => { +describe('template generate lightning interface:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -28,67 +28,73 @@ describe('Lightning interface creation tests:', () => { }); describe('Check lightning interface creation', () => { it('should create lightning interface foo using DefaultLightningIntf template and aura output directory', () => { - execCmd('force:lightning:interface:create --interfacename foo --outputdir aura --template DefaultLightningIntf', { - ensureExitCode: 0, - }); + execCmd( + 'template generate lightning interface --interfacename foo --outputdir aura --template DefaultLightningIntf', + { + ensureExitCode: 0, + } + ); assert.file(path.join(session.project.dir, 'aura', 'foo', 'foo.intf')); assert.file(path.join(session.project.dir, 'aura', 'foo', 'foo.intf-meta.xml')); }); it('should create lightning interface foo using DefaultLightningIntf template and aura output directory and no -meta.xml file', () => { execCmd( - 'force:lightning:interface:create --interfacename foometa --outputdir aura --template DefaultLightningIntf --internal', + 'template generate lightning interface --interfacename foometa --outputdir aura --template DefaultLightningIntf --internal', { ensureExitCode: 0 } ); assert.file(path.join(session.project.dir, 'aura', 'foometa', 'foometa.intf')); assert.noFile(path.join(session.project.dir, 'aura', 'foometa', 'foometa.intf-meta.xml')); - }), - it('should create lightning interface foo using DefaultLightningIntf template and custom output directory', () => { - execCmd( - `force:lightning:interface:create --interfacename foo --outputdir ${path.join( - 'aura', - 'interfacetest' - )} --template DefaultLightningIntf`, - { ensureExitCode: 0 } - ); - assert.file(path.join(session.project.dir, 'aura', 'interfacetest', 'foo', 'foo.intf')); - assert.file(path.join(session.project.dir, 'aura', 'interfacetest', 'foo', 'foo.intf-meta.xml')); - }); + }); + it('should create lightning interface foo using DefaultLightningIntf template and custom output directory', () => { + execCmd( + `template generate lightning interface --interfacename foo --outputdir ${path.join( + 'aura', + 'interfacetest' + )} --template DefaultLightningIntf`, + { ensureExitCode: 0 } + ); + assert.file(path.join(session.project.dir, 'aura', 'interfacetest', 'foo', 'foo.intf')); + assert.file(path.join(session.project.dir, 'aura', 'interfacetest', 'foo', 'foo.intf-meta.xml')); + }); }); describe('lightning interface failures', () => { it('should throw invalid template name error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename foo --outputdir aura --template foo') - .shellOutput.stderr; + const stderr = execCmd( + 'template generate lightning interface --interfacename foo --outputdir aura --template foo' + ).shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('InvalidTemplate')); }); it('should throw missing aura parent folder error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename foo').shellOutput.stderr; + const stderr = execCmd('template generate lightning interface --interfacename foo').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('MissingAuraFolder')); }); it('should throw missing interfacename error', () => { - const stderr = execCmd('force:lightning:interface:create --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning interface --outputdir aura').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric interfacename error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename /a --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning interface --interfacename /a --outputdir aura').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid interfacename starting with numeric error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename 3aa --outputdir aura').shellOutput + const stderr = execCmd('template generate lightning interface --interfacename 3aa --outputdir aura').shellOutput .stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid interfacename ending with underscore error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename a_ --outputdir aura').shellOutput.stderr; + const stderr = execCmd('template generate lightning interface --interfacename a_ --outputdir aura').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid interfacename with double underscore error', () => { - const stderr = execCmd('force:lightning:interface:create --interfacename a__a --outputdir aura').shellOutput + const stderr = execCmd('template generate lightning interface --interfacename a__a --outputdir aura').shellOutput .stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); diff --git a/test/commands/project/create.nut.ts b/test/commands/template/generate/project/index.nut.ts similarity index 88% rename from test/commands/project/create.nut.ts rename to test/commands/template/generate/project/index.nut.ts index f0fc354b..4d71ef9d 100644 --- a/test/commands/project/create.nut.ts +++ b/test/commands/template/generate/project/index.nut.ts @@ -34,7 +34,7 @@ const vscodearray = ['extensions', 'launch', 'settings']; Messages.importMessagesDirectory(path.dirname(url.fileURLToPath(import.meta.url))); const messages = Messages.loadMessages('@salesforce/plugin-templates', 'messages'); -describe('Project creation tests:', () => { +describe('template generate project:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -48,7 +48,7 @@ describe('Project creation tests:', () => { describe('Check project creation', () => { it('should create project with default values and foo name', () => { - execCmd('force:project:create --projectname foo', { ensureExitCode: 0 }); + execCmd('template generate project --projectname foo', { ensureExitCode: 0 }); assert.file([path.join(session.project.dir, 'foo', 'config', 'project-scratch-def.json')]); assert.file([path.join(session.project.dir, 'foo', 'scripts', 'soql', 'account.soql')]); assert.file([path.join(session.project.dir, 'foo', 'scripts', 'apex', 'hello.apex')]); @@ -83,7 +83,9 @@ describe('Project creation tests:', () => { }); it('should create project with default values and foo name in a custom output directory with spaces in its name', () => { - execCmd('force:project:create --projectname foo --outputdir "test outputdir"', { ensureExitCode: 0 }); + execCmd('template generate project --projectname foo --outputdir "test outputdir"', { + ensureExitCode: 0, + }); assert.file([path.join(session.project.dir, 'test outputdir', 'foo', 'config', 'project-scratch-def.json')]); assert.file([path.join(session.project.dir, 'test outputdir', 'foo', 'README.md')]); assert.file([path.join(session.project.dir, 'test outputdir', 'foo', 'sfdx-project.json')]); @@ -103,7 +105,7 @@ describe('Project creation tests:', () => { }); it('should not create duplicate project in the directory where command is executed', () => { - execCmd('force:project:create --projectname duplicate-project-test --outputdir "test outputdir"', { + execCmd('template generate project --projectname duplicate-project-test --outputdir "test outputdir"', { ensureExitCode: 0, }); assert.file(path.join(session.project.dir, 'test outputdir', 'duplicate-project-test', 'force-app')); @@ -111,7 +113,7 @@ describe('Project creation tests:', () => { }); it('should create project with default values and foo-project name in a custom output directory with spaces in its name', () => { - execCmd('force:project:create --projectname foo-project', { ensureExitCode: 0 }); + execCmd('template generate project --projectname foo-project', { ensureExitCode: 0 }); assert.file([path.join(session.project.dir, 'foo-project', 'config', 'project-scratch-def.json')]); assert.file([path.join(session.project.dir, 'foo-project', 'README.md')]); assert.file([path.join(session.project.dir, 'foo-project', 'sfdx-project.json')]); @@ -128,7 +130,9 @@ describe('Project creation tests:', () => { }); it('should create a project with specified api version', () => { - execCmd('force:project:create --projectname apiVersionTest --api-version 50.0', { ensureExitCode: 0 }); + execCmd('template generate project --projectname apiVersionTest --api-version 50.0', { + ensureExitCode: 0, + }); assert.fileContent( path.join(session.project.dir, 'apiVersionTest', 'sfdx-project.json'), '"sourceApiVersion": "50.0"' @@ -136,13 +140,13 @@ describe('Project creation tests:', () => { }); it('should create project with footest name and manifest folder', () => { - execCmd('force:project:create --projectname footest --manifest', { ensureExitCode: 0 }); + execCmd('template generate project --projectname footest --manifest', { ensureExitCode: 0 }); assert.file([path.join(session.project.dir, 'footest', 'manifest', 'package.xml')]); }); it('should create project with fooempty name, empty template, empty default package directory, and a custom namespace', () => { execCmd( - 'force:project:create --projectname fooempty --template empty --defaultpackagedir empty --namespace testnamespace', + 'template generate project --projectname fooempty --template empty --defaultpackagedir empty --namespace testnamespace', { ensureExitCode: 0 } ); assert.file(path.join(session.project.dir, 'fooempty', '.forceignore')); @@ -163,7 +167,7 @@ describe('Project creation tests:', () => { it('should create project with fooempty name, empty template, empty default package directory, empty namespace and custom login url', () => { execCmd( - 'force:project:create --projectname fooempty --template empty --defaultpackagedir empty --loginurl https://vandelay-industries.my.salesforce.com', + 'template generate project --projectname fooempty --template empty --defaultpackagedir empty --loginurl https://vandelay-industries.my.salesforce.com', { ensureExitCode: 0 } ); assert.file(path.join(session.project.dir, 'fooempty', '.forceignore')); @@ -184,7 +188,9 @@ describe('Project creation tests:', () => { }); it('should create project with analytics1 name using analytics template and a manifest', () => { - execCmd('force:project:create --projectname analytics1 --template analytics --manifest', { ensureExitCode: 0 }); + execCmd('template generate project --projectname analytics1 --template analytics --manifest', { + ensureExitCode: 0, + }); assert.file(path.join(session.project.dir, 'analytics1', '.forceignore')); assert.fileContent(path.join(session.project.dir, 'analytics1', 'sfdx-project.json'), '"path": "force-app",'); assert.fileContent(path.join(session.project.dir, 'analytics1', 'sfdx-project.json'), 'sourceApiVersion'); @@ -229,12 +235,12 @@ describe('Project creation tests:', () => { describe('project creation failures', () => { it('should throw invalid template name error', () => { - const stderr = execCmd('force:project:create').shellOutput.stderr; + const stderr = execCmd('template generate project').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid template name error', () => { - const stderr = execCmd('force:project:create --projectname foo --template foo').shellOutput.stderr; + const stderr = execCmd('template generate project --projectname foo --template foo').shellOutput.stderr; expect(stderr).to.contain(messages.getMessage('InvalidTemplate')); }); }); diff --git a/test/commands/force/staticresource/create.nut.ts b/test/commands/template/generate/static-resource/index.nut.ts similarity index 74% rename from test/commands/force/staticresource/create.nut.ts rename to test/commands/template/generate/static-resource/index.nut.ts index 53bcdf85..f1376e37 100644 --- a/test/commands/force/staticresource/create.nut.ts +++ b/test/commands/template/generate/static-resource/index.nut.ts @@ -11,7 +11,7 @@ import { nls } from '@salesforce/templates/lib/i18n/index.js'; import assert from 'yeoman-assert'; config.truncateThreshold = 0; -describe('Static resource creation tests:', () => { +describe('template generate static-resource:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -24,7 +24,9 @@ describe('Static resource creation tests:', () => { }); describe('Check static resource creation', () => { it('should create foo css static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename foo --contenttype text/css', { ensureExitCode: 0 }); + execCmd('template generate static-resource --resourcename foo --contenttype text/css', { + ensureExitCode: 0, + }); assert.file(['foo.css', 'foo.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent( path.join(session.project.dir, 'foo.css'), @@ -33,7 +35,7 @@ describe('Static resource creation tests:', () => { }); it('should create foo javascript static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename foo --contenttype application/javascript', { + execCmd('template generate static-resource --resourcename foo --contenttype application/javascript', { ensureExitCode: 0, }); assert.file(['foo.js', 'foo.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); @@ -44,7 +46,9 @@ describe('Static resource creation tests:', () => { }); it('should create foo json static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename foo --contenttype application/json', { ensureExitCode: 0 }); + execCmd('template generate static-resource --resourcename foo --contenttype application/json', { + ensureExitCode: 0, + }); assert.file(['foo.json', 'foo.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent( path.join(session.project.dir, 'foo.json'), @@ -53,7 +57,9 @@ describe('Static resource creation tests:', () => { }); it('should create foo json static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename foo --contenttype text/plain', { ensureExitCode: 0 }); + execCmd('template generate static-resource --resourcename foo --contenttype text/plain', { + ensureExitCode: 0, + }); assert.file(['foo.txt', 'foo.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent( path.join(session.project.dir, 'foo.txt'), @@ -62,7 +68,9 @@ describe('Static resource creation tests:', () => { }); it('should create foo generic static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename fooPDF --contenttype application/pdf', { ensureExitCode: 0 }); + execCmd('template generate static-resource --resourcename fooPDF --contenttype application/pdf', { + ensureExitCode: 0, + }); assert.file(['fooPDF.resource', 'fooPDF.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent( path.join(session.project.dir, 'fooPDF.resource'), @@ -71,14 +79,14 @@ describe('Static resource creation tests:', () => { }); it('should create foo static resource in the default output directory', () => { - execCmd('force:staticresource:create --resourcename foo', { ensureExitCode: 0 }); + execCmd('template generate static-resource --resourcename foo', { ensureExitCode: 0 }); assert.file(['foo/.gitkeep', 'foo.resource-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent(path.join(session.project.dir, 'foo/.gitkeep'), 'This file can be deleted'); }); it('should create foo resource with a targetpath set', () => { execCmd( - 'force:staticresource:create --resourcename srjs --outputdir resourcesjs --contenttype application/javascript', + 'template generate static-resource --resourcename srjs --outputdir resourcesjs --contenttype application/javascript', { ensureExitCode: 0 } ); assert.file( @@ -89,7 +97,7 @@ describe('Static resource creation tests:', () => { }); it('should create foo static resource in custom folder name that has a space in it', () => { - execCmd('force:staticresource:create --resourcename foo --outputdir "staticresource create"', { + execCmd('template generate static-resource --resourcename foo --outputdir "staticresource create"', { ensureExitCode: 0, }); assert.file( @@ -107,32 +115,32 @@ describe('Static resource creation tests:', () => { describe('Check that all invalid name errors are thrown', () => { it('should throw a missing resourcename error', () => { - const stderr = execCmd('force:staticresource:create').shellOutput.stderr; + const stderr = execCmd('template generate static-resource').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric static resource name error', () => { - const stderr = execCmd('force:staticresource:create --resourcename /a').shellOutput.stderr; + const stderr = execCmd('template generate static-resource --resourcename /a').shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid static resource name starting with numeric error', () => { - const stderr = execCmd('force:staticresource:create --resourcename 3aa').shellOutput.stderr; + const stderr = execCmd('template generate static-resource --resourcename 3aa').shellOutput.stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid static resource name ending with underscore error', () => { - const stderr = execCmd('force:staticresource:create --resourcename a_').shellOutput.stderr; + const stderr = execCmd('template generate static-resource --resourcename a_').shellOutput.stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid static resource name with double underscore error', () => { - const stderr = execCmd('force:staticresource:create --resourcename a__a').shellOutput.stderr; + const stderr = execCmd('template generate static-resource --resourcename a__a').shellOutput.stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); it('should throw an invalid mime type error', () => { - const stderr = execCmd('force:staticresource:create --resourcename foo --contenttype notvalid').shellOutput + const stderr = execCmd('template generate static-resource --resourcename foo --contenttype notvalid').shellOutput .stderr; expect(stderr).to.contain(nls.localize('InvalidMimeType')); }); diff --git a/test/commands/force/visualforce/component/create.nut.ts b/test/commands/template/generate/visualforce/component.nut.ts similarity index 70% rename from test/commands/force/visualforce/component/create.nut.ts rename to test/commands/template/generate/visualforce/component.nut.ts index 3816da02..be8589fe 100644 --- a/test/commands/force/visualforce/component/create.nut.ts +++ b/test/commands/template/generate/visualforce/component.nut.ts @@ -12,7 +12,7 @@ import assert from 'yeoman-assert'; config.truncateThreshold = 0; -describe('Visualforce component creation tests:', () => { +describe('template generate visualforce component:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -26,16 +26,21 @@ describe('Visualforce component creation tests:', () => { describe('Check visualforce component creation', () => { it('should create foo component using DefaultVFComponent template and default output directory', () => { - execCmd('force:visualforce:component:create --componentname foo --label testlabel', { ensureExitCode: 0 }); + execCmd('template generate visualforce component --componentname foo --label testlabel', { + ensureExitCode: 0, + }); assert.file(['foo.component', 'foo.component-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent(path.join(session.project.dir, 'foo.component'), 'This is your new Component'); assert.fileContent(path.join(session.project.dir, 'foo.component-meta.xml'), ''); }); it('should create foo component in a folder with a custom name', () => { - execCmd('force:visualforce:component:create --componentname foo --outputdir testcomponent --label testlabel', { - ensureExitCode: 0, - }); + execCmd( + 'template generate visualforce component --componentname foo --outputdir testcomponent --label testlabel', + { + ensureExitCode: 0, + } + ); assert.file( [path.join('testcomponent', 'foo.component'), path.join('testcomponent', 'foo.component-meta.xml')].map((f) => path.join(session.project.dir, f) @@ -44,9 +49,12 @@ describe('Visualforce component creation tests:', () => { }); it('should create foo component in custom folder name that has a space in it', () => { - execCmd('force:visualforce:component:create --componentname foo --outputdir "classes create" --label label', { - ensureExitCode: 0, - }); + execCmd( + 'template generate visualforce component --componentname foo --outputdir "classes create" --label label', + { + ensureExitCode: 0, + } + ); assert.file( [path.join('classes create', 'foo.component'), path.join('classes create', 'foo.component-meta.xml')].map((f) => path.join(session.project.dir, f) @@ -57,27 +65,31 @@ describe('Visualforce component creation tests:', () => { describe('Check that all invalid name errors are thrown', () => { it('should throw a missing componentname error', () => { - const stderr = execCmd('force:visualforce:component:create').shellOutput.stderr; + const stderr = execCmd('template generate visualforce component').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric componentname error', () => { - const stderr = execCmd('force:visualforce:component:create --componentname /a --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce component --componentname /a --label foo').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid componentname starting with numeric error', () => { - const stderr = execCmd('force:visualforce:component:create --componentname 3aa --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce component --componentname 3aa --label foo').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid componentname ending with underscore error', () => { - const stderr = execCmd('force:visualforce:component:create --componentname a_ --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce component --componentname a_ --label foo').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid componentname with double underscore error', () => { - const stderr = execCmd('force:visualforce:component:create --componentname a__a --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce component --componentname a__a --label foo').shellOutput + .stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); }); diff --git a/test/commands/force/visualforce/page/create.nut.ts b/test/commands/template/generate/visualforce/page.nut.ts similarity index 74% rename from test/commands/force/visualforce/page/create.nut.ts rename to test/commands/template/generate/visualforce/page.nut.ts index fc59a3b1..8a7ffa6f 100644 --- a/test/commands/force/visualforce/page/create.nut.ts +++ b/test/commands/template/generate/visualforce/page.nut.ts @@ -12,7 +12,7 @@ import assert from 'yeoman-assert'; config.truncateThreshold = 0; -describe('Visualforce page creation tests:', () => { +describe('template generate visualforce page:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -25,14 +25,14 @@ describe('Visualforce page creation tests:', () => { }); describe('Check visualforce page creation', () => { it('should create foo page using DefaultVFPage template and default output directory', () => { - execCmd('force:visualforce:page:create --pagename foo --label testlabel', { ensureExitCode: 0 }); + execCmd('template generate visualforce page --pagename foo --label testlabel', { ensureExitCode: 0 }); assert.file(['foo.page', 'foo.page-meta.xml'].map((f) => path.join(session.project.dir, f))); assert.fileContent(path.join(session.project.dir, 'foo.page'), 'This is your new Page'); assert.fileContent(path.join(session.project.dir, 'foo.page-meta.xml'), ''); }); it('should create foo page in a folder with a custom name', () => { - execCmd('force:visualforce:page:create --pagename foo --outputdir testpage --label testlabel', { + execCmd('template generate visualforce page --pagename foo --outputdir testpage --label testlabel', { ensureExitCode: 0, }); assert.file( @@ -43,7 +43,7 @@ describe('Visualforce page creation tests:', () => { }); it('should create foo page in custom folder name that has a space in it', () => { - execCmd('force:visualforce:page:create --pagename foo --outputdir "folder space" --label label', { + execCmd('template generate visualforce page --pagename foo --outputdir "folder space" --label label', { ensureExitCode: 0, }); assert.file( @@ -56,27 +56,27 @@ describe('Visualforce page creation tests:', () => { describe('Check that all invalid name errors are thrown', () => { it('should throw a missing pagename error', () => { - const stderr = execCmd('force:visualforce:page:create').shellOutput.stderr; + const stderr = execCmd('template generate visualforce page').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric pagename error', () => { - const stderr = execCmd('force:visualforce:page:create --pagename /a --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce page --pagename /a --label foo').shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid pagename starting with numeric error', () => { - const stderr = execCmd('force:visualforce:page:create --pagename 3aa --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce page --pagename 3aa --label foo').shellOutput.stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid pagename ending with underscore error', () => { - const stderr = execCmd('force:visualforce:page:create --pagename a_ --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce page --pagename a_ --label foo').shellOutput.stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid pagename with double underscore error', () => { - const stderr = execCmd('force:visualforce:page:create --pagename a__a --label foo').shellOutput.stderr; + const stderr = execCmd('template generate visualforce page --pagename a__a --label foo').shellOutput.stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); }); diff --git a/test/commands/webapp/generate.nut.ts b/test/commands/template/generate/webapp/index.nut.ts similarity index 79% rename from test/commands/webapp/generate.nut.ts rename to test/commands/template/generate/webapp/index.nut.ts index 326dbd1d..55d6bef9 100644 --- a/test/commands/webapp/generate.nut.ts +++ b/test/commands/template/generate/webapp/index.nut.ts @@ -10,7 +10,7 @@ import { TestSession, execCmd } from '@salesforce/cli-plugins-testkit'; import { nls } from '@salesforce/templates/lib/i18n/index.js'; import assert from 'yeoman-assert'; -describe('Web application creation tests:', () => { +describe('template generate web application:', () => { let session: TestSession; before(async () => { session = await TestSession.create({ @@ -25,7 +25,7 @@ describe('Web application creation tests:', () => { describe('Check webapp creation with default template', () => { it('should create webapp using default template in webapplications directory', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - execCmd(`webapp generate --name MyWebApp --output-dir "${outputDir}"`, { ensureExitCode: 0 }); + execCmd(`template generate webapp --name MyWebApp --output-dir "${outputDir}"`, { ensureExitCode: 0 }); assert.file([ path.join(outputDir, 'MyWebApp', 'MyWebApp.webapplication-meta.xml'), path.join(outputDir, 'MyWebApp', 'src', 'index.html'), @@ -39,7 +39,7 @@ describe('Web application creation tests:', () => { it('should default to project webapplications directory when --output-dir is omitted', () => { const expectedOutputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - execCmd('webapp generate --name DefaultDirApp', { ensureExitCode: 0 }); + execCmd('template generate webapp --name DefaultDirApp', { ensureExitCode: 0 }); assert.file([ path.join(expectedOutputDir, 'DefaultDirApp', 'DefaultDirApp.webapplication-meta.xml'), path.join(expectedOutputDir, 'DefaultDirApp', 'src', 'index.html'), @@ -49,7 +49,7 @@ describe('Web application creation tests:', () => { it('should create webapp with custom label', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - execCmd(`webapp generate --name TestApp --label "Custom Label" --output-dir "${outputDir}"`, { + execCmd(`template generate webapp --name TestApp --label "Custom Label" --output-dir "${outputDir}"`, { ensureExitCode: 0, }); assert.file([ @@ -63,7 +63,7 @@ describe('Web application creation tests:', () => { describe('Check webapp creation with reactbasic template', () => { it('should create React webapp with all required files', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - execCmd(`webapp generate --name MyReactApp --template reactbasic --output-dir "${outputDir}"`, { + execCmd(`template generate webapp --name MyReactApp --template reactbasic --output-dir "${outputDir}"`, { ensureExitCode: 0, }); assert.file([ @@ -78,36 +78,36 @@ describe('Web application creation tests:', () => { describe('Check that all invalid name errors are thrown', () => { it('should throw a missing name error', () => { - const stderr = execCmd('webapp generate').shellOutput.stderr; + const stderr = execCmd('template generate webapp').shellOutput.stderr; expect(stderr).to.contain('Missing required flag'); }); it('should throw invalid non alphanumeric webapp name error', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - const stderr = execCmd(`webapp generate --name /a --output-dir "${outputDir}"`).shellOutput.stderr; + const stderr = execCmd(`template generate webapp --name /a --output-dir "${outputDir}"`).shellOutput.stderr; expect(stderr).to.contain(nls.localize('AlphaNumericNameError')); }); it('should throw invalid webapp name starting with numeric error', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - const stderr = execCmd(`webapp generate --name 3aa --output-dir "${outputDir}"`).shellOutput.stderr; + const stderr = execCmd(`template generate webapp --name 3aa --output-dir "${outputDir}"`).shellOutput.stderr; expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError')); }); it('should throw invalid webapp name ending with underscore error', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - const stderr = execCmd(`webapp generate --name a_ --output-dir "${outputDir}"`).shellOutput.stderr; + const stderr = execCmd(`template generate webapp --name a_ --output-dir "${outputDir}"`).shellOutput.stderr; expect(stderr).to.contain(nls.localize('EndWithUnderscoreError')); }); it('should throw invalid webapp name with double underscore error', () => { const outputDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'webapplications'); - const stderr = execCmd(`webapp generate --name a__a --output-dir "${outputDir}"`).shellOutput.stderr; + const stderr = execCmd(`template generate webapp --name a__a --output-dir "${outputDir}"`).shellOutput.stderr; expect(stderr).to.contain(nls.localize('DoubleUnderscoreError')); }); it('should throw error when output dir is not webapplications folder', () => { - const stderr = execCmd('webapp generate --name TestApp --output-dir /tmp/invalid').shellOutput.stderr; + const stderr = execCmd('template generate webapp --name TestApp --output-dir /tmp/invalid').shellOutput.stderr; expect(stderr).to.contain(nls.localize('MissingWebApplicationsDir')); }); });