sfdx-hardis 5.10.2-beta202412182204.0 → 5.10.2-beta202412221111.0
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/CHANGELOG.md +21 -11
- package/defaults/puppeteer-config.json +6 -0
- package/lib/commands/hardis/doc/flow2markdown.d.ts +13 -0
- package/lib/commands/hardis/doc/flow2markdown.js +78 -0
- package/lib/commands/hardis/doc/flow2markdown.js.map +1 -0
- package/lib/commands/hardis/doc/packagexml2markdown.js +0 -2
- package/lib/commands/hardis/doc/packagexml2markdown.js.map +1 -1
- package/lib/commands/hardis/doc/project2markdown.d.ts +3 -0
- package/lib/commands/hardis/doc/project2markdown.js +76 -5
- package/lib/commands/hardis/doc/project2markdown.js.map +1 -1
- package/lib/commands/hardis/project/deploy/quick.d.ts +1 -0
- package/lib/commands/hardis/project/deploy/quick.js +10 -1
- package/lib/commands/hardis/project/deploy/quick.js.map +1 -1
- package/lib/commands/hardis/project/deploy/smart.d.ts +0 -2
- package/lib/commands/hardis/project/deploy/smart.js +6 -103
- package/lib/commands/hardis/project/deploy/smart.js.map +1 -1
- package/lib/commands/hardis/project/deploy/start.d.ts +1 -0
- package/lib/commands/hardis/project/deploy/start.js +18 -1
- package/lib/commands/hardis/project/deploy/start.js.map +1 -1
- package/lib/commands/hardis/project/deploy/validate.d.ts +1 -0
- package/lib/commands/hardis/project/deploy/validate.js +8 -0
- package/lib/commands/hardis/project/deploy/validate.js.map +1 -1
- package/lib/commands/hardis/project/generate/flow-git-diff.d.ts +13 -0
- package/lib/commands/hardis/project/generate/flow-git-diff.js +95 -0
- package/lib/commands/hardis/project/generate/flow-git-diff.js.map +1 -0
- package/lib/common/gitProvider/index.js +14 -0
- package/lib/common/gitProvider/index.js.map +1 -1
- package/lib/common/gitProvider/utilsMarkdown.d.ts +1 -0
- package/lib/common/gitProvider/utilsMarkdown.js +35 -0
- package/lib/common/gitProvider/utilsMarkdown.js.map +1 -1
- package/lib/common/metadata-utils/index.d.ts +1 -0
- package/lib/common/metadata-utils/index.js +12 -1
- package/lib/common/metadata-utils/index.js.map +1 -1
- package/lib/common/utils/deployUtils.js +3 -3
- package/lib/common/utils/deployUtils.js.map +1 -1
- package/lib/common/utils/flowVisualiser/flowParser.d.ts +20 -0
- package/lib/common/utils/flowVisualiser/flowParser.js +425 -0
- package/lib/common/utils/flowVisualiser/flowParser.js.map +1 -0
- package/lib/common/utils/flowVisualiser/renderConfig.d.ts +122 -0
- package/lib/common/utils/flowVisualiser/renderConfig.js +123 -0
- package/lib/common/utils/flowVisualiser/renderConfig.js.map +1 -0
- package/lib/common/utils/gitUtils.d.ts +4 -0
- package/lib/common/utils/gitUtils.js +132 -0
- package/lib/common/utils/gitUtils.js.map +1 -1
- package/lib/common/utils/mermaidUtils.d.ts +9 -0
- package/lib/common/utils/mermaidUtils.js +331 -0
- package/lib/common/utils/mermaidUtils.js.map +1 -0
- package/lib/common/utils/projectUtils.d.ts +1 -0
- package/lib/common/utils/projectUtils.js +12 -0
- package/lib/common/utils/projectUtils.js.map +1 -1
- package/lib/common/utils/wrapUtils.js +1 -0
- package/lib/common/utils/wrapUtils.js.map +1 -1
- package/lib/hooks/postrun/notify.js +2 -5
- package/lib/hooks/postrun/notify.js.map +1 -1
- package/oclif.lock +306 -321
- package/oclif.manifest.json +532 -318
- package/package.json +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -4,17 +4,27 @@
|
|
|
4
4
|
|
|
5
5
|
Note: Can be used with `sfdx plugins:install sfdx-hardis@beta` and docker image `hardisgroupcom/sfdx-hardis@beta`
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- [hardis:
|
|
9
|
-
- [hardis:
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Display
|
|
17
|
-
-
|
|
7
|
+
- Visual flow management, using MermaidJs
|
|
8
|
+
- [hardis:doc:project2markdown](https://sfdx-hardis.cloudity.com/hardis/doc/project2markdown/): Add a markdown file for each Flow
|
|
9
|
+
- [hardis:doc:flow2markdown](https://sfdx-hardis.cloudity.com/hardis/doc/flow2markdown/): Generate the markdown documentation of a single flow (available from VsCode extension)
|
|
10
|
+
- [hardis:project:generate:flow-git-diff](https://sfdx-hardis.cloudity.com/hardis/project/generate/flow-git-diff/): Generate the visual git diff for a single flow (available from VsCode extension)
|
|
11
|
+
- [hardis:project:deploy:smart](https://sfdx-hardis.cloudity.com/hardis/project/deploy/smart/): Add visual git diff for flows updated by a Pull Request
|
|
12
|
+
- Flow Visual Git diff also added to [standard SF Cli commands wrappers](https://sfdx-hardis.cloudity.com/salesforce-deployment-assistant-setup/#using-custom-cicd-pipeline)
|
|
13
|
+
|
|
14
|
+
- Command updates
|
|
15
|
+
- [hardis:project:deploy:smart](https://sfdx-hardis.cloudity.com/hardis/project/deploy/smart/): Refactor deployment errors parsing: use JSON output instead of text output
|
|
16
|
+
- [hardis:org:test:apex](https://sfdx-hardis.cloudity.com/hardis/org/test/apex/): Display the number of failed tests in messages and notifications
|
|
17
|
+
- [hardis:org:monitor:backup](https://sfdx-hardis.cloudity.com/hardis/org/monitor/backup/): New option **--exclude-namespaces** that can be used with **--full** option
|
|
18
|
+
|
|
19
|
+
- Core enhancements & fixes
|
|
20
|
+
- Obfuscate some data from text log files
|
|
21
|
+
- Kill some exit handlers in case they are making the app crash after a throw SfError
|
|
22
|
+
- Trigger notifications during the command execution, not after
|
|
23
|
+
- Do not display warning in case no notification has been configured in case we are running locally
|
|
24
|
+
- Fix Individual deployment tips markdown docs by adding quotes to YML properties
|
|
25
|
+
- Fix init sfdx-hardis project commands and docs
|
|
26
|
+
- Display warning message in case package.xml has wrong format
|
|
27
|
+
- Allow to override package-no-overwrite from a branch .sfdx-hardis.yml config file
|
|
18
28
|
|
|
19
29
|
## [5.10.1] 2024-12-12
|
|
20
30
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class Flow2Markdown extends SfCommand<any> {
|
|
4
|
+
static title: string;
|
|
5
|
+
static description: string;
|
|
6
|
+
static examples: string[];
|
|
7
|
+
static flags: any;
|
|
8
|
+
static requiresProject: boolean;
|
|
9
|
+
protected inputFile: any;
|
|
10
|
+
protected outputFile: any;
|
|
11
|
+
protected debugMode: boolean;
|
|
12
|
+
run(): Promise<AnyJson>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* jscpd:ignore-start */
|
|
2
|
+
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
|
+
import c from "chalk";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import fs from "fs-extra";
|
|
6
|
+
import { Messages } from '@salesforce/core';
|
|
7
|
+
import { WebSocketClient } from '../../../common/websocketClient.js';
|
|
8
|
+
import { isCI, uxLog } from '../../../common/utils/index.js';
|
|
9
|
+
import { MetadataUtils } from '../../../common/metadata-utils/index.js';
|
|
10
|
+
import { generateFlowMarkdownFile, generateMarkdownFileWithMermaid } from '../../../common/utils/mermaidUtils.js';
|
|
11
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
12
|
+
const messages = Messages.loadMessages('sfdx-hardis', 'org');
|
|
13
|
+
export default class Flow2Markdown extends SfCommand {
|
|
14
|
+
static title = 'Flow to Markdown';
|
|
15
|
+
static description = `Generates a markdown documentation from a Flow file`;
|
|
16
|
+
static examples = [
|
|
17
|
+
'$ sf hardis:doc:flow2markdown',
|
|
18
|
+
'$ sf hardis:doc:flow2markdown --inputfile force-app/main/default/flows/MyFlow.flow-meta.xml'
|
|
19
|
+
];
|
|
20
|
+
static flags = {
|
|
21
|
+
inputfile: Flags.string({
|
|
22
|
+
char: 'x',
|
|
23
|
+
description: 'Path to Flow metadata file. If not specified, the command will prompt the user',
|
|
24
|
+
}),
|
|
25
|
+
outputfile: Flags.string({
|
|
26
|
+
char: 'f',
|
|
27
|
+
description: 'Force the path and name of output markdown file. Must end with .md',
|
|
28
|
+
}),
|
|
29
|
+
debug: Flags.boolean({
|
|
30
|
+
char: 'd',
|
|
31
|
+
default: false,
|
|
32
|
+
description: messages.getMessage('debugMode'),
|
|
33
|
+
}),
|
|
34
|
+
websocket: Flags.string({
|
|
35
|
+
description: messages.getMessage('websocket'),
|
|
36
|
+
}),
|
|
37
|
+
skipauth: Flags.boolean({
|
|
38
|
+
description: 'Skip authentication check when a default username is required',
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
// Set this to true if your command requires a project workspace; 'requiresProject' is false by default
|
|
42
|
+
static requiresProject = false;
|
|
43
|
+
inputFile;
|
|
44
|
+
outputFile;
|
|
45
|
+
debugMode = false;
|
|
46
|
+
/* jscpd:ignore-end */
|
|
47
|
+
async run() {
|
|
48
|
+
const { flags } = await this.parse(Flow2Markdown);
|
|
49
|
+
this.inputFile = flags.inputfile || null;
|
|
50
|
+
this.outputFile = flags.outputfile || null;
|
|
51
|
+
this.debugMode = flags.debug || false;
|
|
52
|
+
if (this.inputFile === null && !isCI) {
|
|
53
|
+
this.inputFile = await MetadataUtils.promptFlow();
|
|
54
|
+
}
|
|
55
|
+
if (!this.outputFile) {
|
|
56
|
+
await fs.ensureDir(path.join("docs", "flows"));
|
|
57
|
+
this.outputFile = path.join("docs", "flows", path.basename(this.inputFile).replace(".flow-meta.xml", ".md"));
|
|
58
|
+
}
|
|
59
|
+
uxLog(this, c.grey(`Generating markdown for Flow ${this.inputFile}...`));
|
|
60
|
+
const flowXml = (await fs.readFile(this.inputFile, "utf8")).toString();
|
|
61
|
+
const genRes = await generateFlowMarkdownFile(this.inputFile, flowXml, this.outputFile);
|
|
62
|
+
if (!genRes) {
|
|
63
|
+
throw new Error("Error generating markdown file");
|
|
64
|
+
}
|
|
65
|
+
if (this.debugMode) {
|
|
66
|
+
await fs.copyFile(this.outputFile, this.outputFile + ".mermaid.md");
|
|
67
|
+
}
|
|
68
|
+
const gen2res = await generateMarkdownFileWithMermaid(this.outputFile);
|
|
69
|
+
if (!gen2res) {
|
|
70
|
+
throw new Error("Error generating mermaid markdown file");
|
|
71
|
+
}
|
|
72
|
+
// Open file in a new VsCode tab if available
|
|
73
|
+
WebSocketClient.requestOpenFile(this.outputFile);
|
|
74
|
+
// Return an object to be displayed with --json
|
|
75
|
+
return { outputFile: this.outputFile };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=flow2markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow2markdown.js","sourceRoot":"","sources":["../../../../src/commands/hardis/doc/flow2markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
|
3
3
|
import { Messages } from '@salesforce/core';
|
|
4
4
|
import { WebSocketClient } from '../../../common/websocketClient.js';
|
|
5
5
|
import { generatePackageXmlMarkdown } from '../../../common/utils/docUtils.js';
|
|
6
|
-
import { killBoringExitHandlers } from '../../../common/utils/index.js';
|
|
7
6
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
8
7
|
const messages = Messages.loadMessages('sfdx-hardis', 'org');
|
|
9
8
|
export default class PackageXml2Markdown extends SfCommand {
|
|
@@ -50,7 +49,6 @@ export default class PackageXml2Markdown extends SfCommand {
|
|
|
50
49
|
// Open file in a new VsCode tab if available
|
|
51
50
|
WebSocketClient.requestOpenFile(this.outputFile);
|
|
52
51
|
// Return an object to be displayed with --json
|
|
53
|
-
killBoringExitHandlers();
|
|
54
52
|
return { outputFile: this.outputFile };
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packagexml2markdown.js","sourceRoot":"","sources":["../../../../src/commands/hardis/doc/packagexml2markdown.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"packagexml2markdown.js","sourceRoot":"","sources":["../../../../src/commands/hardis/doc/packagexml2markdown.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAE/E,QAAQ,CAAC,kCAAkC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,SAAc;IACtD,MAAM,CAAC,KAAK,GAAG,wBAAwB,CAAC;IAExC,MAAM,CAAC,WAAW,GAAG,4DAA4D,CAAC;IAElF,MAAM,CAAC,QAAQ,GAAG;QACvB,qCAAqC;QACrC,0EAA0E;KAC3E,CAAC;IAEK,MAAM,CAAC,KAAK,GAAQ;QACzB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sFAAsF;SACpG,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kEAAkE;SAChF,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;SAC9C,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACtB,WAAW,EAAE,+DAA+D;SAC7E,CAAC;KACH,CAAC;IAEF,uGAAuG;IAChG,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;IAE5B,SAAS,CAAC;IACV,UAAU,CAAC;IACX,SAAS,GAAG,KAAK,CAAC;IAC5B,sBAAsB;IAEf,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC;QAEtC,oCAAoC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpF,6CAA6C;QAC7C,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjD,+CAA+C;QAC/C,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC"}
|
|
@@ -7,12 +7,15 @@ export default class Project2Markdown extends SfCommand<any> {
|
|
|
7
7
|
static flags: any;
|
|
8
8
|
static requiresProject: boolean;
|
|
9
9
|
protected packageXmlCandidates: any[];
|
|
10
|
+
protected outputMarkdownRoot: string;
|
|
10
11
|
protected outputMarkdownIndexFile: string;
|
|
11
12
|
protected mdLines: string[];
|
|
12
13
|
protected sfdxHardisConfig: any;
|
|
13
14
|
protected outputPackageXmlMarkdownFiles: any[];
|
|
14
15
|
protected debugMode: boolean;
|
|
15
16
|
run(): Promise<AnyJson>;
|
|
17
|
+
private generateFlowsDocumentation;
|
|
18
|
+
private buildFlowsTable;
|
|
16
19
|
private writeInstalledPackages;
|
|
17
20
|
private buildSfdxHardisParams;
|
|
18
21
|
private buildMajorBranchesAndOrgs;
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
/* jscpd:ignore-start */
|
|
2
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
|
-
import fs
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
4
|
import c from "chalk";
|
|
5
5
|
import * as path from "path";
|
|
6
6
|
import sortArray from 'sort-array';
|
|
7
7
|
import { Messages } from '@salesforce/core';
|
|
8
8
|
import { WebSocketClient } from '../../../common/websocketClient.js';
|
|
9
9
|
import { generatePackageXmlMarkdown } from '../../../common/utils/docUtils.js';
|
|
10
|
-
import { countPackageXmlItems } from '../../../common/utils/xmlUtils.js';
|
|
10
|
+
import { countPackageXmlItems, parseXmlFile } from '../../../common/utils/xmlUtils.js';
|
|
11
11
|
import { bool2emoji, execSfdxJson, getCurrentGitBranch, getGitRepoName, uxLog } from '../../../common/utils/index.js';
|
|
12
12
|
import { CONSTANTS, getConfig } from '../../../config/index.js';
|
|
13
13
|
import { listMajorOrgs } from '../../../common/utils/orgConfigUtils.js';
|
|
14
14
|
import { glob } from 'glob';
|
|
15
|
+
import { listFlowFiles } from '../../../common/utils/projectUtils.js';
|
|
16
|
+
import { generateFlowMarkdownFile, generateMarkdownFileWithMermaid } from '../../../common/utils/mermaidUtils.js';
|
|
15
17
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
16
18
|
const messages = Messages.loadMessages('sfdx-hardis', 'org');
|
|
17
19
|
export default class Project2Markdown extends SfCommand {
|
|
@@ -25,7 +27,11 @@ export default class Project2Markdown extends SfCommand {
|
|
|
25
27
|
|
|
26
28
|
Can work on any sfdx project, no need for it to be a sfdx-hardis flavored one.
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
Generates markdown files will be written in **docs** folder (except README.md where a link to doc index is added)
|
|
31
|
+
|
|
32
|
+
This command requires @mermaid-js/mermaid-cli to be installed.
|
|
33
|
+
|
|
34
|
+
Run \`npm install @mermaid-js/mermaid-cli --global\`
|
|
29
35
|
|
|
30
36
|

|
|
31
37
|
|
|
@@ -50,7 +56,8 @@ Generated markdown files will be written in **docs** folder (except README.md wh
|
|
|
50
56
|
// Set this to true if your command requires a project workspace; 'requiresProject' is false by default
|
|
51
57
|
static requiresProject = true;
|
|
52
58
|
packageXmlCandidates;
|
|
53
|
-
|
|
59
|
+
outputMarkdownRoot = "docs";
|
|
60
|
+
outputMarkdownIndexFile = path.join(this.outputMarkdownRoot, "index.md");
|
|
54
61
|
mdLines = [];
|
|
55
62
|
sfdxHardisConfig = {};
|
|
56
63
|
outputPackageXmlMarkdownFiles = [];
|
|
@@ -84,6 +91,8 @@ Generated markdown files will be written in **docs** folder (except README.md wh
|
|
|
84
91
|
await this.writePackagesInIndex();
|
|
85
92
|
// List managed packages
|
|
86
93
|
await this.writeInstalledPackages();
|
|
94
|
+
// List flows & generate doc
|
|
95
|
+
await this.generateFlowsDocumentation();
|
|
87
96
|
// Footer
|
|
88
97
|
this.mdLines.push(`_Documentation generated with [sfdx-hardis](${CONSTANTS.DOC_URL_ROOT}) command [\`sf hardis:doc:project2markdown\`](https://sfdx-hardis.cloudity.com/hardis/doc/project2markdown/)_`);
|
|
89
98
|
// Write output index file
|
|
@@ -103,6 +112,68 @@ Generated markdown files will be written in **docs** folder (except README.md wh
|
|
|
103
112
|
WebSocketClient.requestOpenFile(this.outputMarkdownIndexFile);
|
|
104
113
|
return { outputPackageXmlMarkdownFiles: this.outputPackageXmlMarkdownFiles };
|
|
105
114
|
}
|
|
115
|
+
async generateFlowsDocumentation() {
|
|
116
|
+
await fs.ensureDir(path.join(this.outputMarkdownRoot, "flows"));
|
|
117
|
+
const packageDirs = this.project?.getPackageDirectories();
|
|
118
|
+
const flowFiles = await listFlowFiles(packageDirs);
|
|
119
|
+
const flowErrors = [];
|
|
120
|
+
const flowDescriptions = [];
|
|
121
|
+
for (const flowFile of flowFiles) {
|
|
122
|
+
uxLog(this, c.grey(`Generating markdown for Flow ${flowFile}...`));
|
|
123
|
+
const flowXml = (await fs.readFile(flowFile, "utf8")).toString();
|
|
124
|
+
const flowContent = await parseXmlFile(flowFile);
|
|
125
|
+
flowDescriptions.push({
|
|
126
|
+
name: path.basename(flowFile).replace(".flow-meta.xml", ""),
|
|
127
|
+
description: flowContent?.Flow?.description?.[0] || "",
|
|
128
|
+
type: flowContent?.Flow?.processType?.[0] === "Flow" ? "ScreenFlow" : flowContent?.Flow?.start?.[0]?.triggerType?.[0] ?? (flowContent?.Flow?.processType?.[0] || "ERROR (Unknown)"),
|
|
129
|
+
object: flowContent?.Flow?.start?.[0]?.object?.[0] || flowContent?.Flow?.processMetadataValues?.filter(pmv => pmv.name[0] === "ObjectType")?.[0]?.value?.[0]?.stringValue?.[0] || ""
|
|
130
|
+
});
|
|
131
|
+
const outputFlowMdFile = path.join(this.outputMarkdownRoot, "flows", path.basename(flowFile).replace(".flow-meta.xml", ".md"));
|
|
132
|
+
const genRes = await generateFlowMarkdownFile(flowFile, flowXml, outputFlowMdFile);
|
|
133
|
+
if (!genRes) {
|
|
134
|
+
flowErrors.push(flowFile);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (this.debugMode) {
|
|
138
|
+
await fs.copyFile(outputFlowMdFile, outputFlowMdFile + ".mermaid.md");
|
|
139
|
+
}
|
|
140
|
+
const gen2res = await generateMarkdownFileWithMermaid(outputFlowMdFile);
|
|
141
|
+
if (!gen2res) {
|
|
142
|
+
flowErrors.push(flowFile);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
uxLog(this, c.green(`Successfully generated ${flowFiles.length - flowErrors.length} Flows documentation`));
|
|
147
|
+
if (flowErrors.length > 0) {
|
|
148
|
+
uxLog(this, c.yellow(`Error generating documentation for ${flowErrors.length} Flows: ${flowErrors.join(", ")}`));
|
|
149
|
+
}
|
|
150
|
+
// Write table on doc index
|
|
151
|
+
const flowTableLines = await this.buildFlowsTable(flowDescriptions, 'flows/');
|
|
152
|
+
this.mdLines.push(...flowTableLines);
|
|
153
|
+
this.mdLines.push(...["___", ""]);
|
|
154
|
+
// Write index file for flow folder
|
|
155
|
+
await fs.ensureDir(path.join(this.outputMarkdownRoot, "flows"));
|
|
156
|
+
const flowTableLinesForIndex = await this.buildFlowsTable(flowDescriptions, '');
|
|
157
|
+
const flowIndexFile = path.join(this.outputMarkdownRoot, "flows", "index.md");
|
|
158
|
+
await fs.writeFile(flowIndexFile, flowTableLinesForIndex.join("\n") + "\n");
|
|
159
|
+
uxLog(this, c.green(`Successfully generated doc index for Flows at ${flowIndexFile}`));
|
|
160
|
+
}
|
|
161
|
+
async buildFlowsTable(flowDescriptions, prefix) {
|
|
162
|
+
const lines = [];
|
|
163
|
+
lines.push(...[
|
|
164
|
+
"## Flows",
|
|
165
|
+
"",
|
|
166
|
+
"| Object | Name | Type | Description |",
|
|
167
|
+
"| :---- | :-------- | :--: | :---------- | "
|
|
168
|
+
]);
|
|
169
|
+
for (const flow of sortArray(flowDescriptions, { by: ['object', 'name'], order: ['asc', 'asc'] })) {
|
|
170
|
+
lines.push(...[
|
|
171
|
+
`| ${flow.object} | [${flow.name}](${prefix}${flow.name}.md) | ${flow.type} | ${flow.description} |`
|
|
172
|
+
]);
|
|
173
|
+
}
|
|
174
|
+
lines.push("");
|
|
175
|
+
return lines;
|
|
176
|
+
}
|
|
106
177
|
async writeInstalledPackages() {
|
|
107
178
|
// CI/CD context
|
|
108
179
|
const packages = this.sfdxHardisConfig.installedPackages || [];
|
|
@@ -177,7 +248,7 @@ Generated markdown files will be written in **docs** folder (except README.md wh
|
|
|
177
248
|
for (const packageDir of packageDirs || []) {
|
|
178
249
|
// Generate manifest from package folder
|
|
179
250
|
const packageManifestFile = path.join("manifest", packageDir.name + '-package.xml');
|
|
180
|
-
await ensureDir(path.dirname(packageManifestFile));
|
|
251
|
+
await fs.ensureDir(path.dirname(packageManifestFile));
|
|
181
252
|
await execSfdxJson("sf project generate manifest" +
|
|
182
253
|
` --source-dir ${packageDir.path}` +
|
|
183
254
|
` --name ${packageManifestFile}`, this, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project2markdown.js","sourceRoot":"","sources":["../../../../src/commands/hardis/doc/project2markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project2markdown.js","sourceRoot":"","sources":["../../../../src/commands/hardis/doc/project2markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
|
2
2
|
import { AnyJson } from "@salesforce/ts-types";
|
|
3
3
|
export default class ProjectDeployStart extends SfCommand<any> {
|
|
4
4
|
static description: string;
|
|
5
|
+
static aliases: string[];
|
|
5
6
|
static flags: any;
|
|
6
7
|
static requiresProject: boolean;
|
|
7
8
|
run(): Promise<AnyJson>;
|
|
@@ -3,9 +3,12 @@ import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
|
3
3
|
import { wrapSfdxCoreCommand } from "../../../../common/utils/wrapUtils.js";
|
|
4
4
|
import { checkDeploymentOrgCoverage, executePrePostCommands, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
5
5
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
6
|
+
import { handlePostDeploymentNotifications } from '../../../../common/utils/gitUtils.js';
|
|
6
7
|
export default class ProjectDeployStart extends SfCommand {
|
|
7
8
|
static description = `sfdx-hardis wrapper for **sf project deploy quick** that displays tips to solve deployment errors.
|
|
8
9
|
|
|
10
|
+
Note: Use **--json** argument to have better results
|
|
11
|
+
|
|
9
12
|
[](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)
|
|
10
13
|
|
|
11
14
|
[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm#cli_reference_project_deploy_quick_unified)
|
|
@@ -48,6 +51,9 @@ commandsPostDeploy:
|
|
|
48
51
|
runOnlyOnceByOrg: true
|
|
49
52
|
\`\`\`
|
|
50
53
|
`;
|
|
54
|
+
static aliases = [
|
|
55
|
+
"hardis:deploy:quick"
|
|
56
|
+
];
|
|
51
57
|
static flags = {
|
|
52
58
|
"api-version": Flags.integer({
|
|
53
59
|
char: "a",
|
|
@@ -104,7 +110,10 @@ commandsPostDeploy:
|
|
|
104
110
|
}
|
|
105
111
|
// Run post deployment commands if defined
|
|
106
112
|
await executePrePostCommands('commandsPostDeploy', { success: process.exitCode === 0, checkOnly: false, conn: conn });
|
|
107
|
-
|
|
113
|
+
// Post success deployment notifications
|
|
114
|
+
if (process.exitCode === 0) {
|
|
115
|
+
await handlePostDeploymentNotifications(flags, flags["target-org"].getUsername(), false, false, flags["debug"]);
|
|
116
|
+
}
|
|
108
117
|
return result;
|
|
109
118
|
}
|
|
110
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/quick.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACxI,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"quick.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/quick.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,12 +16,10 @@ export default class SmartDeploy extends SfCommand<any> {
|
|
|
16
16
|
protected delta: boolean;
|
|
17
17
|
protected debugMode: boolean;
|
|
18
18
|
run(): Promise<AnyJson>;
|
|
19
|
-
private handleNotifications;
|
|
20
19
|
private handleDeltaDeployment;
|
|
21
20
|
private initPackageXmlAndDestructiveChanges;
|
|
22
21
|
private handlePackages;
|
|
23
22
|
private initTestLevelAndTestClasses;
|
|
24
|
-
private collectNotifAttachments;
|
|
25
23
|
isDeltaAllowed(): Promise<boolean>;
|
|
26
24
|
isNoDelta(latestCommit: any): any;
|
|
27
25
|
isSmartDeploymentTestsAllowed(): Promise<boolean>;
|
|
@@ -22,11 +22,8 @@ import { smartDeploy, removePackageXmlContent } from '../../../../common/utils/d
|
|
|
22
22
|
import { isProductionOrg, promptOrgUsernameDefault } from '../../../../common/utils/orgUtils.js';
|
|
23
23
|
import { getApexTestClasses } from '../../../../common/utils/classUtils.js';
|
|
24
24
|
import { listMajorOrgs, restoreListViewMine } from '../../../../common/utils/orgConfigUtils.js';
|
|
25
|
-
import { NotifProvider, UtilsNotifs } from '../../../../common/notifProvider/index.js';
|
|
26
25
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
27
|
-
import {
|
|
28
|
-
import { getBranchMarkdown, getNotificationButtons, getOrgMarkdown } from '../../../../common/utils/notifUtils.js';
|
|
29
|
-
import { TicketProvider } from '../../../../common/ticketProvider/index.js';
|
|
26
|
+
import { buildCheckDeployCommitSummary, callSfdxGitDelta, getGitDeltaScope, handlePostDeploymentNotifications } from '../../../../common/utils/gitUtils.js';
|
|
30
27
|
import { parsePackageXmlFile } from '../../../../common/utils/xmlUtils.js';
|
|
31
28
|
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
32
29
|
const messages = Messages.loadMessages('sfdx-hardis', 'org');
|
|
@@ -231,6 +228,8 @@ ENV PUPPETEER_EXECUTABLE_PATH="$\\{CHROMIUM_PATH}" // remove \\ before {
|
|
|
231
228
|
If you need to increase the deployment waiting time (sf project deploy start --wait arg), you can define env variable SFDX_DEPLOY_WAIT_MINUTES (default: 120)
|
|
232
229
|
|
|
233
230
|
If you need notifications to be sent using the current Pull Request and not the one just merged ([see use case](https://github.com/hardisgroupcom/sfdx-hardis/issues/637#issuecomment-2230798904)), define env variable SFDX_HARDIS_DEPLOY_BEFORE_MERGE=true
|
|
231
|
+
|
|
232
|
+
If you want to disable the calculation and display of Flow Visual Git Diff in Pull Request comments, define variable **SFDX_DISABLE_FLOW_DIFF=true**
|
|
234
233
|
`;
|
|
235
234
|
static examples = [
|
|
236
235
|
'$ sf hardis:project:deploy:smart',
|
|
@@ -314,15 +313,7 @@ If testlevel=RunRepositoryTests, can contain a regular expression to keep only c
|
|
|
314
313
|
await this.handlePackages(targetUsername);
|
|
315
314
|
// Compute commitsSummary and store it in globalThis.pullRequestData.commitsSummary
|
|
316
315
|
if (this.checkOnly) {
|
|
317
|
-
|
|
318
|
-
const pullRequestInfo = await GitProvider.getPullRequestInfo();
|
|
319
|
-
const commitsSummary = await computeCommitsSummary(true, pullRequestInfo);
|
|
320
|
-
const prDataCommitsSummary = { commitsSummary: commitsSummary.markdown };
|
|
321
|
-
globalThis.pullRequestData = Object.assign(globalThis.pullRequestData || {}, prDataCommitsSummary);
|
|
322
|
-
}
|
|
323
|
-
catch (e3) {
|
|
324
|
-
uxLog(this, c.yellow('Unable to compute git summary:\n' + e3));
|
|
325
|
-
}
|
|
316
|
+
await buildCheckDeployCommitSummary();
|
|
326
317
|
}
|
|
327
318
|
// Get package.xml & destructiveChanges.xml
|
|
328
319
|
this.initPackageXmlAndDestructiveChanges(packageXml, targetUsername, flags);
|
|
@@ -339,60 +330,11 @@ If testlevel=RunRepositoryTests, can contain a regular expression to keep only c
|
|
|
339
330
|
}
|
|
340
331
|
// Send notification of deployment success
|
|
341
332
|
if (deployExecuted) {
|
|
342
|
-
await
|
|
333
|
+
await handlePostDeploymentNotifications(flags, targetUsername, quickDeploy, this.delta, this.debugMode);
|
|
343
334
|
}
|
|
344
335
|
// Return result
|
|
345
336
|
return { orgId: flags['target-org'].getOrgId(), outputString: messages.join('\n') };
|
|
346
337
|
}
|
|
347
|
-
async handleNotifications(flags, targetUsername, quickDeploy) {
|
|
348
|
-
const pullRequestInfo = await GitProvider.getPullRequestInfo();
|
|
349
|
-
const attachments = [];
|
|
350
|
-
try {
|
|
351
|
-
// Build notification attachments & handle ticketing systems comments
|
|
352
|
-
const commitsSummary = await this.collectNotifAttachments(attachments, pullRequestInfo);
|
|
353
|
-
await TicketProvider.postDeploymentActions(commitsSummary.tickets, flags['target-org']?.getConnection()?.instanceUrl || targetUsername || '', pullRequestInfo);
|
|
354
|
-
}
|
|
355
|
-
catch (e4) {
|
|
356
|
-
uxLog(this, c.yellow('Unable to handle commit info on TicketProvider post deployment actions:\n' + e4.message) +
|
|
357
|
-
'\n' +
|
|
358
|
-
c.gray(e4.stack));
|
|
359
|
-
}
|
|
360
|
-
const orgMarkdown = await getOrgMarkdown(flags['target-org']?.getConnection()?.instanceUrl || targetUsername || '');
|
|
361
|
-
const branchMarkdown = await getBranchMarkdown();
|
|
362
|
-
let notifMessage = `Deployment has been successfully processed from branch ${branchMarkdown} to org ${orgMarkdown}`;
|
|
363
|
-
notifMessage += quickDeploy
|
|
364
|
-
? ' (🚀 quick deployment)'
|
|
365
|
-
: this.delta
|
|
366
|
-
? ' (🌙 delta deployment)'
|
|
367
|
-
: ' (🌕 full deployment)';
|
|
368
|
-
const notifButtons = await getNotificationButtons();
|
|
369
|
-
if (pullRequestInfo) {
|
|
370
|
-
if (this.debugMode) {
|
|
371
|
-
uxLog(this, c.gray('PR info:\n' + JSON.stringify(pullRequestInfo)));
|
|
372
|
-
}
|
|
373
|
-
const prUrl = pullRequestInfo.web_url || pullRequestInfo.html_url || pullRequestInfo.url;
|
|
374
|
-
const prAuthor = pullRequestInfo?.authorName || pullRequestInfo?.author?.login || pullRequestInfo?.author?.name || null;
|
|
375
|
-
notifMessage += `\nRelated: <${prUrl}|${pullRequestInfo.title}>` + (prAuthor ? ` by ${prAuthor}` : '');
|
|
376
|
-
const prButtonText = 'View Pull Request';
|
|
377
|
-
notifButtons.push({ text: prButtonText, url: prUrl });
|
|
378
|
-
}
|
|
379
|
-
else {
|
|
380
|
-
uxLog(this, c.yellow("WARNING: Unable to get Pull Request info, notif won't have a button URL"));
|
|
381
|
-
}
|
|
382
|
-
globalThis.jsForceConn = flags['target-org']?.getConnection(); // Required for some notifications providers like Email
|
|
383
|
-
await NotifProvider.postNotifications({
|
|
384
|
-
type: 'DEPLOYMENT',
|
|
385
|
-
text: notifMessage,
|
|
386
|
-
buttons: notifButtons,
|
|
387
|
-
severity: 'success',
|
|
388
|
-
attachments: attachments,
|
|
389
|
-
logElements: [],
|
|
390
|
-
data: { metric: 0 }, // Todo: if delta used, count the number of items deployed
|
|
391
|
-
metrics: {
|
|
392
|
-
DeployedItems: 0,
|
|
393
|
-
},
|
|
394
|
-
});
|
|
395
|
-
}
|
|
396
338
|
async handleDeltaDeployment(deltaFromArgs, targetUsername, currentGitBranch) {
|
|
397
339
|
this.delta = false;
|
|
398
340
|
if ((deltaFromArgs === true ||
|
|
@@ -415,10 +357,10 @@ If testlevel=RunRepositoryTests, can contain a regular expression to keep only c
|
|
|
415
357
|
uxLog(this, c.cyan('[DeltaDeployment] Generating git delta package.xml and destructiveChanges.xml ...'));
|
|
416
358
|
const tmpDir = await createTempDir();
|
|
417
359
|
await callSfdxGitDelta(fromCommit, toCommit, tmpDir, { debug: this.debugMode });
|
|
418
|
-
// Update package.xml
|
|
419
360
|
const packageXmlFileDeltaDeploy = path.join(tmpDir, 'package', 'packageDelta.xml');
|
|
420
361
|
await fs.copy(this.packageXmlFile, packageXmlFileDeltaDeploy);
|
|
421
362
|
this.packageXmlFile = packageXmlFileDeltaDeploy;
|
|
363
|
+
// Update package.xml
|
|
422
364
|
const diffPackageXml = path.join(tmpDir, 'package', 'package.xml');
|
|
423
365
|
await removePackageXmlContent(this.packageXmlFile, diffPackageXml, true, {
|
|
424
366
|
debugMode: this.debugMode,
|
|
@@ -549,45 +491,6 @@ If testlevel=RunRepositoryTests, can contain a regular expression to keep only c
|
|
|
549
491
|
this.testClasses = '';
|
|
550
492
|
}
|
|
551
493
|
}
|
|
552
|
-
async collectNotifAttachments(attachments, pullRequestInfo) {
|
|
553
|
-
const commitsSummary = await computeCommitsSummary(false, pullRequestInfo);
|
|
554
|
-
// Tickets attachment
|
|
555
|
-
if (commitsSummary.tickets.length > 0) {
|
|
556
|
-
attachments.push({
|
|
557
|
-
text: `*Tickets*\n${commitsSummary.tickets
|
|
558
|
-
.map((ticket) => {
|
|
559
|
-
if (ticket.foundOnServer) {
|
|
560
|
-
return '• ' + UtilsNotifs.markdownLink(ticket.url, ticket.id) + ' ' + ticket.subject;
|
|
561
|
-
}
|
|
562
|
-
else {
|
|
563
|
-
return '• ' + UtilsNotifs.markdownLink(ticket.url, ticket.id);
|
|
564
|
-
}
|
|
565
|
-
})
|
|
566
|
-
.join('\n')}`,
|
|
567
|
-
});
|
|
568
|
-
}
|
|
569
|
-
// Manual actions attachment
|
|
570
|
-
if (commitsSummary.manualActions.length > 0) {
|
|
571
|
-
attachments.push({
|
|
572
|
-
text: `*Manual actions*\n${commitsSummary.manualActions
|
|
573
|
-
.map((manualAction) => {
|
|
574
|
-
return '• ' + manualAction;
|
|
575
|
-
})
|
|
576
|
-
.join('\n')}`,
|
|
577
|
-
});
|
|
578
|
-
}
|
|
579
|
-
// Commits attachment
|
|
580
|
-
if (commitsSummary.logResults.length > 0) {
|
|
581
|
-
attachments.push({
|
|
582
|
-
text: `*Commits*\n${commitsSummary.logResults
|
|
583
|
-
.map((logResult) => {
|
|
584
|
-
return '• ' + logResult.message + ', by ' + logResult.author_name;
|
|
585
|
-
})
|
|
586
|
-
.join('\n')}`,
|
|
587
|
-
});
|
|
588
|
-
}
|
|
589
|
-
return commitsSummary;
|
|
590
|
-
}
|
|
591
494
|
async isDeltaAllowed() {
|
|
592
495
|
if (process.env?.DISABLE_DELTA_DEPLOYMENT === 'true') {
|
|
593
496
|
uxLog(this, c.yellow(`[DeltaDeployment] Delta deployment has been explicitly disabled with variable DISABLE_DELTA_DEPLOYMENT=true`));
|