@terafina/tffa-sfdx-plugin 14.1.0 → 15.0.0-rc.10

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 CHANGED
@@ -41,7 +41,7 @@ $ npm install -g @terafina/tffa-sfdx-plugin
41
41
  $ sfdx COMMAND
42
42
  running command...
43
43
  $ sfdx (--version|-v)
44
- @terafina/tffa-sfdx-plugin/14.1.0 linux-x64 node-v16.13.1
44
+ @terafina/tffa-sfdx-plugin/15.0.0-rc.10 darwin-arm64 node-v16.16.0
45
45
  $ sfdx --help [COMMAND]
46
46
  USAGE
47
47
  $ sfdx COMMAND
@@ -104,7 +104,7 @@ EXAMPLES
104
104
  Generate Apex API Documentation : $sfdx tffa:apexdoc
105
105
  ```
106
106
 
107
- _See code: [src/commands/tffa/apexdoc.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v14.1.0/src/commands/tffa/apexdoc.ts)_
107
+ _See code: [src/commands/tffa/apexdoc.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v15.0.0-rc.10/src/commands/tffa/apexdoc.ts)_
108
108
 
109
109
  ## `sfdx tffa:lint [-s <directory>] [-m <integer>] [-r <filepath>] [-e] [-f] [-j] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`
110
110
 
@@ -134,7 +134,7 @@ EXAMPLES
134
134
  $sfdx tffa:lint
135
135
  ```
136
136
 
137
- _See code: [src/commands/tffa/lint.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v14.1.0/src/commands/tffa/lint.ts)_
137
+ _See code: [src/commands/tffa/lint.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v15.0.0-rc.10/src/commands/tffa/lint.ts)_
138
138
 
139
139
  ## `sfdx tffa:meta [-s <directory>] [-d <directory>] [-c <directory>] [-o json|csv|human] [-f] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`
140
140
 
@@ -163,7 +163,7 @@ EXAMPLES
163
163
  scan a sfdx project for metadata : $sfdx tffa:meta
164
164
  ```
165
165
 
166
- _See code: [src/commands/tffa/meta.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v14.1.0/src/commands/tffa/meta.ts)_
166
+ _See code: [src/commands/tffa/meta.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v15.0.0-rc.10/src/commands/tffa/meta.ts)_
167
167
 
168
168
  ## `sfdx tffa:ping [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`
169
169
 
@@ -185,7 +185,7 @@ EXAMPLES
185
185
  $ sfdx tffa:ping
186
186
  ```
187
187
 
188
- _See code: [src/commands/tffa/ping.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v14.1.0/src/commands/tffa/ping.ts)_
188
+ _See code: [src/commands/tffa/ping.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v15.0.0-rc.10/src/commands/tffa/ping.ts)_
189
189
 
190
190
  ## `sfdx tffa:source:apiset [-h <help>] [-s <directory>] [-a <integer>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]`
191
191
 
@@ -213,7 +213,7 @@ EXAMPLES
213
213
  $ sfdx tffa:source:apiset
214
214
  ```
215
215
 
216
- _See code: [src/commands/tffa/source/apiset.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v14.1.0/src/commands/tffa/source/apiset.ts)_
216
+ _See code: [src/commands/tffa/source/apiset.ts](https://github.com/terafina/tffa-sfdx-plugin/blob/v15.0.0-rc.10/src/commands/tffa/source/apiset.ts)_
217
217
 
218
218
  ## `sfdx version`
219
219
 
@@ -233,5 +233,5 @@ FLAG DESCRIPTIONS
233
233
  Additionally shows the architecture, node version, operating system, and versions of plugins that the CLI is using.
234
234
  ```
235
235
 
236
- _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v1.1.1/src/commands/version.ts)_
236
+ _See code: [@oclif/plugin-version](https://github.com/oclif/plugin-version/blob/v1.1.2/src/commands/version.ts)_
237
237
  <!-- commandsstop -->
@@ -121,9 +121,10 @@
121
121
  language="apex"
122
122
  message="All Custom controllers should have validateSession"
123
123
  class="net.sourceforge.pmd.lang.apex.rule.ApexXPathRule"
124
+ externalInfoUrl="https://developer.terafinainc.net/development-guidelines/security-guidelines#terafina-application-security"
124
125
  >
125
126
  <description>All Custom controllers should have validateSession();</description>
126
- <priority>3</priority>
127
+ <priority>1</priority>
127
128
  <properties>
128
129
  <property name="xpath">
129
130
  <value>
@@ -146,9 +147,10 @@
146
147
  language="apex"
147
148
  message="All Custom controllers should have validateRecordAccess"
148
149
  class="net.sourceforge.pmd.lang.apex.rule.ApexXPathRule"
150
+ externalInfoUrl="https://developer.terafinainc.net/development-guidelines/security-guidelines#terafina-application-security"
149
151
  >
150
152
  <description>All Custom controllers should have validateRecordAccess();</description>
151
- <priority>3</priority>
153
+ <priority>1</priority>
152
154
  <properties>
153
155
  <property name="xpath">
154
156
  <value>
@@ -166,5 +168,59 @@
166
168
  </property>
167
169
  </properties>
168
170
  </rule>
171
+ <rule
172
+ name="InteractionInControllerRemoteMethods"
173
+ language="apex"
174
+ message="All Custom controllers should have tffa.Interaction.begin and tffa.Interaction.close"
175
+ class="net.sourceforge.pmd.lang.apex.rule.ApexXPathRule"
176
+ externalInfoUrl="https://developer.terafinainc.net/development-guidelines/security-guidelines#terafina-application-security"
177
+ >
178
+ <description>All Custom controllers should have tffa.Interaction.begin and tffa.Interaction.close</description>
179
+ <priority>1</priority>
180
+ <properties>
181
+ <property name="xpath">
182
+ <value>
183
+ <![CDATA[
184
+ //UserClass[(ends-with(@Image, 'Controller')) and (@SuperClassName ='tffa.AbstractController')]
185
+ //Method[
186
+ ./ModifierNode/Annotation[@Image = 'RemoteAction']
187
+ and
188
+ (
189
+ not(.//MethodCallExpression[@FullMethodName='tffa.Interaction.begin'])
190
+ or
191
+ not(.//MethodCallExpression[@FullMethodName='tffa.Interaction.close'])
192
+ )
193
+ ]
194
+ ]]>
195
+ </value>
196
+ </property>
197
+ </properties>
198
+ </rule>
199
+ <rule
200
+ name="CtxParameterInControllerRemoteMethods"
201
+ language="apex"
202
+ message="All Custom controllers should have tffa.Context ctx as first parameter"
203
+ class="net.sourceforge.pmd.lang.apex.rule.ApexXPathRule"
204
+ externalInfoUrl="https://developer.terafinainc.net/development-guidelines/security-guidelines#terafina-application-security"
205
+ >
206
+ <description>All Custom controllers should have tffa.Context ctx as first parameter</description>
207
+ <priority>1</priority>
208
+ <properties>
209
+ <property name="xpath">
210
+ <value>
211
+ <![CDATA[
212
+ //UserClass[(ends-with(@Image, 'Controller')) and (@SuperClassName ='tffa.AbstractController')]
213
+ //Method[
214
+ ./ModifierNode/Annotation[@Image = 'RemoteAction']
215
+ and
216
+ (
217
+ not(.//Parameter[1][@Type='tffa.Context'])
218
+ )
219
+ ]
220
+ ]]>
221
+ </value>
222
+ </property>
223
+ </properties>
224
+ </rule>
169
225
  <!--END CUSTOM RULES -->
170
226
  </ruleset>
@@ -11,6 +11,8 @@ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-fil
11
11
  const metadata_scan_1 = tslib_1.__importDefault(require("../../services/lint/metadata-scan"));
12
12
  const apex_pmd_1 = tslib_1.__importDefault(require("../../services/lint/apex-pmd"));
13
13
  const constants_1 = require("../../utils/constants");
14
+ const eslint_scan_1 = tslib_1.__importDefault(require("../../services/lint/eslint-scan"));
15
+ const stylelint_scan_1 = tslib_1.__importDefault(require("../../services/lint/stylelint-scan"));
14
16
  core_1.Messages.importMessagesDirectory(__dirname);
15
17
  const messages = core_1.Messages.loadMessages('@terafina/tffa-sfdx-plugin', 'lint');
16
18
  class Lint extends command_1.SfdxCommand {
@@ -23,14 +25,19 @@ class Lint extends command_1.SfdxCommand {
23
25
  await new apex_pmd_1.default().eject(this.flags.sourcefolder);
24
26
  return;
25
27
  }
26
- let violations = [];
27
- await ignored_files_1.default.init(this.flags.sourcefolder);
28
- violations = await new apex_class_scan_1.default().scan(this.flags.sourcefolder);
28
+ const violations = [];
29
29
  let mViolations = [];
30
+ await ignored_files_1.default.init(this.flags.sourcefolder);
31
+ mViolations = await new apex_class_scan_1.default().scan(this.flags.sourcefolder);
32
+ violations.push(...mViolations);
30
33
  mViolations = await new metadata_scan_1.default(namespace).scan(this.flags.sourcefolder, this.flags.minapi);
31
34
  violations.push(...mViolations);
32
35
  mViolations = await new apex_pmd_1.default().scan(this.flags.sourcefolder, this.flags.rulesetpath);
33
36
  violations.push(...mViolations);
37
+ mViolations = await new eslint_scan_1.default().scan(this.flags.sourcefolder);
38
+ violations.push(...mViolations);
39
+ mViolations = await new stylelint_scan_1.default().scan(this.flags.sourcefolder);
40
+ violations.push(...mViolations);
34
41
  this.printViolations(this.flags.json, violations, this.flags.level);
35
42
  }
36
43
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../src/commands/tffa/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../src/commands/tffa/lint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Logger } from '@salesforce/core';
2
+ /**
3
+ * Linter executes the eslint command
4
+ */
5
+ export default class EslintScan {
6
+ ignoreFiles: any[];
7
+ logger: Logger;
8
+ paths: string[];
9
+ eject(sourceFolder: string): Promise<unknown[]>;
10
+ scan(sourceFolder: string): Promise<any[]>;
11
+ private executeCmd;
12
+ private parseProblems;
13
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * Copyright (c) NCR Terafina
6
+ **/
7
+ const ChildProcess = tslib_1.__importStar(require("child_process"));
8
+ const path = tslib_1.__importStar(require("path"));
9
+ const core_1 = require("@salesforce/core");
10
+ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
11
+ /**
12
+ * Linter executes the eslint command
13
+ */
14
+ class EslintScan {
15
+ constructor() {
16
+ this.ignoreFiles = [];
17
+ this.paths = ['"ui/**/*.ts"', '"ui/**/*.html"', '"app/main/default/lwc"'];
18
+ }
19
+ async eject(sourceFolder) {
20
+ this.logger.warn(sourceFolder);
21
+ return;
22
+ }
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ async scan(sourceFolder) {
25
+ this.logger = await core_1.Logger.root();
26
+ this.ignoreFiles.push(...ignored_files_1.default.files);
27
+ this.logger.debug(this.ignoreFiles);
28
+ try {
29
+ const data = await this.executeCmd(sourceFolder);
30
+ const violations = this.parseProblems(data, sourceFolder);
31
+ return violations;
32
+ }
33
+ catch (err) {
34
+ console.error(err);
35
+ return [];
36
+ }
37
+ }
38
+ async executeCmd(sourceFolder) {
39
+ const commandBufferSize = 64;
40
+ const eslintBinPath = path.join('node_modules', '.bin', 'eslint');
41
+ const rulesetsArg = this.paths.join(' ');
42
+ const cmd = `"${eslintBinPath}" ${rulesetsArg} --no-error-on-unmatched-pattern -f json`;
43
+ this.logger.info('eslint Command: ' + cmd);
44
+ const eslintCmd = ChildProcess.exec(cmd, {
45
+ cwd: sourceFolder,
46
+ maxBuffer: Math.max(commandBufferSize, 1) * 1024 * 1024
47
+ });
48
+ let stdout = '';
49
+ let stderr = '';
50
+ const eslintPromise = new Promise((resolve, reject) => {
51
+ eslintCmd.addListener('error', e => {
52
+ this.logger.error('error:' + e);
53
+ reject(e);
54
+ });
55
+ eslintCmd.addListener('exit', e => {
56
+ if (e !== 0 && e !== 4) {
57
+ this.logger.error(`Failed Exit Code: ${e}` + stderr);
58
+ reject(stderr);
59
+ }
60
+ else {
61
+ resolve(stdout);
62
+ }
63
+ });
64
+ eslintCmd.stdout.on('data', (m) => {
65
+ this.logger.info('stdout:' + m);
66
+ stdout += m;
67
+ });
68
+ eslintCmd.stderr.on('data', (m) => {
69
+ this.logger.error('stderr:' + m);
70
+ stderr += m;
71
+ });
72
+ });
73
+ return eslintPromise;
74
+ }
75
+ parseProblems(json, sourceFolder) {
76
+ let violations = [];
77
+ this.logger.debug(json);
78
+ if (!json) {
79
+ return violations;
80
+ }
81
+ const p = JSON.parse(json);
82
+ if (!p.length) {
83
+ return violations;
84
+ }
85
+ const violationMap = new Map();
86
+ for (const f of p) {
87
+ const file = f.filePath;
88
+ const filename = path.basename(file);
89
+ const fileRelPath = path.relative(sourceFolder, file);
90
+ if (this.ignoreFiles.indexOf(filename) >= 0 || this.ignoreFiles.indexOf(file) >= 0 || this.ignoreFiles.indexOf(fileRelPath) >= 0) {
91
+ this.logger.warn('Ignore file ' + filename);
92
+ continue;
93
+ }
94
+ if (f.messages.length > 0) {
95
+ for (const v of f.messages) {
96
+ const key = v.ruleset + '-' + v.message;
97
+ let o = violationMap.get(key);
98
+ if (!o) {
99
+ o = {
100
+ label: v.ruleId,
101
+ message: v.message,
102
+ category: 'ESLINT',
103
+ level: v.severity > 1 ? 'FATAL' : 'WARN',
104
+ exceptions: [fileRelPath + '#' + v.line]
105
+ };
106
+ }
107
+ else {
108
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
109
+ }
110
+ violationMap.set(key, o);
111
+ }
112
+ }
113
+ if (f.suppressedMessages.length > 0) {
114
+ for (const v of f.suppressedMessages) {
115
+ const key = 'suppressed' + '-' + v.ruleset + '-' + v.message;
116
+ let o = violationMap.get(key);
117
+ if (!o) {
118
+ o = {
119
+ label: '[SUPPRESSED] ' + v.ruleId,
120
+ message: 'Do Not Supress ' + v.message + ' Please fix it.',
121
+ category: 'ESLINT',
122
+ level: 'WARN',
123
+ exceptions: [fileRelPath + '#' + v.line]
124
+ };
125
+ }
126
+ else {
127
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
128
+ }
129
+ violationMap.set(key, o);
130
+ }
131
+ }
132
+ }
133
+ violations = Array.from(violationMap.values());
134
+ return violations;
135
+ }
136
+ }
137
+ exports.default = EslintScan;
138
+ //# sourceMappingURL=eslint-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-scan.js","sourceRoot":"","sources":["../../../src/services/lint/eslint-scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Logger } from '@salesforce/core';
2
+ /**
3
+ * Linter executes the stylelint command
4
+ */
5
+ export default class StylelintScan {
6
+ ignoreFiles: any[];
7
+ logger: Logger;
8
+ paths: string[];
9
+ eject(sourceFolder: string): Promise<unknown[]>;
10
+ scan(sourceFolder: string): Promise<any[]>;
11
+ private executeCmd;
12
+ private parseProblems;
13
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * Copyright (c) NCR Terafina
6
+ **/
7
+ const ChildProcess = tslib_1.__importStar(require("child_process"));
8
+ const path = tslib_1.__importStar(require("path"));
9
+ const core_1 = require("@salesforce/core");
10
+ const ignored_files_1 = tslib_1.__importDefault(require("../../utils/ignored-files"));
11
+ /**
12
+ * Linter executes the stylelint command
13
+ */
14
+ class StylelintScan {
15
+ constructor() {
16
+ this.ignoreFiles = [];
17
+ this.paths = ['"ui/**/*.scss"'];
18
+ }
19
+ async eject(sourceFolder) {
20
+ this.logger.warn(sourceFolder);
21
+ return;
22
+ }
23
+ async scan(sourceFolder) {
24
+ this.logger = await core_1.Logger.root();
25
+ this.ignoreFiles.push(...ignored_files_1.default.files);
26
+ this.logger.debug(this.ignoreFiles);
27
+ try {
28
+ const data = await this.executeCmd(sourceFolder);
29
+ const violations = this.parseProblems(data, sourceFolder);
30
+ return violations;
31
+ }
32
+ catch (err) {
33
+ console.error(err);
34
+ return [];
35
+ }
36
+ }
37
+ async executeCmd(sourceFolder) {
38
+ const commandBufferSize = 64;
39
+ const stylelintBinPath = path.join('node_modules', '.bin', 'stylelint');
40
+ const configPath = path.join('scripts', 'stylelint', '.stylelintrc.json');
41
+ const rulesetsArg = this.paths.join(' ');
42
+ const cmd = `"${stylelintBinPath}" ${rulesetsArg} --config ${configPath} -f json`;
43
+ this.logger.info('stylelint Command: ' + cmd);
44
+ const stylelintCmd = ChildProcess.exec(cmd, {
45
+ cwd: sourceFolder,
46
+ maxBuffer: Math.max(commandBufferSize, 1) * 1024 * 1024
47
+ });
48
+ let stdout = '';
49
+ let stderr = '';
50
+ const stylelintPromise = new Promise((resolve, reject) => {
51
+ stylelintCmd.addListener('error', e => {
52
+ this.logger.error('error:' + e);
53
+ reject(e);
54
+ });
55
+ stylelintCmd.addListener('exit', e => {
56
+ if (e !== 0 && e !== 4 && e !== 2) {
57
+ this.logger.error(`Failed Exit Code: ${e}` + stderr);
58
+ reject(stderr);
59
+ }
60
+ else {
61
+ resolve(stdout);
62
+ }
63
+ });
64
+ stylelintCmd.stdout.on('data', (m) => {
65
+ this.logger.info('stdout:' + m);
66
+ stdout += m;
67
+ });
68
+ stylelintCmd.stderr.on('data', (m) => {
69
+ this.logger.error('stderr:' + m);
70
+ stderr += m;
71
+ });
72
+ });
73
+ return stylelintPromise;
74
+ }
75
+ parseProblems(json, sourceFolder) {
76
+ let violations = [];
77
+ this.logger.debug(json);
78
+ if (!json) {
79
+ return violations;
80
+ }
81
+ const p = JSON.parse(json);
82
+ if (!p.length) {
83
+ return violations;
84
+ }
85
+ const violationMap = new Map();
86
+ for (const f of p) {
87
+ const file = f.source;
88
+ const filename = path.basename(file);
89
+ const fileRelPath = path.relative(sourceFolder, file);
90
+ if (this.ignoreFiles.indexOf(filename) >= 0 || this.ignoreFiles.indexOf(file) >= 0 || this.ignoreFiles.indexOf(fileRelPath) >= 0) {
91
+ this.logger.warn('Ignore file ' + filename);
92
+ continue;
93
+ }
94
+ if (f.warnings.length > 0) {
95
+ for (const v of f.warnings) {
96
+ const key = v.ruleset + '-' + v.text;
97
+ let o = violationMap.get(key);
98
+ if (!o) {
99
+ o = {
100
+ label: v.rule,
101
+ message: v.text,
102
+ category: 'STYLELINT',
103
+ level: v.severity === 'error' ? 'FATAL' : 'WARN',
104
+ exceptions: [fileRelPath + '#' + v.line]
105
+ };
106
+ }
107
+ else {
108
+ o.exceptions = [fileRelPath + '#' + v.line, ...o.exceptions];
109
+ }
110
+ violationMap.set(key, o);
111
+ }
112
+ }
113
+ }
114
+ violations = Array.from(violationMap.values());
115
+ return violations;
116
+ }
117
+ }
118
+ exports.default = StylelintScan;
119
+ //# sourceMappingURL=stylelint-scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stylelint-scan.js","sourceRoot":"","sources":["../../../src/services/lint/stylelint-scan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":"14.1.0","commands":{"tffa:apexdoc":{"id":"tffa:apexdoc","description":"Generate Apex API Documentation","strict":true,"usage":"<%= command.id %> [-s <directory>] [-d <directory>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["Generate Apex API Documentation :\t$sfdx tffa:apexdoc "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"destfolder":{"name":"destfolder","type":"option","char":"d","description":"directory to generate the api docs","multiple":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"destfolder":{"kind":"directory","char":"d","description":"directory to generate the api docs","input":[],"multiple":false,"type":"option"}}},"tffa:lint":{"id":"tffa:lint","description":"scan a sfdx project and provide a violations report based on defined standards","strict":true,"usage":"<%= command.id %> [-s <directory>] [-m <integer>] [-r <filepath>] [-e] [-f] [-j] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$sfdx tffa:lint"],"flags":{"json":{"name":"json","type":"boolean","char":"j","description":"generate json output","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"minapi":{"name":"minapi","type":"option","char":"m","description":"minimum api version to use during quality checks","multiple":false,"default":55},"rulesetpath":{"name":"rulesetpath","type":"option","char":"r","description":"path to pmd ruleset","multiple":false},"eject":{"name":"eject","type":"boolean","char":"e","description":"update local pmd ruleset","allowNo":false},"level":{"name":"level","type":"boolean","char":"f","description":"emit fatal violations only","allowNo":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"minapi":{"kind":"integer","char":"m","description":"minimum api version to use during quality checks","default":55,"input":[],"multiple":false,"type":"option"},"json":{"kind":"boolean","char":"j","description":"generate json output","allowNo":false,"type":"boolean"},"rulesetpath":{"kind":"filepath","char":"r","description":"path to pmd ruleset","input":[],"multiple":false,"type":"option"},"eject":{"kind":"boolean","char":"e","description":"update local pmd ruleset","allowNo":false,"type":"boolean"},"level":{"kind":"boolean","char":"f","description":"emit fatal violations only","allowNo":false,"type":"boolean"}}},"tffa:meta":{"id":"tffa:meta","description":"scan a sfdx project for metadata","strict":true,"usage":"<%= command.id %> [-s <directory>] [-d <directory>] [-c <directory>] [-o json|csv|human] [-f] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["scan a sfdx project for metadata :\t$sfdx tffa:meta"],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"destpath":{"name":"destpath","type":"option","char":"d","description":"full path output file","multiple":false,"default":"."},"clientname":{"name":"clientname","type":"option","char":"c","description":"name of the client","multiple":false,"default":"."},"output":{"name":"output","type":"option","char":"o","description":"output format json csv human","helpValue":"(json|csv|human)","multiple":false,"options":["json","csv","human"]},"fields":{"name":"fields","type":"boolean","char":"f","description":"generate field output","allowNo":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"destpath":{"kind":"directory","char":"d","description":"full path output file","default":".","input":[],"multiple":false,"type":"option"},"clientname":{"kind":"directory","char":"c","description":"name of the client","default":".","input":[],"multiple":false,"type":"option"},"output":{"kind":"enum","helpValue":"(json|csv|human)","char":"o","options":["json","csv","human"],"description":"output format json csv human","input":[],"multiple":false,"type":"option"},"fields":{"kind":"boolean","char":"f","description":"generate field output","allowNo":false,"type":"boolean"}}},"tffa:ping":{"id":"tffa:ping","description":"ping and test the plugin","strict":true,"usage":"<%= command.id %> [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$ sfdx tffa:ping "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"}},"args":[{"name":"file"}],"flagsConfig":{}},"tffa:source:apiset":{"id":"tffa:source:apiset","description":"Upgrades the current project and all metadata to the latest API version","strict":true,"usage":"<%= command.id %> [-h <help>] [-s <directory>] [-a <integer>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$ sfdx tffa:source:apiset "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"api":{"name":"api","type":"option","char":"a","description":"specify the API version ","multiple":false,"default":55}},"args":[],"flagsConfig":{"help":{"kind":"help","description":"Show CLI help.","char":"h","allowNo":false,"type":"boolean"},"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"api":{"kind":"integer","char":"a","description":"specify the API version ","default":55,"input":[],"multiple":false,"type":"option"}}}}}
1
+ {"version":"15.0.0-rc.10","commands":{"tffa:apexdoc":{"id":"tffa:apexdoc","description":"Generate Apex API Documentation","strict":true,"usage":"<%= command.id %> [-s <directory>] [-d <directory>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["Generate Apex API Documentation :\t$sfdx tffa:apexdoc "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"destfolder":{"name":"destfolder","type":"option","char":"d","description":"directory to generate the api docs","multiple":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"destfolder":{"kind":"directory","char":"d","description":"directory to generate the api docs","input":[],"multiple":false,"type":"option"}}},"tffa:lint":{"id":"tffa:lint","description":"scan a sfdx project and provide a violations report based on defined standards","strict":true,"usage":"<%= command.id %> [-s <directory>] [-m <integer>] [-r <filepath>] [-e] [-f] [-j] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$sfdx tffa:lint"],"flags":{"json":{"name":"json","type":"boolean","char":"j","description":"generate json output","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"minapi":{"name":"minapi","type":"option","char":"m","description":"minimum api version to use during quality checks","multiple":false,"default":55},"rulesetpath":{"name":"rulesetpath","type":"option","char":"r","description":"path to pmd ruleset","multiple":false},"eject":{"name":"eject","type":"boolean","char":"e","description":"update local pmd ruleset","allowNo":false},"level":{"name":"level","type":"boolean","char":"f","description":"emit fatal violations only","allowNo":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"minapi":{"kind":"integer","char":"m","description":"minimum api version to use during quality checks","default":55,"input":[],"multiple":false,"type":"option"},"json":{"kind":"boolean","char":"j","description":"generate json output","allowNo":false,"type":"boolean"},"rulesetpath":{"kind":"filepath","char":"r","description":"path to pmd ruleset","input":[],"multiple":false,"type":"option"},"eject":{"kind":"boolean","char":"e","description":"update local pmd ruleset","allowNo":false,"type":"boolean"},"level":{"kind":"boolean","char":"f","description":"emit fatal violations only","allowNo":false,"type":"boolean"}}},"tffa:meta":{"id":"tffa:meta","description":"scan a sfdx project for metadata","strict":true,"usage":"<%= command.id %> [-s <directory>] [-d <directory>] [-c <directory>] [-o json|csv|human] [-f] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["scan a sfdx project for metadata :\t$sfdx tffa:meta"],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"destpath":{"name":"destpath","type":"option","char":"d","description":"full path output file","multiple":false,"default":"."},"clientname":{"name":"clientname","type":"option","char":"c","description":"name of the client","multiple":false,"default":"."},"output":{"name":"output","type":"option","char":"o","description":"output format json csv human","helpValue":"(json|csv|human)","multiple":false,"options":["json","csv","human"]},"fields":{"name":"fields","type":"boolean","char":"f","description":"generate field output","allowNo":false}},"args":[],"flagsConfig":{"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"destpath":{"kind":"directory","char":"d","description":"full path output file","default":".","input":[],"multiple":false,"type":"option"},"clientname":{"kind":"directory","char":"c","description":"name of the client","default":".","input":[],"multiple":false,"type":"option"},"output":{"kind":"enum","helpValue":"(json|csv|human)","char":"o","options":["json","csv","human"],"description":"output format json csv human","input":[],"multiple":false,"type":"option"},"fields":{"kind":"boolean","char":"f","description":"generate field output","allowNo":false,"type":"boolean"}}},"tffa:ping":{"id":"tffa:ping","description":"ping and test the plugin","strict":true,"usage":"<%= command.id %> [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$ sfdx tffa:ping "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"}},"args":[{"name":"file"}],"flagsConfig":{}},"tffa:source:apiset":{"id":"tffa:source:apiset","description":"Upgrades the current project and all metadata to the latest API version","strict":true,"usage":"<%= command.id %> [-h <help>] [-s <directory>] [-a <integer>] [--json] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]","pluginName":"@terafina/tffa-sfdx-plugin","pluginAlias":"@terafina/tffa-sfdx-plugin","pluginType":"core","aliases":[],"examples":["$ sfdx tffa:source:apiset "],"flags":{"json":{"name":"json","type":"boolean","description":"format output as json","allowNo":false},"loglevel":{"name":"loglevel","type":"option","description":"logging level for this command invocation","required":false,"helpValue":"(trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL)","multiple":false,"options":["trace","debug","info","warn","error","fatal","TRACE","DEBUG","INFO","WARN","ERROR","FATAL"],"default":"warn"},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"sourcefolder":{"name":"sourcefolder","type":"option","char":"s","description":"directory containing sfdx project","multiple":false,"default":"."},"api":{"name":"api","type":"option","char":"a","description":"specify the API version ","multiple":false,"default":55}},"args":[],"flagsConfig":{"help":{"kind":"help","description":"Show CLI help.","char":"h","allowNo":false,"type":"boolean"},"sourcefolder":{"kind":"directory","char":"s","description":"directory containing sfdx project","default":".","input":[],"multiple":false,"type":"option"},"api":{"kind":"integer","char":"a","description":"specify the API version ","default":55,"input":[],"multiple":false,"type":"option"}}}}}