@salesforce/plugin-custom-metadata 2.2.13 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -46
- package/lib/commands/cmdt/generate/field.d.ts +7 -7
- package/lib/commands/cmdt/generate/field.js +76 -79
- package/lib/commands/cmdt/generate/field.js.map +1 -1
- package/lib/commands/cmdt/generate/fromorg.d.ts +11 -11
- package/lib/commands/cmdt/generate/fromorg.js +87 -92
- package/lib/commands/cmdt/generate/fromorg.js.map +1 -1
- package/lib/commands/cmdt/generate/object.d.ts +6 -6
- package/lib/commands/cmdt/generate/object.js +55 -58
- package/lib/commands/cmdt/generate/object.js.map +1 -1
- package/lib/commands/cmdt/generate/record.d.ts +7 -7
- package/lib/commands/cmdt/generate/record.js +64 -68
- package/lib/commands/cmdt/generate/record.js.map +1 -1
- package/lib/commands/cmdt/generate/records.d.ts +7 -7
- package/lib/commands/cmdt/generate/records.js +58 -60
- package/lib/commands/cmdt/generate/records.js.map +1 -1
- package/lib/index.js +1 -3
- package/lib/index.js.map +1 -1
- package/lib/shared/helpers/createUtil.d.ts +2 -2
- package/lib/shared/helpers/createUtil.js +17 -27
- package/lib/shared/helpers/createUtil.js.map +1 -1
- package/lib/shared/helpers/fileWriter.d.ts +2 -2
- package/lib/shared/helpers/fileWriter.js +4 -9
- package/lib/shared/helpers/fileWriter.js.map +1 -1
- package/lib/shared/helpers/metadataUtil.js +5 -12
- package/lib/shared/helpers/metadataUtil.js.map +1 -1
- package/lib/shared/helpers/validationUtil.js +15 -21
- package/lib/shared/helpers/validationUtil.js.map +1 -1
- package/lib/shared/interfaces/createConfig.js +1 -2
- package/lib/shared/interfaces/createConfig.js.map +1 -1
- package/lib/shared/templates/templates.js +13 -18
- package/lib/shared/templates/templates.js.map +1 -1
- package/oclif.lock +292 -390
- package/oclif.manifest.json +520 -268
- package/package.json +29 -26
|
@@ -1,41 +1,97 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
1
|
/*
|
|
5
2
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
6
3
|
* All rights reserved.
|
|
7
4
|
* Licensed under the BSD 3-Clause license.
|
|
8
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const messages =
|
|
22
|
-
class Generate extends
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { Flags, loglevel, orgApiVersionFlagWithDeprecations, requiredOrgFlagWithDeprecations, SfCommand, } from '@salesforce/sf-plugins-core';
|
|
11
|
+
import { SfError, Messages } from '@salesforce/core';
|
|
12
|
+
import { createRecord, getFileData } from '../../../shared/helpers/createUtil.js';
|
|
13
|
+
import { writeTypeFile, writeFieldFile } from '../../../shared/helpers/fileWriter.js';
|
|
14
|
+
import { describeObjFields, cleanQueryResponse, validCustomSettingType } from '../../../shared/helpers/metadataUtil.js';
|
|
15
|
+
import { validateAPIName, validateMetadataTypeName, isValidMetadataRecordName, } from '../../../shared/helpers/validationUtil.js';
|
|
16
|
+
import { canConvert, createObjectXML, createFieldXML } from '../../../shared/templates/templates.js';
|
|
17
|
+
Messages.importMessagesDirectory(path.dirname(fileURLToPath(import.meta.url)));
|
|
18
|
+
const messages = Messages.loadMessages('@salesforce/plugin-custom-metadata', 'fromorg');
|
|
19
|
+
export default class Generate extends SfCommand {
|
|
20
|
+
static summary = messages.getMessage('summary');
|
|
21
|
+
static description = messages.getMessage('description');
|
|
22
|
+
static examples = messages.getMessages('examples');
|
|
23
|
+
static requiresProject = true;
|
|
24
|
+
static aliases = ['force:cmdt:generate'];
|
|
25
|
+
static flags = {
|
|
26
|
+
'target-org': requiredOrgFlagWithDeprecations,
|
|
27
|
+
'api-version': orgApiVersionFlagWithDeprecations,
|
|
28
|
+
loglevel,
|
|
29
|
+
// flag with a value (-n, --name=VALUE)
|
|
30
|
+
'dev-name': Flags.string({
|
|
31
|
+
char: 'n',
|
|
32
|
+
required: true,
|
|
33
|
+
summary: messages.getMessage('flags.dev-name.summary'),
|
|
34
|
+
parse: async (input) => Promise.resolve(validateMetadataTypeName(input)),
|
|
35
|
+
aliases: ['devname'],
|
|
36
|
+
}),
|
|
37
|
+
label: Flags.string({
|
|
38
|
+
char: 'l',
|
|
39
|
+
summary: messages.getMessage('flags.label.summary'),
|
|
40
|
+
}),
|
|
41
|
+
'plural-label': Flags.string({
|
|
42
|
+
char: 'p',
|
|
43
|
+
summary: messages.getMessage('flags.plural-label.summary'),
|
|
44
|
+
aliases: ['plurallabel'],
|
|
45
|
+
}),
|
|
46
|
+
visibility: Flags.string({
|
|
47
|
+
char: 'v',
|
|
48
|
+
summary: messages.getMessage('flags.visibility.summary'),
|
|
49
|
+
description: messages.getMessage('flags.visibility.description'),
|
|
50
|
+
options: ['PackageProtected', 'Protected', 'Public'],
|
|
51
|
+
default: 'Public',
|
|
52
|
+
}),
|
|
53
|
+
sobject: Flags.string({
|
|
54
|
+
char: 's',
|
|
55
|
+
required: true,
|
|
56
|
+
summary: messages.getMessage('flags.sobject.summary'),
|
|
57
|
+
parse: async (sobjectname) => Promise.resolve(validateAPIName(sobjectname)),
|
|
58
|
+
aliases: ['sobjectname'],
|
|
59
|
+
}),
|
|
60
|
+
'ignore-unsupported': Flags.boolean({
|
|
61
|
+
char: 'i',
|
|
62
|
+
summary: messages.getMessage('flags.ignore-unsupported.summary'),
|
|
63
|
+
description: messages.getMessage('flags.ignore-unsupported.description'),
|
|
64
|
+
aliases: ['ignoreunsupported'],
|
|
65
|
+
}),
|
|
66
|
+
'type-output-directory': Flags.directory({
|
|
67
|
+
char: 'd',
|
|
68
|
+
summary: messages.getMessage('flags.type-output-directory.summary'),
|
|
69
|
+
default: path.join('force-app', 'main', 'default', 'objects'),
|
|
70
|
+
aliases: ['typeoutputdir'],
|
|
71
|
+
}),
|
|
72
|
+
'records-output-dir': Flags.directory({
|
|
73
|
+
char: 'r',
|
|
74
|
+
summary: messages.getMessage('flags.records-output-dir.summary'),
|
|
75
|
+
default: path.join('force-app', 'main', 'default', 'customMetadata'),
|
|
76
|
+
aliases: ['recordsoutputdir'],
|
|
77
|
+
}),
|
|
78
|
+
};
|
|
23
79
|
async run() {
|
|
24
|
-
const { flags } = await this.parse(
|
|
80
|
+
const { flags } = await this.parse(Generate);
|
|
25
81
|
const conn = flags['target-org'].getConnection(flags['api-version']);
|
|
26
82
|
// use default target org connection to get object describe if no source is provided.
|
|
27
83
|
const describeObj = await conn.metadata.read('CustomObject', flags.sobject);
|
|
28
84
|
// throw error if the object doesnot exist(empty json as response from the describe call.)
|
|
29
|
-
if (
|
|
85
|
+
if (describeObj.fields.length === 0) {
|
|
30
86
|
const errMsg = messages.getMessage('sobjectnameNoResultError', [flags.sobject]);
|
|
31
|
-
throw new
|
|
87
|
+
throw new SfError(errMsg, 'sobjectnameNoResultError');
|
|
32
88
|
}
|
|
33
89
|
// check for custom setting
|
|
34
90
|
if (describeObj.customSettingsType) {
|
|
35
91
|
// if custom setting check for type and visibility
|
|
36
|
-
if (!
|
|
92
|
+
if (!validCustomSettingType(describeObj)) {
|
|
37
93
|
const errMsg = messages.getMessage('customSettingTypeError', [flags.sobject]);
|
|
38
|
-
throw new
|
|
94
|
+
throw new SfError(errMsg, 'customSettingTypeError');
|
|
39
95
|
}
|
|
40
96
|
}
|
|
41
97
|
const label = flags.label ?? flags['dev-name'];
|
|
@@ -44,31 +100,31 @@ class Generate extends sf_plugins_core_1.SfCommand {
|
|
|
44
100
|
try {
|
|
45
101
|
this.spinner.start('creating the CMDT object');
|
|
46
102
|
// create custom metadata type
|
|
47
|
-
const objectXML =
|
|
48
|
-
await
|
|
103
|
+
const objectXML = createObjectXML({ label, pluralLabel }, flags.visibility);
|
|
104
|
+
await writeTypeFile(fs, outputDir, flags['dev-name'], objectXML);
|
|
49
105
|
this.spinner.status = 'creating the CMDT fields';
|
|
50
106
|
// get all the field details before creating field metadata
|
|
51
|
-
const fields =
|
|
107
|
+
const fields = describeObjFields(describeObj)
|
|
52
108
|
// added type check here to skip the creation of un supported fields
|
|
53
|
-
.filter((f) => !flags['ignore-unsupported'] ||
|
|
109
|
+
.filter((f) => !flags['ignore-unsupported'] || canConvert(f['type']))
|
|
54
110
|
.flatMap((f) =>
|
|
55
111
|
// check for Geo Location fields before hand and create two different fields for longitude and latitude.
|
|
56
112
|
f.type !== 'Location' ? [f] : convertLocationFieldToText(f));
|
|
57
113
|
// create custom metdata fields
|
|
58
|
-
await Promise.all(fields.map((f) =>
|
|
114
|
+
await Promise.all(fields.map((f) => writeFieldFile(fs, path.join(outputDir, `${flags['dev-name']}__mdt`), f.fullName, createFieldXML(f, !flags['ignore-unsupported']))));
|
|
59
115
|
this.spinner.status = 'creating the CMDT records';
|
|
60
116
|
// if customMetadata folder does not exist, create it
|
|
61
117
|
await fs.promises.mkdir(recordsOutputDir, { recursive: true });
|
|
62
118
|
const fieldDirPath = path.join(outputDir, `${flags['dev-name']}__mdt`, 'fields');
|
|
63
119
|
const fileNames = await fs.promises.readdir(fieldDirPath);
|
|
64
|
-
const fileData = await
|
|
120
|
+
const fileData = await getFileData(fieldDirPath, fileNames);
|
|
65
121
|
// query records from source
|
|
66
122
|
const sObjectRecords = await conn.query(getSoqlQuery(describeObj));
|
|
67
123
|
await Promise.all(sObjectRecords.records.map((rec) => {
|
|
68
|
-
const record =
|
|
124
|
+
const record = cleanQueryResponse(rec, describeObj);
|
|
69
125
|
const lblName = rec['Name'];
|
|
70
|
-
const recordName =
|
|
71
|
-
return
|
|
126
|
+
const recordName = isValidMetadataRecordName(lblName) ? lblName : lblName.replace(/ +/g, '_');
|
|
127
|
+
return createRecord({
|
|
72
128
|
typename: flags['dev-name'],
|
|
73
129
|
recordname: recordName,
|
|
74
130
|
label: lblName,
|
|
@@ -94,72 +150,11 @@ class Generate extends sf_plugins_core_1.SfCommand {
|
|
|
94
150
|
.map((f) => fs.promises.unlink(path.join(recordsOutputDir, f))));
|
|
95
151
|
this.spinner.stop('generate command failed to run');
|
|
96
152
|
const errMsg = messages.getMessage('generateError', [e instanceof Error ? e.message : 'unknown error']);
|
|
97
|
-
throw new
|
|
153
|
+
throw new SfError(errMsg, 'generateError');
|
|
98
154
|
}
|
|
99
155
|
return { outputDir, recordsOutputDir };
|
|
100
156
|
}
|
|
101
157
|
}
|
|
102
|
-
_a = Generate;
|
|
103
|
-
Generate.summary = messages.getMessage('summary');
|
|
104
|
-
Generate.description = messages.getMessage('description');
|
|
105
|
-
Generate.examples = messages.getMessages('examples');
|
|
106
|
-
Generate.requiresProject = true;
|
|
107
|
-
Generate.aliases = ['force:cmdt:generate'];
|
|
108
|
-
Generate.flags = {
|
|
109
|
-
'target-org': sf_plugins_core_1.requiredOrgFlagWithDeprecations,
|
|
110
|
-
'api-version': sf_plugins_core_1.orgApiVersionFlagWithDeprecations,
|
|
111
|
-
loglevel: sf_plugins_core_1.loglevel,
|
|
112
|
-
// flag with a value (-n, --name=VALUE)
|
|
113
|
-
'dev-name': sf_plugins_core_1.Flags.string({
|
|
114
|
-
char: 'n',
|
|
115
|
-
required: true,
|
|
116
|
-
summary: messages.getMessage('flags.dev-name.summary'),
|
|
117
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
|
|
118
|
-
aliases: ['devname'],
|
|
119
|
-
}),
|
|
120
|
-
label: sf_plugins_core_1.Flags.string({
|
|
121
|
-
char: 'l',
|
|
122
|
-
summary: messages.getMessage('flags.label.summary'),
|
|
123
|
-
}),
|
|
124
|
-
'plural-label': sf_plugins_core_1.Flags.string({
|
|
125
|
-
char: 'p',
|
|
126
|
-
summary: messages.getMessage('flags.plural-label.summary'),
|
|
127
|
-
aliases: ['plurallabel'],
|
|
128
|
-
}),
|
|
129
|
-
visibility: sf_plugins_core_1.Flags.string({
|
|
130
|
-
char: 'v',
|
|
131
|
-
summary: messages.getMessage('flags.visibility.summary'),
|
|
132
|
-
description: messages.getMessage('flags.visibility.description'),
|
|
133
|
-
options: ['PackageProtected', 'Protected', 'Public'],
|
|
134
|
-
default: 'Public',
|
|
135
|
-
}),
|
|
136
|
-
sobject: sf_plugins_core_1.Flags.string({
|
|
137
|
-
char: 's',
|
|
138
|
-
required: true,
|
|
139
|
-
summary: messages.getMessage('flags.sobject.summary'),
|
|
140
|
-
parse: async (sobjectname) => Promise.resolve((0, validationUtil_1.validateAPIName)(sobjectname)),
|
|
141
|
-
aliases: ['sobjectname'],
|
|
142
|
-
}),
|
|
143
|
-
'ignore-unsupported': sf_plugins_core_1.Flags.boolean({
|
|
144
|
-
char: 'i',
|
|
145
|
-
summary: messages.getMessage('flags.ignore-unsupported.summary'),
|
|
146
|
-
description: messages.getMessage('flags.ignore-unsupported.description'),
|
|
147
|
-
aliases: ['ignoreunsupported'],
|
|
148
|
-
}),
|
|
149
|
-
'type-output-directory': sf_plugins_core_1.Flags.directory({
|
|
150
|
-
char: 'd',
|
|
151
|
-
summary: messages.getMessage('flags.type-output-directory.summary'),
|
|
152
|
-
default: path.join('force-app', 'main', 'default', 'objects'),
|
|
153
|
-
aliases: ['typeoutputdir'],
|
|
154
|
-
}),
|
|
155
|
-
'records-output-dir': sf_plugins_core_1.Flags.directory({
|
|
156
|
-
char: 'r',
|
|
157
|
-
summary: messages.getMessage('flags.records-output-dir.summary'),
|
|
158
|
-
default: path.join('force-app', 'main', 'default', 'customMetadata'),
|
|
159
|
-
aliases: ['recordsoutputdir'],
|
|
160
|
-
}),
|
|
161
|
-
};
|
|
162
|
-
exports.default = Generate;
|
|
163
158
|
const getSoqlQuery = (describeResult) => {
|
|
164
159
|
const fieldNames = describeResult.fields.map((field) => field.fullName).join(',');
|
|
165
160
|
// Added Name hardcoded as Name field is not retrieved as part of object describe.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromorg.js","sourceRoot":"","sources":["../../../../src/commands/cmdt/generate/fromorg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fromorg.js","sourceRoot":"","sources":["../../../../src/commands/cmdt/generate/fromorg.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,12 +12,12 @@ export default class Create extends SfCommand<CmdtCreateResponse> {
|
|
|
12
12
|
static readonly aliases: string[];
|
|
13
13
|
static readonly requiresProject = true;
|
|
14
14
|
static readonly flags: {
|
|
15
|
-
loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
16
|
-
'type-name': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
17
|
-
label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
18
|
-
'plural-label': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
19
|
-
visibility: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
20
|
-
'output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
15
|
+
loglevel: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
16
|
+
'type-name': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
17
|
+
label: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
18
|
+
'plural-label': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
19
|
+
visibility: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
20
|
+
'output-directory': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
21
21
|
};
|
|
22
22
|
run(): Promise<CmdtCreateResponse>;
|
|
23
23
|
}
|
|
@@ -1,27 +1,67 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
1
|
/*
|
|
5
2
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
6
3
|
* All rights reserved.
|
|
7
4
|
* Licensed under the BSD 3-Clause license.
|
|
8
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import { dirname } from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { Flags, loglevel, SfCommand } from '@salesforce/sf-plugins-core';
|
|
11
|
+
import { Messages } from '@salesforce/core';
|
|
12
|
+
import { writeTypeFile } from '../../../shared/helpers/fileWriter.js';
|
|
13
|
+
import { validateMetadataTypeName, validateLessThanForty } from '../../../shared/helpers/validationUtil.js';
|
|
14
|
+
import { createObjectXML } from '../../../shared/templates/templates.js';
|
|
15
|
+
Messages.importMessagesDirectory(dirname(fileURLToPath(import.meta.url)));
|
|
16
|
+
const messages = Messages.loadMessages('@salesforce/plugin-custom-metadata', 'object');
|
|
17
|
+
export default class Create extends SfCommand {
|
|
18
|
+
static summary = messages.getMessage('summary');
|
|
19
|
+
static description = messages.getMessage('description');
|
|
20
|
+
static examples = messages.getMessages('examples');
|
|
21
|
+
static aliases = ['force:cmdt:create', 'cmdt:create'];
|
|
22
|
+
static requiresProject = true;
|
|
23
|
+
static flags = {
|
|
24
|
+
loglevel,
|
|
25
|
+
'type-name': Flags.string({
|
|
26
|
+
char: 'n',
|
|
27
|
+
summary: messages.getMessage('flags.type-name.summary'),
|
|
28
|
+
description: messages.getMessage('flags.type-name.description'),
|
|
29
|
+
required: true,
|
|
30
|
+
parse: async (input) => Promise.resolve(validateMetadataTypeName(input)),
|
|
31
|
+
aliases: ['typename'],
|
|
32
|
+
}),
|
|
33
|
+
label: Flags.string({
|
|
34
|
+
char: 'l',
|
|
35
|
+
summary: messages.getMessage('flags.label.summary'),
|
|
36
|
+
parse: async (input) => Promise.resolve(validateLessThanForty(input, messages.getMessage('errorNotValidLabelName', [input]))),
|
|
37
|
+
}),
|
|
38
|
+
'plural-label': Flags.string({
|
|
39
|
+
char: 'p',
|
|
40
|
+
summary: messages.getMessage('flags.plural-label.summary'),
|
|
41
|
+
parse: async (input) => Promise.resolve(validateLessThanForty(input, messages.getMessage('errorNotValidPluralLabelName', [input]))),
|
|
42
|
+
aliases: ['plurallabel'],
|
|
43
|
+
}),
|
|
44
|
+
visibility: Flags.string({
|
|
45
|
+
char: 'v',
|
|
46
|
+
summary: messages.getMessage('flags.visibility.summary'),
|
|
47
|
+
description: messages.getMessage('flags.visibility.description'),
|
|
48
|
+
options: ['PackageProtected', 'Protected', 'Public'],
|
|
49
|
+
default: 'Public',
|
|
50
|
+
}),
|
|
51
|
+
'output-directory': Flags.directory({
|
|
52
|
+
char: 'd',
|
|
53
|
+
summary: messages.getMessage('flags.output-directory.summary'),
|
|
54
|
+
description: messages.getMessage('flags.output-directory.description'),
|
|
55
|
+
default: '',
|
|
56
|
+
aliases: ['outputdir', 'outputdirectory'],
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
19
59
|
async run() {
|
|
20
|
-
const { flags } = await this.parse(
|
|
60
|
+
const { flags } = await this.parse(Create);
|
|
21
61
|
const label = flags.label ?? flags['type-name'].replace('__mdt', ''); // If a label is not provided default using the dev name. trim __mdt out
|
|
22
62
|
const pluralLabel = flags['plural-label'] ?? label;
|
|
23
|
-
const objectXML =
|
|
24
|
-
const saveResults = await
|
|
63
|
+
const objectXML = createObjectXML({ label, pluralLabel }, flags.visibility);
|
|
64
|
+
const saveResults = await writeTypeFile(fs, flags['output-directory'], flags['type-name'], objectXML);
|
|
25
65
|
this.log(messages.getMessage('targetDirectory', [saveResults.dir]));
|
|
26
66
|
this.log(messages.getMessage(saveResults.updated ? 'fileUpdate' : 'fileCreated', [saveResults.fileName]));
|
|
27
67
|
return {
|
|
@@ -32,47 +72,4 @@ class Create extends sf_plugins_core_1.SfCommand {
|
|
|
32
72
|
};
|
|
33
73
|
}
|
|
34
74
|
}
|
|
35
|
-
_a = Create;
|
|
36
|
-
Create.summary = messages.getMessage('summary');
|
|
37
|
-
Create.description = messages.getMessage('description');
|
|
38
|
-
Create.examples = messages.getMessages('examples');
|
|
39
|
-
Create.aliases = ['force:cmdt:create', 'cmdt:create'];
|
|
40
|
-
Create.requiresProject = true;
|
|
41
|
-
Create.flags = {
|
|
42
|
-
loglevel: sf_plugins_core_1.loglevel,
|
|
43
|
-
'type-name': sf_plugins_core_1.Flags.string({
|
|
44
|
-
char: 'n',
|
|
45
|
-
summary: messages.getMessage('flags.type-name.summary'),
|
|
46
|
-
description: messages.getMessage('flags.type-name.description'),
|
|
47
|
-
required: true,
|
|
48
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
|
|
49
|
-
aliases: ['typename'],
|
|
50
|
-
}),
|
|
51
|
-
label: sf_plugins_core_1.Flags.string({
|
|
52
|
-
char: 'l',
|
|
53
|
-
summary: messages.getMessage('flags.label.summary'),
|
|
54
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('errorNotValidLabelName', [input]))),
|
|
55
|
-
}),
|
|
56
|
-
'plural-label': sf_plugins_core_1.Flags.string({
|
|
57
|
-
char: 'p',
|
|
58
|
-
summary: messages.getMessage('flags.plural-label.summary'),
|
|
59
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('errorNotValidPluralLabelName', [input]))),
|
|
60
|
-
aliases: ['plurallabel'],
|
|
61
|
-
}),
|
|
62
|
-
visibility: sf_plugins_core_1.Flags.string({
|
|
63
|
-
char: 'v',
|
|
64
|
-
summary: messages.getMessage('flags.visibility.summary'),
|
|
65
|
-
description: messages.getMessage('flags.visibility.description'),
|
|
66
|
-
options: ['PackageProtected', 'Protected', 'Public'],
|
|
67
|
-
default: 'Public',
|
|
68
|
-
}),
|
|
69
|
-
'output-directory': sf_plugins_core_1.Flags.directory({
|
|
70
|
-
char: 'd',
|
|
71
|
-
summary: messages.getMessage('flags.output-directory.summary'),
|
|
72
|
-
description: messages.getMessage('flags.output-directory.description'),
|
|
73
|
-
default: '',
|
|
74
|
-
aliases: ['outputdir', 'outputdirectory'],
|
|
75
|
-
}),
|
|
76
|
-
};
|
|
77
|
-
exports.default = Create;
|
|
78
75
|
//# sourceMappingURL=object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/commands/cmdt/generate/object.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/commands/cmdt/generate/object.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,13 +18,13 @@ export default class Create extends SfCommand<CmdtRecordCreateResponse> {
|
|
|
18
18
|
static readonly aliases: string[];
|
|
19
19
|
static readonly examples: string[];
|
|
20
20
|
static readonly flags: {
|
|
21
|
-
loglevel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
22
|
-
'type-name': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
23
|
-
'record-name': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
24
|
-
label: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
25
|
-
protected: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
26
|
-
'input-directory': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
27
|
-
'output-directory': import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
21
|
+
loglevel: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
22
|
+
'type-name': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
23
|
+
'record-name': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
24
|
+
label: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
25
|
+
protected: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
26
|
+
'input-directory': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
27
|
+
'output-directory': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
28
28
|
};
|
|
29
29
|
run(): Promise<CmdtRecordCreateResponse>;
|
|
30
30
|
}
|
|
@@ -1,33 +1,80 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
1
|
/*
|
|
5
2
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
6
3
|
* All rights reserved.
|
|
7
4
|
* Licensed under the BSD 3-Clause license.
|
|
8
5
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { Flags, loglevel, parseVarArgs, SfCommand } from '@salesforce/sf-plugins-core';
|
|
11
|
+
import { Messages } from '@salesforce/core';
|
|
12
|
+
import { appendDirectorySuffix, createRecord, getFileData } from '../../../shared/helpers/createUtil.js';
|
|
13
|
+
import { validateMetadataRecordName, validateMetadataTypeName, validateLessThanForty, } from '../../../shared/helpers/validationUtil.js';
|
|
14
|
+
Messages.importMessagesDirectory(path.dirname(fileURLToPath(import.meta.url)));
|
|
15
|
+
const messages = Messages.loadMessages('@salesforce/plugin-custom-metadata', 'record');
|
|
16
|
+
export default class Create extends SfCommand {
|
|
17
|
+
static strict = false;
|
|
18
|
+
static summary = messages.getMessage('summary');
|
|
19
|
+
static description = messages.getMessage('description');
|
|
20
|
+
static requiresProject = true;
|
|
21
|
+
static aliases = ['force:cmdt:record:create', 'cmdt:record:create'];
|
|
22
|
+
static examples = messages.getMessages('examples');
|
|
23
|
+
static flags = {
|
|
24
|
+
loglevel,
|
|
25
|
+
'type-name': Flags.string({
|
|
26
|
+
char: 't',
|
|
27
|
+
summary: messages.getMessage('flags.type-name.summary'),
|
|
28
|
+
required: true,
|
|
29
|
+
parse: async (input) => Promise.resolve(validateMetadataTypeName(input)),
|
|
30
|
+
aliases: ['typename'],
|
|
31
|
+
}),
|
|
32
|
+
'record-name': Flags.string({
|
|
33
|
+
char: 'n',
|
|
34
|
+
summary: messages.getMessage('flags.record-name.summary'),
|
|
35
|
+
required: true,
|
|
36
|
+
parse: async (input) => Promise.resolve(validateMetadataRecordName(input)),
|
|
37
|
+
aliases: ['recordname'],
|
|
38
|
+
}),
|
|
39
|
+
label: Flags.string({
|
|
40
|
+
char: 'l',
|
|
41
|
+
summary: messages.getMessage('flags.label.summary'),
|
|
42
|
+
parse: async (input) => Promise.resolve(validateLessThanForty(input, messages.getMessage('notAValidLabelNameError', [input]))),
|
|
43
|
+
}),
|
|
44
|
+
// I hate this flag so much, but have to preserve it
|
|
45
|
+
protected: Flags.string({
|
|
46
|
+
char: 'p',
|
|
47
|
+
summary: messages.getMessage('flags.protected.summary'),
|
|
48
|
+
description: messages.getMessage('flags.protected.description'),
|
|
49
|
+
options: ['true', 'false'],
|
|
50
|
+
default: 'false',
|
|
51
|
+
}),
|
|
52
|
+
'input-directory': Flags.directory({
|
|
53
|
+
char: 'i',
|
|
54
|
+
summary: messages.getMessage('flags.input-directory.summary'),
|
|
55
|
+
default: path.join('force-app', 'main', 'default', 'objects'),
|
|
56
|
+
aliases: ['inputdir', 'inputdirectory'],
|
|
57
|
+
exists: true,
|
|
58
|
+
}),
|
|
59
|
+
'output-directory': Flags.directory({
|
|
60
|
+
char: 'd',
|
|
61
|
+
summary: messages.getMessage('flags.output-directory.summary'),
|
|
62
|
+
default: path.join('force-app', 'main', 'default', 'customMetadata'),
|
|
63
|
+
aliases: ['outputdir', 'outputdirectory'],
|
|
64
|
+
}),
|
|
65
|
+
};
|
|
19
66
|
async run() {
|
|
20
|
-
const { flags, args, argv } = await this.parse(
|
|
21
|
-
const varargs =
|
|
67
|
+
const { flags, args, argv } = await this.parse(Create);
|
|
68
|
+
const varargs = parseVarArgs(args, argv);
|
|
22
69
|
const label = flags.label ?? flags['record-name'];
|
|
23
70
|
const protectedFlag = flags.protected === 'true';
|
|
24
|
-
const dirName =
|
|
71
|
+
const dirName = appendDirectorySuffix(flags['type-name']);
|
|
25
72
|
const fieldDirPath = path.join(flags['input-directory'], dirName, 'fields');
|
|
26
73
|
const fileNames = await fs.promises.readdir(fieldDirPath);
|
|
27
74
|
// if customMetadata folder does not exist, create it
|
|
28
75
|
await fs.promises.mkdir(flags['output-directory'], { recursive: true });
|
|
29
|
-
const fileData = await
|
|
30
|
-
await
|
|
76
|
+
const fileData = await getFileData(fieldDirPath, fileNames);
|
|
77
|
+
await createRecord({
|
|
31
78
|
typename: flags['type-name'],
|
|
32
79
|
recordname: flags['record-name'],
|
|
33
80
|
label,
|
|
@@ -57,55 +104,4 @@ class Create extends sf_plugins_core_1.SfCommand {
|
|
|
57
104
|
};
|
|
58
105
|
}
|
|
59
106
|
}
|
|
60
|
-
_a = Create;
|
|
61
|
-
Create.strict = false;
|
|
62
|
-
Create.summary = messages.getMessage('summary');
|
|
63
|
-
Create.description = messages.getMessage('description');
|
|
64
|
-
Create.requiresProject = true;
|
|
65
|
-
Create.aliases = ['force:cmdt:record:create', 'cmdt:record:create'];
|
|
66
|
-
Create.examples = messages.getMessages('examples');
|
|
67
|
-
Create.flags = {
|
|
68
|
-
loglevel: sf_plugins_core_1.loglevel,
|
|
69
|
-
'type-name': sf_plugins_core_1.Flags.string({
|
|
70
|
-
char: 't',
|
|
71
|
-
summary: messages.getMessage('flags.type-name.summary'),
|
|
72
|
-
required: true,
|
|
73
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataTypeName)(input)),
|
|
74
|
-
aliases: ['typename'],
|
|
75
|
-
}),
|
|
76
|
-
'record-name': sf_plugins_core_1.Flags.string({
|
|
77
|
-
char: 'n',
|
|
78
|
-
summary: messages.getMessage('flags.record-name.summary'),
|
|
79
|
-
required: true,
|
|
80
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateMetadataRecordName)(input)),
|
|
81
|
-
aliases: ['recordname'],
|
|
82
|
-
}),
|
|
83
|
-
label: sf_plugins_core_1.Flags.string({
|
|
84
|
-
char: 'l',
|
|
85
|
-
summary: messages.getMessage('flags.label.summary'),
|
|
86
|
-
parse: async (input) => Promise.resolve((0, validationUtil_1.validateLessThanForty)(input, messages.getMessage('notAValidLabelNameError', [input]))),
|
|
87
|
-
}),
|
|
88
|
-
// I hate this flag so much, but have to preserve it
|
|
89
|
-
protected: sf_plugins_core_1.Flags.string({
|
|
90
|
-
char: 'p',
|
|
91
|
-
summary: messages.getMessage('flags.protected.summary'),
|
|
92
|
-
description: messages.getMessage('flags.protected.description'),
|
|
93
|
-
options: ['true', 'false'],
|
|
94
|
-
default: 'false',
|
|
95
|
-
}),
|
|
96
|
-
'input-directory': sf_plugins_core_1.Flags.directory({
|
|
97
|
-
char: 'i',
|
|
98
|
-
summary: messages.getMessage('flags.input-directory.summary'),
|
|
99
|
-
default: path.join('force-app', 'main', 'default', 'objects'),
|
|
100
|
-
aliases: ['inputdir', 'inputdirectory'],
|
|
101
|
-
exists: true,
|
|
102
|
-
}),
|
|
103
|
-
'output-directory': sf_plugins_core_1.Flags.directory({
|
|
104
|
-
char: 'd',
|
|
105
|
-
summary: messages.getMessage('flags.output-directory.summary'),
|
|
106
|
-
default: path.join('force-app', 'main', 'default', 'customMetadata'),
|
|
107
|
-
aliases: ['outputdir', 'outputdirectory'],
|
|
108
|
-
}),
|
|
109
|
-
};
|
|
110
|
-
exports.default = Create;
|
|
111
107
|
//# sourceMappingURL=record.js.map
|