Skip to content

Commit 0d59762

Browse files
authored
Merge pull request #838 from salesforcecli/ew/init-restructure
@W-21163685: move apex templates
2 parents 8485fbb + 5551c02 commit 0d59762

6 files changed

Lines changed: 60 additions & 52 deletions

File tree

command-snapshot.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,6 @@
77
"flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir"],
88
"plugin": "@salesforce/plugin-templates"
99
},
10-
{
11-
"alias": ["force:apex:class:create"],
12-
"command": "apex:generate:class",
13-
"flagAliases": ["apiversion", "classname", "outputdir"],
14-
"flagChars": ["d", "n", "t"],
15-
"flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "template"],
16-
"plugin": "@salesforce/plugin-templates"
17-
},
18-
{
19-
"alias": ["force:apex:trigger:create"],
20-
"command": "apex:generate:trigger",
21-
"flagAliases": ["apiversion", "outputdir", "triggerevents", "triggername"],
22-
"flagChars": ["d", "e", "n", "s", "t"],
23-
"flags": ["api-version", "event", "flags-dir", "json", "loglevel", "name", "output-dir", "sobject", "template"],
24-
"plugin": "@salesforce/plugin-templates"
25-
},
2610
{
2711
"alias": ["force:lightning:app:create"],
2812
"command": "lightning:generate:app",
@@ -91,6 +75,22 @@
9175
"flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "type"],
9276
"plugin": "@salesforce/plugin-templates"
9377
},
78+
{
79+
"alias": ["force:apex:class:create", "apex:generate:class"],
80+
"command": "template:generate:apex:class",
81+
"flagAliases": ["apiversion", "classname", "outputdir"],
82+
"flagChars": ["d", "n", "t"],
83+
"flags": ["api-version", "flags-dir", "json", "loglevel", "name", "output-dir", "template"],
84+
"plugin": "@salesforce/plugin-templates"
85+
},
86+
{
87+
"alias": ["force:apex:trigger:create", "apex:generate:trigger"],
88+
"command": "template:generate:apex:trigger",
89+
"flagAliases": ["apiversion", "outputdir", "triggerevents", "triggername"],
90+
"flagChars": ["d", "e", "n", "s", "t"],
91+
"flags": ["api-version", "event", "flags-dir", "json", "loglevel", "name", "output-dir", "sobject", "template"],
92+
"plugin": "@salesforce/plugin-templates"
93+
},
9494
{
9595
"alias": ["force:visualforce:component:create"],
9696
"command": "visualforce:generate:component",

package.json

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,6 @@
5252
"@salesforce/plugin-settings"
5353
],
5454
"topics": {
55-
"apex": {
56-
"external": true,
57-
"subtopics": {
58-
"generate": {
59-
"description": "Create an apex class or trigger."
60-
}
61-
}
62-
},
6355
"analytics": {
6456
"external": true,
6557
"description": "Work with analytics assets.",
@@ -91,6 +83,19 @@
9183
},
9284
"static-resource": {
9385
"description": "Work with static resources."
86+
},
87+
"template": {
88+
"description": "Collection of Salesforce templates.",
89+
"subtopics": {
90+
"generate": {
91+
"description": "Use a Salesforce template to generate local files.",
92+
"subtopics": {
93+
"apex": {
94+
"description": "Create an apex class or trigger."
95+
}
96+
}
97+
}
98+
}
9499
}
95100
},
96101
"flexibleTaxonomy": true,

src/commands/apex/generate/class.ts renamed to src/commands/template/generate/apex/class.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand, Ux } fro
99
import { ApexClassOptions, CreateOutput, TemplateType } from '@salesforce/templates';
1010
import { CreateUtil } from '@salesforce/templates/lib/utils/index.js';
1111
import { Messages } from '@salesforce/core';
12-
import { runGenerator, getCustomTemplates } from '../../../utils/templateCommand.js';
13-
import { outputDirFlag } from '../../../utils/flags.js';
12+
import { runGenerator, getCustomTemplates } from '../../../../utils/templateCommand.js';
13+
import { outputDirFlag } from '../../../../utils/flags.js';
1414

1515
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
1616
const messages = Messages.loadMessages('@salesforce/plugin-templates', 'apexClass');
@@ -21,7 +21,7 @@ export default class ApexClass extends SfCommand<CreateOutput> {
2121
public static readonly summary = messages.getMessage('summary');
2222
public static readonly description = messages.getMessage('description');
2323
public static readonly examples = messages.getMessages('examples');
24-
public static readonly aliases = ['force:apex:class:create'];
24+
public static readonly aliases = ['force:apex:class:create', 'apex:generate:class'];
2525
public static readonly deprecateAliases = true;
2626
public static readonly flags = {
2727
name: Flags.string({

src/commands/apex/generate/trigger.ts renamed to src/commands/template/generate/apex/trigger.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import {
1616
import { ApexTriggerOptions, CreateOutput, TemplateType } from '@salesforce/templates';
1717
import { CreateUtil } from '@salesforce/templates/lib/utils/index.js';
1818
import { Messages } from '@salesforce/core';
19-
import { getCustomTemplates, runGenerator } from '../../../utils/templateCommand.js';
20-
import { outputDirFlag } from '../../../utils/flags.js';
19+
import { getCustomTemplates, runGenerator } from '../../../../utils/templateCommand.js';
20+
import { outputDirFlag } from '../../../../utils/flags.js';
2121

2222
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
2323
const apexTriggerFileSuffix = /.trigger$/;
@@ -27,7 +27,7 @@ export default class ApexTrigger extends SfCommand<CreateOutput> {
2727
public static readonly summary = messages.getMessage('summary');
2828
public static readonly description = messages.getMessage('description');
2929
public static readonly examples = messages.getMessages('examples');
30-
public static readonly aliases = ['force:apex:trigger:create'];
30+
public static readonly aliases = ['force:apex:trigger:create', 'apex:generate:trigger'];
3131
public static readonly deprecateAliases = true;
3232
public static readonly flags = {
3333
name: Flags.string({

test/commands/force/apex/class/create.nut.ts renamed to test/commands/template/generate/apex/class.nut.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { TestSession, execCmd } from '@salesforce/cli-plugins-testkit';
1010
import { nls } from '@salesforce/templates/lib/i18n/index.js';
1111
import assert from 'yeoman-assert';
1212

13-
describe('Apex class creation tests:', () => {
13+
describe('template generate apex class:', () => {
1414
let session: TestSession;
1515
before(async () => {
1616
session = await TestSession.create({
@@ -24,13 +24,13 @@ describe('Apex class creation tests:', () => {
2424

2525
describe('Check apex class creation', () => {
2626
it('should create foo class using DefaultApexClass template and default output directory', () => {
27-
execCmd('force:apex:class:create --classname foo', { ensureExitCode: 0 });
27+
execCmd('template generate apex class --classname foo', { ensureExitCode: 0 });
2828
assert.file(['foo.cls', 'foo.cls-meta.xml'].map((f) => path.join(session.project.dir, f)));
2929
assert.fileContent(path.join(session.project.dir, 'foo.cls'), 'public with sharing class foo');
3030
});
3131

3232
it('should create foo class with a targetpath set and ApexException template', () => {
33-
execCmd('force:apex:class:create --classname foo --outputdir testfolder --template ApexException', {
33+
execCmd('template generate apex class --classname foo --outputdir testfolder --template ApexException', {
3434
ensureExitCode: 0,
3535
});
3636
assert.file([
@@ -41,13 +41,13 @@ describe('Apex class creation tests:', () => {
4141
});
4242

4343
it('should override foo class using ApexException template', () => {
44-
execCmd('force:apex:class:create --classname foo --template ApexException', { ensureExitCode: 0 });
44+
execCmd('template generate apex class --classname foo --template ApexException', { ensureExitCode: 0 });
4545
assert.file(['foo.cls', 'foo.cls-meta.xml'].map((f) => path.join(session.project.dir, f)));
4646
assert.fileContent(path.join(session.project.dir, 'foo.cls'), 'public class foo extends Exception');
4747
});
4848

4949
it('should create foo class in custom folder name that has a space in it', () => {
50-
execCmd('force:apex:class:create --classname foo --outputdir "classes create"', { ensureExitCode: 0 });
50+
execCmd('template generate apex class --classname foo --outputdir "classes create"', { ensureExitCode: 0 });
5151
assert.file([
5252
path.join(session.project.dir, 'classes create', 'foo.cls'),
5353
path.join(session.project.dir, 'classes create', 'foo.cls-meta.xml'),
@@ -58,27 +58,27 @@ describe('Apex class creation tests:', () => {
5858

5959
describe('Check that all invalid name errors are thrown', () => {
6060
it('should throw a missing classname error', () => {
61-
const stderr = execCmd('force:apex:class:create').shellOutput.stderr;
61+
const stderr = execCmd('template generate apex class').shellOutput.stderr;
6262
expect(stderr).to.contain('Missing required flag');
6363
});
6464

6565
it('should throw invalid non alphanumeric class name error', () => {
66-
const stderr = execCmd('force:apex:class:create --classname /a').shellOutput.stderr;
66+
const stderr = execCmd('template generate apex class --classname /a').shellOutput.stderr;
6767
expect(stderr).to.contain(nls.localize('AlphaNumericNameError'));
6868
});
6969

7070
it('should throw invalid class name starting with numeric error', () => {
71-
const stderr = execCmd('force:apex:class:create --classname 3aa').shellOutput.stderr;
71+
const stderr = execCmd('template generate apex class --classname 3aa').shellOutput.stderr;
7272
expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError'));
7373
});
7474

7575
it('should throw invalid class name ending with underscore error', () => {
76-
const stderr = execCmd('force:apex:class:create --classname a_').shellOutput.stderr;
76+
const stderr = execCmd('template generate apex class --classname a_').shellOutput.stderr;
7777
expect(stderr).to.contain(nls.localize('EndWithUnderscoreError'));
7878
});
7979

8080
it('should throw invalid class name with double underscore error', () => {
81-
const stderr = execCmd('force:apex:class:create --classname a__a').shellOutput.stderr;
81+
const stderr = execCmd('template generate apex class --classname a__a').shellOutput.stderr;
8282
expect(stderr).to.contain(nls.localize('DoubleUnderscoreError'));
8383
});
8484
});

test/commands/force/apex/trigger/create.nut.ts renamed to test/commands/template/generate/apex/trigger.nut.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { TestSession, execCmd } from '@salesforce/cli-plugins-testkit';
1010
import { nls } from '@salesforce/templates/lib/i18n/index.js';
1111
import assert from 'yeoman-assert';
1212

13-
describe('Apex trigger creation tests:', () => {
13+
describe('template generate apex trigger:', () => {
1414
let session: TestSession;
1515
before(async () => {
1616
session = await TestSession.create({
@@ -24,15 +24,18 @@ describe('Apex trigger creation tests:', () => {
2424

2525
describe('Check apex trigger creation', () => {
2626
it('should create foo trigger using ApexTrigger template and default output directory', () => {
27-
execCmd('force:apex:trigger:create --triggername foo', { ensureExitCode: 0 });
27+
execCmd('template generate apex trigger --triggername foo', { ensureExitCode: 0 });
2828
assert.file(['foo.trigger', 'foo.trigger-meta.xml'].map((f) => path.join(session.project.dir, f)));
2929
assert.fileContent(path.join(session.project.dir, 'foo.trigger'), 'trigger foo on SOBJECT (before insert)');
3030
});
3131

3232
it('should create foo trigger with a targetpath and sobject set', () => {
33-
execCmd('force:apex:trigger:create --triggername foo --sobject customsobject --outputdir apextriggertestfolder', {
34-
ensureExitCode: 0,
35-
});
33+
execCmd(
34+
'template generate apex trigger --triggername foo --sobject customsobject --outputdir apextriggertestfolder',
35+
{
36+
ensureExitCode: 0,
37+
}
38+
);
3639
assert.file(
3740
[
3841
path.join('apextriggertestfolder', 'foo.trigger'),
@@ -46,15 +49,15 @@ describe('Apex trigger creation tests:', () => {
4649
});
4750

4851
it('should override foo trigger with a different sobject and triggerevent', () => {
49-
execCmd('force:apex:trigger:create --triggername foo --sobject override --triggerevents "after insert"', {
52+
execCmd('template generate apex trigger --triggername foo --sobject override --triggerevents "after insert"', {
5053
ensureExitCode: 0,
5154
});
5255
assert.file(['foo.trigger', 'foo.trigger-meta.xml'].map((f) => path.join(session.project.dir, f)));
5356
assert.fileContent(path.join(session.project.dir, 'foo.trigger'), 'trigger foo on override (after insert)');
5457
});
5558

5659
it('should create foo trigger in custom folder name that has a space in it', () => {
57-
execCmd('force:apex:trigger:create --triggername foo --outputdir "classes create"', { ensureExitCode: 0 });
60+
execCmd('template generate apex trigger --triggername foo --outputdir "classes create"', { ensureExitCode: 0 });
5861
assert.file(
5962
[path.join('classes create', 'foo.trigger'), path.join('classes create', 'foo.trigger-meta.xml')].map((f) =>
6063
path.join(session.project.dir, f)
@@ -68,27 +71,27 @@ describe('Apex trigger creation tests:', () => {
6871
});
6972
describe('Check that all invalid name errors are thrown', () => {
7073
it('should throw a missing trigger name error', () => {
71-
const stderr = execCmd('force:apex:trigger:create').shellOutput.stderr;
74+
const stderr = execCmd('template generate apex trigger').shellOutput.stderr;
7275
expect(stderr).to.contain('Missing required flag');
7376
});
7477

7578
it('should throw invalid non alphanumeric trigger name error', () => {
76-
const stderr = execCmd('force:apex:trigger:create --triggername /a').shellOutput.stderr;
79+
const stderr = execCmd('template generate apex trigger --triggername /a').shellOutput.stderr;
7780
expect(stderr).to.contain(nls.localize('AlphaNumericNameError'));
7881
});
7982

8083
it('should throw invalid trigger name starting with numeric error', () => {
81-
const stderr = execCmd('force:apex:trigger:create --triggername 3aa').shellOutput.stderr;
84+
const stderr = execCmd('template generate apex trigger --triggername 3aa').shellOutput.stderr;
8285
expect(stderr).to.contain(nls.localize('NameMustStartWithLetterError'));
8386
});
8487

8588
it('should throw invalid trigger name ending with underscore error', () => {
86-
const stderr = execCmd('force:apex:trigger:create --triggername a_').shellOutput.stderr;
89+
const stderr = execCmd('template generate apex trigger --triggername a_').shellOutput.stderr;
8790
expect(stderr).to.contain(nls.localize('EndWithUnderscoreError'));
8891
});
8992

9093
it('should throw invalid trigger name with double underscore error', () => {
91-
const stderr = execCmd('force:apex:trigger:create --triggername a__a').shellOutput.stderr;
94+
const stderr = execCmd('template generate apex trigger --triggername a__a').shellOutput.stderr;
9295
expect(stderr).to.contain(nls.localize('DoubleUnderscoreError'));
9396
});
9497
});

0 commit comments

Comments
 (0)