sfdx-hardis 6.9.1-alpha202510270034.0 → 6.10.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 +4 -3
- package/lib/commands/hardis/org/diagnose/storage-stats.d.ts +18 -0
- package/lib/commands/hardis/org/diagnose/storage-stats.js +278 -0
- package/lib/commands/hardis/org/diagnose/storage-stats.js.map +1 -0
- package/lib/commands/hardis/project/deploy/notify.js +23 -19
- package/lib/commands/hardis/project/deploy/notify.js.map +1 -1
- package/lib/commands/hardis/project/deploy/quick.js +2 -3
- package/lib/commands/hardis/project/deploy/quick.js.map +1 -1
- package/lib/commands/hardis/project/deploy/start.js +5 -4
- package/lib/commands/hardis/project/deploy/start.js.map +1 -1
- package/lib/commands/hardis/project/deploy/validate.js +3 -4
- package/lib/commands/hardis/project/deploy/validate.js.map +1 -1
- package/lib/commands/hardis/source/deploy.js +3 -4
- package/lib/commands/hardis/source/deploy.js.map +1 -1
- package/lib/common/gitProvider/azureDevops.d.ts +0 -1
- package/lib/common/gitProvider/azureDevops.js +3 -71
- package/lib/common/gitProvider/azureDevops.js.map +1 -1
- package/lib/common/gitProvider/bitbucket.d.ts +0 -1
- package/lib/common/gitProvider/bitbucket.js +2 -81
- package/lib/common/gitProvider/bitbucket.js.map +1 -1
- package/lib/common/gitProvider/gitProviderRoot.d.ts +0 -1
- package/lib/common/gitProvider/gitProviderRoot.js +0 -6
- package/lib/common/gitProvider/gitProviderRoot.js.map +1 -1
- package/lib/common/gitProvider/github.d.ts +0 -1
- package/lib/common/gitProvider/github.js +1 -74
- package/lib/common/gitProvider/github.js.map +1 -1
- package/lib/common/gitProvider/gitlab.d.ts +0 -3
- package/lib/common/gitProvider/gitlab.js +2 -110
- package/lib/common/gitProvider/gitlab.js.map +1 -1
- package/lib/common/gitProvider/index.d.ts +1 -1
- package/lib/common/gitProvider/index.js +5 -12
- package/lib/common/gitProvider/index.js.map +1 -1
- package/lib/common/utils/dataUtils.d.ts +2 -2
- package/lib/common/utils/dataUtils.js +1 -5
- package/lib/common/utils/dataUtils.js.map +1 -1
- package/lib/common/utils/deployTips.js +1 -2
- package/lib/common/utils/deployTips.js.map +1 -1
- package/lib/common/utils/deployUtils.d.ts +7 -0
- package/lib/common/utils/deployUtils.js +75 -28
- package/lib/common/utils/deployUtils.js.map +1 -1
- package/lib/common/utils/gitUtils.d.ts +0 -2
- package/lib/common/utils/gitUtils.js +1 -7
- package/lib/common/utils/gitUtils.js.map +1 -1
- package/oclif.manifest.json +663 -549
- package/package.json +1 -1
- package/lib/common/actionsProvider/actionsProvider.d.ts +0 -37
- package/lib/common/actionsProvider/actionsProvider.js +0 -56
- package/lib/common/actionsProvider/actionsProvider.js.map +0 -1
- package/lib/common/actionsProvider/apexAction.d.ts +0 -6
- package/lib/common/actionsProvider/apexAction.js +0 -35
- package/lib/common/actionsProvider/apexAction.js.map +0 -1
- package/lib/common/actionsProvider/commandAction.d.ts +0 -6
- package/lib/common/actionsProvider/commandAction.js +0 -28
- package/lib/common/actionsProvider/commandAction.js.map +0 -1
- package/lib/common/actionsProvider/dataAction.d.ts +0 -6
- package/lib/common/actionsProvider/dataAction.js +0 -43
- package/lib/common/actionsProvider/dataAction.js.map +0 -1
- package/lib/common/actionsProvider/manualAction.d.ts +0 -6
- package/lib/common/actionsProvider/manualAction.js +0 -26
- package/lib/common/actionsProvider/manualAction.js.map +0 -1
- package/lib/common/actionsProvider/publishCommunityAction.d.ts +0 -6
- package/lib/common/actionsProvider/publishCommunityAction.js +0 -30
- package/lib/common/actionsProvider/publishCommunityAction.js.map +0 -1
- package/lib/common/utils/prePostCommandUtils.d.ts +0 -7
- package/lib/common/utils/prePostCommandUtils.js +0 -272
- package/lib/common/utils/prePostCommandUtils.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
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
|
-
|
|
9
|
-
|
|
7
|
+
## [6.10.0] 2025-10-31
|
|
8
|
+
|
|
9
|
+
- New command [hardis:org:diagnose:storage-stats](https://sfdx-hardis.cloudity.com/hardis/org/diagnose/storage-stats/) to analyze storage usage per object and per year of creation / last update
|
|
10
10
|
- Add explicit message in case of error when authenticating to Git provider API
|
|
11
11
|
- Allow to override SFDX_TEST_WAIT_MINUTES and SFDX_DEPLOY_WAIT_MINUTES using CI/CD variables, and set 120 minutes as default value everywhere
|
|
12
|
+
- Fix Validation Rules formula field in doc generation
|
|
12
13
|
|
|
13
14
|
## [6.9.0] 2025-10-23
|
|
14
15
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SfCommand } from '@salesforce/sf-plugins-core';
|
|
2
|
+
import { AnyJson } from '@salesforce/ts-types';
|
|
3
|
+
export default class StorageStats 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 debugMode: boolean;
|
|
10
|
+
protected cacheFilePath: string;
|
|
11
|
+
protected tableStorageInfos: any[];
|
|
12
|
+
protected outputFile: any;
|
|
13
|
+
protected outputFilesRes: any;
|
|
14
|
+
run(): Promise<AnyJson>;
|
|
15
|
+
private getEmptyObjectsCache;
|
|
16
|
+
private setEmptyObjectsCache;
|
|
17
|
+
private calculateObjectStorageStats;
|
|
18
|
+
}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/* jscpd:ignore-start */
|
|
2
|
+
import { SfCommand, Flags, requiredOrgFlagWithDeprecations } from '@salesforce/sf-plugins-core';
|
|
3
|
+
import { Messages } from '@salesforce/core';
|
|
4
|
+
import c from 'chalk';
|
|
5
|
+
import fs from 'fs-extra';
|
|
6
|
+
import { uxLog, uxLogTable } from '../../../../common/utils/index.js';
|
|
7
|
+
import { soqlQuery } from '../../../../common/utils/apiUtils.js';
|
|
8
|
+
import { generateCsvFile, generateReportPath } from '../../../../common/utils/filesUtils.js';
|
|
9
|
+
import sortArray from 'sort-array';
|
|
10
|
+
import { prompts } from '../../../../common/utils/prompts.js';
|
|
11
|
+
import { CONSTANTS, getReportDirectory } from '../../../../config/index.js';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
import { WebSocketClient } from '../../../../common/websocketClient.js';
|
|
14
|
+
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
|
|
15
|
+
const messages = Messages.loadMessages('sfdx-hardis', 'org');
|
|
16
|
+
export default class StorageStats extends SfCommand {
|
|
17
|
+
static title = 'Extract Data Storage stats';
|
|
18
|
+
static description = `**Extracts and analyzes Data Storage usage for a Salesforce org, providing detailed per-object breakdowns with yearly trends.**
|
|
19
|
+
|
|
20
|
+
This command provides a comprehensive overview of your Salesforce data storage consumption. It's particularly useful for:
|
|
21
|
+
|
|
22
|
+
- **Storage Management:** Understanding which SObjects consume the most storage and how usage has evolved over time.
|
|
23
|
+
- **Cost Optimization:** Identifying storage-heavy objects that could be candidates for data archival or cleanup strategies.
|
|
24
|
+
- **Capacity Planning:** Tracking storage trends to predict when additional capacity will be needed.
|
|
25
|
+
- **Compliance & Governance:** Monitoring data growth patterns to ensure alignment with data retention policies.
|
|
26
|
+
|
|
27
|
+
Key functionalities:
|
|
28
|
+
|
|
29
|
+
- **Storage Limits Analysis:** Retrieves and displays org data storage limits, including total capacity, used storage, remaining storage, and percentage used. Detects and alerts on over-usage scenarios.
|
|
30
|
+
- **SObject Discovery & Filtering:** Automatically discovers all SObjects in the org and filters them to focus on production/custom objects (excludes metadata types, platform-only objects, and cached empty objects).
|
|
31
|
+
- **Interactive Selection:** Prompts the user to select which SObjects to analyze and choose between \`CreatedDate\` or \`LastModifiedDate\` for temporal breakdown.
|
|
32
|
+
- **Yearly Storage Breakdown:** Executes grouped SOQL queries per object to calculate record counts by year, providing historical growth trends.
|
|
33
|
+
- **Storage Estimation:** Estimates storage usage for each object using an average record size heuristic (2 KB per record) and calculates the percentage of org quota consumed.
|
|
34
|
+
- **Dual CSV Reports:** Generates two CSV files: a detailed by-year breakdown and a totals-per-object summary, both suitable for spreadsheet analysis and reporting.
|
|
35
|
+
- **Empty Objects Cache:** Maintains a per-user cache of objects detected with zero records to optimize subsequent runs by skipping empty tables.
|
|
36
|
+
- **Progress Tracking:** Sends WebSocket progress messages for integration with external UIs and monitoring dashboards.
|
|
37
|
+
|
|
38
|
+
<details markdown="1">
|
|
39
|
+
<summary>Technical explanations</summary>
|
|
40
|
+
|
|
41
|
+
The command's technical implementation involves:
|
|
42
|
+
|
|
43
|
+
- **Limits Retrieval:** Calls \`conn.limits()\` to retrieve the \`DataStorageMB\` object containing \`Max\` and \`Remaining\` values. Handles negative \`Remaining\` values (over-usage scenarios) by calculating \`overUsageMB\` and adjusting display values.
|
|
44
|
+
- **SObject Discovery:** Uses \`conn.metadata.list([{ type: 'CustomObject' }])\` to get custom objects and \`conn.describeGlobal()\` to get all SObjects. Filters by object capabilities (\`layoutable\`, \`queryable\`, \`retrieveable\`, \`createable\`, \`updateable\`, \`deletable\`) and excludes metadata types (\`__mdt\` suffix) and cached empty objects.
|
|
45
|
+
- **User Interaction:** Uses \`prompts\` for interactive multi-select of SObjects and single-select for date field choice. All objects are pre-selected by default for user convenience.
|
|
46
|
+
- **Yearly Aggregation Queries:** For each selected SObject, executes a grouped SOQL query: \`SELECT CALENDAR_YEAR(<DateField>) year, COUNT(Id) total FROM <SObject> GROUP BY CALENDAR_YEAR(<DateField>) ORDER BY CALENDAR_YEAR(<DateField>) DESC\`. Handles query errors gracefully (logs error and continues with next object).
|
|
47
|
+
- **Storage Calculation:** Applies a conservative average record size of 2 KB (2048 bytes) to estimate storage consumption. Calculates both MB usage and percentage of org quota for each object and year.
|
|
48
|
+
- **Report Generation:** Uses \`generateCsvFile\` and \`generateReportPath\` helpers to create two CSV files in the reports directory:
|
|
49
|
+
- Detailed breakdown: includes all yearly statistics per object
|
|
50
|
+
- Totals summary: includes only aggregate totals per object
|
|
51
|
+
- **Caching Mechanism:** Writes a JSON cache file per authenticated username (sanitized) in the reports directory (\`<username>_empty_tables_cache.json\`) containing an array of empty object names. The cache is updated after each run with newly detected empty objects.
|
|
52
|
+
- **Progress & UX:** Uses \`WebSocketClient\` to emit start/step/end progress messages for external monitoring. Outputs summary tables with \`uxLogTable\` and status messages with \`uxLog\`.
|
|
53
|
+
- **Return Value:** Returns a JSON object containing \`tableStorageInfos\` (all rows), \`tableStorageInfosTotals\` (summary rows), \`storageLimits\` (org limits object), and \`outputFiles\` (paths to generated CSV/XLSX reports).
|
|
54
|
+
</details>
|
|
55
|
+
|
|
56
|
+

|
|
57
|
+
|
|
58
|
+

|
|
59
|
+
`;
|
|
60
|
+
static examples = [
|
|
61
|
+
'$ sf hardis:org:diagnose:storage-stats',
|
|
62
|
+
];
|
|
63
|
+
static flags = {
|
|
64
|
+
outputfile: Flags.string({
|
|
65
|
+
char: 'f',
|
|
66
|
+
description: 'Force the path and name of output report file. Must end with .csv',
|
|
67
|
+
}),
|
|
68
|
+
debug: Flags.boolean({
|
|
69
|
+
char: 'd',
|
|
70
|
+
default: false,
|
|
71
|
+
description: messages.getMessage('debugMode'),
|
|
72
|
+
}),
|
|
73
|
+
websocket: Flags.string({
|
|
74
|
+
description: messages.getMessage('websocket'),
|
|
75
|
+
}),
|
|
76
|
+
skipauth: Flags.boolean({
|
|
77
|
+
description: 'Skip authentication check when a default username is required',
|
|
78
|
+
}),
|
|
79
|
+
'target-org': requiredOrgFlagWithDeprecations,
|
|
80
|
+
};
|
|
81
|
+
static requiresProject = true;
|
|
82
|
+
debugMode = false;
|
|
83
|
+
cacheFilePath = '';
|
|
84
|
+
tableStorageInfos = [];
|
|
85
|
+
outputFile;
|
|
86
|
+
outputFilesRes = {};
|
|
87
|
+
/* jscpd:ignore-end */
|
|
88
|
+
async run() {
|
|
89
|
+
const { flags } = await this.parse(StorageStats);
|
|
90
|
+
this.debugMode = flags.debug || false;
|
|
91
|
+
this.outputFile = flags.outputfile || null;
|
|
92
|
+
const conn = flags['target-org'].getConnection();
|
|
93
|
+
// Querying storage limit
|
|
94
|
+
uxLog("action", this, `Retrieving storage limits from the org...`);
|
|
95
|
+
const storageLimits = await conn.limits();
|
|
96
|
+
const dataStorageLimit = storageLimits.DataStorageMB;
|
|
97
|
+
const max = Number(dataStorageLimit.Max) || 0;
|
|
98
|
+
const remainingRaw = Number(dataStorageLimit.Remaining) || 0;
|
|
99
|
+
// Normalize values and detect over-usage
|
|
100
|
+
const overUsageMB = remainingRaw < 0 ? Math.abs(remainingRaw) : 0;
|
|
101
|
+
const remainingMB = remainingRaw < 0 ? 0 : remainingRaw;
|
|
102
|
+
const usedMB = max - remainingRaw; // if Remaining is negative this will be > max
|
|
103
|
+
const percentUsed = max > 0 ? (usedMB / max) * 100 : 0;
|
|
104
|
+
uxLog("log", this, `Data Storage Limit: ${c.cyan(max)} MB`);
|
|
105
|
+
uxLog("log", this, `Data Storage Used: ${c.cyan(usedMB)} MB${overUsageMB > 0 ? c.red(` (Over by ${overUsageMB} MB)`) : ''}`);
|
|
106
|
+
uxLog("log", this, `Data Storage Remaining: ${c.cyan(remainingMB)} MB${overUsageMB > 0 ? c.red(` (Exceeded by ${overUsageMB} MB)`) : ''}`);
|
|
107
|
+
uxLog("log", this, `Data Storage Usage Percent: ${c.cyan(percentUsed.toFixed(2))} %`);
|
|
108
|
+
if (overUsageMB > 0) {
|
|
109
|
+
uxLog("action", this, `Your org has exceeded the data storage limit by ${c.cyan(overUsageMB)} MB (${c.red(`${(percentUsed - 100).toFixed(2)}%`)} over the ${c.cyan(max)} MB limit).`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
uxLog("action", this, `You have used ${c.cyan(percentUsed.toFixed(2))}% of your ${c.cyan(max)} MB data storage limit.`);
|
|
113
|
+
}
|
|
114
|
+
// List SObjects in org and filter them to exclude Salesforce platform technical ones , to keep only "Production" objects like Account, Contact, Custom Objects, etc.
|
|
115
|
+
uxLog("action", this, `Listing SObjects from the org...`);
|
|
116
|
+
const customObjects = await conn.metadata.list([{ type: 'CustomObject' }]);
|
|
117
|
+
const sObjects = await conn.describeGlobal();
|
|
118
|
+
uxLog("log", this, `${sObjects.sobjects.length} SObjects retrieved.`);
|
|
119
|
+
const emptyObjects = await this.getEmptyObjectsCache(conn);
|
|
120
|
+
const sObjectsFiltered = sObjects.sobjects.filter((obj) => {
|
|
121
|
+
return customObjects.find((customObj) => customObj.fullName === obj.name) &&
|
|
122
|
+
!emptyObjects.includes(obj.name) &&
|
|
123
|
+
!obj.name.endsWith('__mdt') &&
|
|
124
|
+
obj.layoutable === true &&
|
|
125
|
+
obj.queryable === true &&
|
|
126
|
+
obj.retrieveable === true &&
|
|
127
|
+
obj.deletable === true &&
|
|
128
|
+
obj.updateable === true &&
|
|
129
|
+
obj.createable === true;
|
|
130
|
+
});
|
|
131
|
+
sortArray(sObjectsFiltered, { by: "name" });
|
|
132
|
+
uxLog("log", this, `${sObjectsFiltered.length} SObjects after filtering`);
|
|
133
|
+
if (emptyObjects.length > 0) {
|
|
134
|
+
uxLog("log", this, `${emptyObjects.length} SObjects excluded based on empty objects cache. To remove it, delete file ${c.cyan(this.cacheFilePath)} in the reports directory.`);
|
|
135
|
+
}
|
|
136
|
+
// Prompt user to select objects to analyze
|
|
137
|
+
const promptObjectsRes = await prompts({
|
|
138
|
+
type: 'multiselect',
|
|
139
|
+
message: 'Select the SObjects to analyze for storage usage:',
|
|
140
|
+
description: "Exclude objects you don't want to analyze.",
|
|
141
|
+
choices: sObjectsFiltered.map((obj) => ({ title: obj.name, value: obj.name })),
|
|
142
|
+
initial: sObjectsFiltered.map((obj) => obj), // all selected by default
|
|
143
|
+
});
|
|
144
|
+
const selectedObjects = promptObjectsRes.value.map((objName) => {
|
|
145
|
+
return sObjectsFiltered.find((obj) => obj.name === objName);
|
|
146
|
+
});
|
|
147
|
+
uxLog("log", this, `${selectedObjects.length} SObjects selected for analysis.`);
|
|
148
|
+
// Prompt user for stats on CreatedDate or LastModifiedDate
|
|
149
|
+
const promptDateFieldRes = await prompts({
|
|
150
|
+
type: 'select',
|
|
151
|
+
message: 'Select the date field to use for storage stats breakdown',
|
|
152
|
+
description: "Choose between CreatedDate or LastModifiedDate.",
|
|
153
|
+
choices: [
|
|
154
|
+
{ title: 'CreatedDate', value: 'CreatedDate' },
|
|
155
|
+
{ title: 'LastModifiedDate', value: 'LastModifiedDate' },
|
|
156
|
+
],
|
|
157
|
+
});
|
|
158
|
+
const dateField = promptDateFieldRes.value;
|
|
159
|
+
uxLog("log", this, `Using ${c.cyan(dateField)} for storage stats breakdown.`);
|
|
160
|
+
// Query objects to know the count of records, storage used and their year of created date
|
|
161
|
+
WebSocketClient.sendProgressStartMessage(`Calculating storage stats for ${selectedObjects.length} objects...`, selectedObjects.length);
|
|
162
|
+
const objectStorageStats = [];
|
|
163
|
+
let step = 0;
|
|
164
|
+
for (const obj of selectedObjects) {
|
|
165
|
+
const res = await this.calculateObjectStorageStats(obj, dateField, conn);
|
|
166
|
+
objectStorageStats.push(res);
|
|
167
|
+
step++;
|
|
168
|
+
WebSocketClient.sendProgressStepMessage(step);
|
|
169
|
+
}
|
|
170
|
+
WebSocketClient.sendProgressEndMessage();
|
|
171
|
+
uxLog("action", this, `Compiling storage stats...`);
|
|
172
|
+
// Sort by total records descending
|
|
173
|
+
sortArray(objectStorageStats, { by: 'totalRecords', order: 'desc' });
|
|
174
|
+
// Create one line by year per object
|
|
175
|
+
this.tableStorageInfos = objectStorageStats.flatMap(objStats => {
|
|
176
|
+
const allLines = [];
|
|
177
|
+
// calculate object storage usage based on record count and average record size
|
|
178
|
+
const averageSalesforceRecordSizeBytes = 2 * 1024; // 2 KB average size per record
|
|
179
|
+
const tableStorageInfo = {
|
|
180
|
+
ApiName: objStats.name,
|
|
181
|
+
Label: objStats.label,
|
|
182
|
+
};
|
|
183
|
+
const globalLine = {
|
|
184
|
+
...tableStorageInfo,
|
|
185
|
+
Year: 'Total',
|
|
186
|
+
RecordCount: objStats.totalRecords,
|
|
187
|
+
EstimatedStoragePercentage: ((objStats.totalRecords * averageSalesforceRecordSizeBytes) / (dataStorageLimit.Max * 1024 * 1024) * 100).toFixed(2) + "%",
|
|
188
|
+
EstimatedStorageMB: ((objStats.totalRecords * averageSalesforceRecordSizeBytes) / (1024 * 1024)).toFixed(2),
|
|
189
|
+
};
|
|
190
|
+
allLines.push(globalLine);
|
|
191
|
+
for (const yearStat of objStats.yearlyStats) {
|
|
192
|
+
const year = yearStat.year;
|
|
193
|
+
const recordCount = yearStat.total;
|
|
194
|
+
const storageUsedYearBytes = (recordCount * averageSalesforceRecordSizeBytes) / (1024 * 1024);
|
|
195
|
+
const line = {
|
|
196
|
+
...tableStorageInfo,
|
|
197
|
+
Year: year,
|
|
198
|
+
RecordCount: recordCount,
|
|
199
|
+
EstimatedStoragePercentage: (storageUsedYearBytes / (dataStorageLimit.Max) * 100).toFixed(2) + "%",
|
|
200
|
+
EstimatedStorageMB: storageUsedYearBytes.toFixed(2),
|
|
201
|
+
};
|
|
202
|
+
allLines.push(line);
|
|
203
|
+
}
|
|
204
|
+
return allLines;
|
|
205
|
+
});
|
|
206
|
+
// Update empty objects cache
|
|
207
|
+
const newlyEmptyObjects = objectStorageStats.filter(obj => obj.totalRecords === 0).map(obj => obj.name);
|
|
208
|
+
const updatedEmptyObjects = Array.from(new Set([...emptyObjects, ...newlyEmptyObjects]));
|
|
209
|
+
await this.setEmptyObjectsCache(updatedEmptyObjects);
|
|
210
|
+
uxLog("log", this, `Empty objects cache updated with ${newlyEmptyObjects.length} newly detected empty objects.`);
|
|
211
|
+
// Remove objects with zero records from the report
|
|
212
|
+
this.tableStorageInfos = this.tableStorageInfos.filter(info => info.RecordCount > 0);
|
|
213
|
+
// Generate output CSV file with breakdown by year
|
|
214
|
+
this.outputFile = await generateReportPath('storage-stats-by' + dateField, this.outputFile);
|
|
215
|
+
this.outputFilesRes = await generateCsvFile(this.tableStorageInfos, this.outputFile, { fileTitle: "Storage stats breakdown by " + dateField });
|
|
216
|
+
// Generate output CSV file with only total per object
|
|
217
|
+
const outputFileTotals = this.outputFile.replace('.csv', '-totals.csv');
|
|
218
|
+
const tableStorageInfosTotals = this.tableStorageInfos.filter(info => info.Year === 'Total');
|
|
219
|
+
const outputFilesResTotals = await generateCsvFile(tableStorageInfosTotals, outputFileTotals, { fileTitle: "Storage stats totals per object" });
|
|
220
|
+
this.outputFilesRes.totalPerObject = outputFilesResTotals;
|
|
221
|
+
// Display results
|
|
222
|
+
uxLog("action", this, `Storage stats usage`);
|
|
223
|
+
uxLogTable(this, tableStorageInfosTotals);
|
|
224
|
+
return {
|
|
225
|
+
tableStorageInfos: this.tableStorageInfos,
|
|
226
|
+
tableStorageInfosTotals: tableStorageInfosTotals,
|
|
227
|
+
storageLimits: storageLimits,
|
|
228
|
+
outputFiles: this.outputFilesRes,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
async getEmptyObjectsCache(conn) {
|
|
232
|
+
const reportDir = await getReportDirectory();
|
|
233
|
+
this.cacheFilePath = path.join(reportDir, conn.getUsername().replace(/[^a-zA-Z0-9]/g, '_') + '_empty_tables_cache.json');
|
|
234
|
+
let emptyObjects = [];
|
|
235
|
+
if (fs.existsSync(this.cacheFilePath)) {
|
|
236
|
+
const cacheContent = await fs.readJSON(this.cacheFilePath, 'utf-8');
|
|
237
|
+
emptyObjects = cacheContent.emptyObjects || [];
|
|
238
|
+
}
|
|
239
|
+
return emptyObjects;
|
|
240
|
+
}
|
|
241
|
+
async setEmptyObjectsCache(emptyObjects) {
|
|
242
|
+
const cacheContent = {
|
|
243
|
+
emptyObjects,
|
|
244
|
+
};
|
|
245
|
+
await fs.writeJSON(this.cacheFilePath, cacheContent, { spaces: 2 });
|
|
246
|
+
}
|
|
247
|
+
async calculateObjectStorageStats(obj, dateField, conn) {
|
|
248
|
+
uxLog("log", this, `Querying storage stats for object: ${c.cyan(obj.name)}...`);
|
|
249
|
+
const query = `SELECT CALENDAR_YEAR(${dateField}) year, COUNT(Id) total
|
|
250
|
+
FROM ${obj.name}
|
|
251
|
+
GROUP BY CALENDAR_YEAR(${dateField})
|
|
252
|
+
ORDER BY CALENDAR_YEAR(${dateField}) DESC`;
|
|
253
|
+
try {
|
|
254
|
+
const queryRes = await soqlQuery(query, conn);
|
|
255
|
+
const yearlyStats = queryRes.records.map((record) => ({
|
|
256
|
+
year: record.year,
|
|
257
|
+
total: record.total,
|
|
258
|
+
}));
|
|
259
|
+
const totalRecords = yearlyStats.reduce((acc, curr) => acc + curr.total, 0);
|
|
260
|
+
return {
|
|
261
|
+
name: obj.name,
|
|
262
|
+
label: obj.label,
|
|
263
|
+
totalRecords,
|
|
264
|
+
yearlyStats,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
uxLog("error", this, `Error querying object ${c.cyan(obj.name)}: ${error.message}`);
|
|
269
|
+
return {
|
|
270
|
+
name: obj.name,
|
|
271
|
+
label: obj.label + ' (Query Error):' + error.message,
|
|
272
|
+
totalRecords: 0,
|
|
273
|
+
yearlyStats: [],
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=storage-stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-stats.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/org/diagnose/storage-stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { SfCommand, Flags, requiredOrgFlagWithDeprecations } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import { Messages } from '@salesforce/core';
|
|
4
4
|
import { CONSTANTS } from '../../../../config/index.js';
|
|
5
|
-
import { buildCheckDeployCommitSummary, handlePostDeploymentNotifications
|
|
5
|
+
import { buildCheckDeployCommitSummary, handlePostDeploymentNotifications } from '../../../../common/utils/gitUtils.js';
|
|
6
6
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
7
7
|
import c from "chalk";
|
|
8
8
|
import { uxLog } from '../../../../common/utils/index.js';
|
|
@@ -128,30 +128,34 @@ You can also use [sfdx-hardis wrapper commands of SF deployment commands](${CONS
|
|
|
128
128
|
this.message = flags.message || "";
|
|
129
129
|
this.debugMode = flags.debug || false;
|
|
130
130
|
await setConnectionVariables(flags['target-org']?.getConnection(), true);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
131
|
+
// Deployment check mode
|
|
132
|
+
if (this.checkOnly) {
|
|
133
|
+
uxLog("action", this, c.cyan("Handling Pull Request comments for a deployment check job..."));
|
|
134
|
+
// Add deployment info
|
|
135
|
+
await buildCheckDeployCommitSummary();
|
|
136
|
+
const prData = {
|
|
137
|
+
messageKey: "deployment",
|
|
138
|
+
title: (this.checkOnly && this.deployStatus === "valid") ? "✅ Deployment check success" :
|
|
139
|
+
(!this.checkOnly && this.deployStatus === "valid") ? "✅ Deployment success" :
|
|
140
|
+
(this.checkOnly && this.deployStatus === "invalid") ? "❌ Deployment check failure" :
|
|
141
|
+
(!this.checkOnly && this.deployStatus === "invalid") ? "❌ Deployment failure" :
|
|
142
|
+
(this.checkOnly && this.deployStatus === "unknown") ? "🤷 Deployment check status unknown" :
|
|
143
|
+
"🤷 Deployment status unknown",
|
|
144
|
+
deployErrorsMarkdownBody: this.message,
|
|
145
|
+
status: this.deployStatus === "valid" ? "valid" : this.deployStatus === "invalid" ? "invalid" : "tovalidate",
|
|
146
|
+
};
|
|
147
|
+
globalThis.pullRequestData = Object.assign(globalThis.pullRequestData || {}, prData);
|
|
148
|
+
// Post comments 😊
|
|
149
|
+
await GitProvider.managePostPullRequestComment();
|
|
150
|
+
}
|
|
148
151
|
// Post notifications after successful deployment
|
|
149
|
-
if (this.checkOnly === false && this.deployStatus === "valid") {
|
|
152
|
+
else if (this.checkOnly === false && this.deployStatus === "valid") {
|
|
150
153
|
await handlePostDeploymentNotifications(flags, flags["target-org"].getUsername(), false, false, this.debugMode, this.message);
|
|
151
154
|
}
|
|
152
155
|
// Fallback
|
|
153
156
|
else {
|
|
154
157
|
uxLog("warning", this, c.yellow("No notification has been sent"));
|
|
158
|
+
uxLog("warning", this, c.yellow("- Pull Request comments are sent if --check-only is true"));
|
|
155
159
|
uxLog("warning", this, c.yellow("- Slack / Teams / Email / JIRA messages are sent only if --check-only is false and --deploy-status is valid"));
|
|
156
160
|
}
|
|
157
161
|
return { message: "Processed notifications" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/notify.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,
|
|
1
|
+
{"version":3,"file":"notify.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/notify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/* jscpd:ignore-start */
|
|
2
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import { wrapSfdxCoreCommand } from "../../../../common/utils/wrapUtils.js";
|
|
4
|
-
import { checkDeploymentOrgCoverage, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
4
|
+
import { checkDeploymentOrgCoverage, executePrePostCommands, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
5
5
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
6
6
|
import { handlePostDeploymentNotifications } from '../../../../common/utils/gitUtils.js';
|
|
7
7
|
import { setConnectionVariables } from '../../../../common/utils/orgUtils.js';
|
|
8
|
-
import { executePrePostCommands } from '../../../../common/utils/prePostCommandUtils.js';
|
|
9
8
|
export default class ProjectDeployStart extends SfCommand {
|
|
10
9
|
static description = `sfdx-hardis wrapper for **sf project deploy quick** that displays tips to solve deployment errors.
|
|
11
10
|
|
|
@@ -106,7 +105,7 @@ commandsPostDeploy:
|
|
|
106
105
|
await checkDeploymentOrgCoverage(Number(orgCoveragePercent), { check: checkOnly });
|
|
107
106
|
}
|
|
108
107
|
catch (errCoverage) {
|
|
109
|
-
await GitProvider.managePostPullRequestComment(
|
|
108
|
+
await GitProvider.managePostPullRequestComment();
|
|
110
109
|
throw errCoverage;
|
|
111
110
|
}
|
|
112
111
|
}
|
|
@@ -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,yBAAyB,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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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/* jscpd:ignore-start */
|
|
2
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import { wrapSfdxCoreCommand } from "../../../../common/utils/wrapUtils.js";
|
|
4
|
-
import { checkDeploymentOrgCoverage, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
4
|
+
import { checkDeploymentOrgCoverage, executePrePostCommands, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
5
5
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
6
6
|
import { buildCheckDeployCommitSummary, handlePostDeploymentNotifications } from '../../../../common/utils/gitUtils.js';
|
|
7
7
|
import { setConnectionVariables } from '../../../../common/utils/orgUtils.js';
|
|
8
|
-
import { executePrePostCommands } from '../../../../common/utils/prePostCommandUtils.js';
|
|
9
8
|
export default class ProjectDeployStart extends SfCommand {
|
|
10
9
|
static description = `sfdx-hardis wrapper for **sf project deploy start** that displays tips to solve deployment errors.
|
|
11
10
|
|
|
@@ -165,7 +164,7 @@ commandsPostDeploy:
|
|
|
165
164
|
await checkDeploymentOrgCoverage(Number(orgCoveragePercent), { check: checkOnly });
|
|
166
165
|
}
|
|
167
166
|
catch (errCoverage) {
|
|
168
|
-
await GitProvider.managePostPullRequestComment(
|
|
167
|
+
await GitProvider.managePostPullRequestComment();
|
|
169
168
|
throw errCoverage;
|
|
170
169
|
}
|
|
171
170
|
}
|
|
@@ -173,7 +172,9 @@ commandsPostDeploy:
|
|
|
173
172
|
// Run post deployment commands if defined
|
|
174
173
|
await executePrePostCommands('commandsPostDeploy', { success: process.exitCode === 0, checkOnly: checkOnly, conn: conn });
|
|
175
174
|
// Post comment if deployment check success
|
|
176
|
-
|
|
175
|
+
if (checkOnly) {
|
|
176
|
+
await GitProvider.managePostPullRequestComment();
|
|
177
|
+
}
|
|
177
178
|
// Post success deployment notifications
|
|
178
179
|
if (process.exitCode === 0 && !checkOnly) {
|
|
179
180
|
await handlePostDeploymentNotifications(flags, flags["target-org"].getUsername(), false, false, flags["debug"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/start.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,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/* jscpd:ignore-start */
|
|
2
2
|
import { SfCommand, Flags } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import { wrapSfdxCoreCommand } from "../../../../common/utils/wrapUtils.js";
|
|
4
|
-
import { checkDeploymentOrgCoverage, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
4
|
+
import { checkDeploymentOrgCoverage, executePrePostCommands, extractOrgCoverageFromLog } from '../../../../common/utils/deployUtils.js';
|
|
5
5
|
import { GitProvider } from '../../../../common/gitProvider/index.js';
|
|
6
6
|
import { buildCheckDeployCommitSummary } from '../../../../common/utils/gitUtils.js';
|
|
7
7
|
import { setConnectionVariables } from '../../../../common/utils/orgUtils.js';
|
|
8
|
-
import { executePrePostCommands } from '../../../../common/utils/prePostCommandUtils.js';
|
|
9
8
|
export default class ProjectDeployValidate extends SfCommand {
|
|
10
9
|
static description = `sfdx-hardis wrapper for **sf project deploy validate** that displays tips to solve deployment errors.
|
|
11
10
|
|
|
@@ -163,14 +162,14 @@ commandsPostDeploy:
|
|
|
163
162
|
await checkDeploymentOrgCoverage(Number(orgCoveragePercent), { check: checkOnly });
|
|
164
163
|
}
|
|
165
164
|
catch (errCoverage) {
|
|
166
|
-
await GitProvider.managePostPullRequestComment(
|
|
165
|
+
await GitProvider.managePostPullRequestComment();
|
|
167
166
|
throw errCoverage;
|
|
168
167
|
}
|
|
169
168
|
}
|
|
170
169
|
}
|
|
171
170
|
// Run post deployment commands if defined
|
|
172
171
|
await executePrePostCommands('commandsPostDeploy', { success: process.exitCode === 0, checkOnly: true, conn: conn });
|
|
173
|
-
await GitProvider.managePostPullRequestComment(
|
|
172
|
+
await GitProvider.managePostPullRequestComment();
|
|
174
173
|
return result;
|
|
175
174
|
}
|
|
176
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/validate.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,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../../src/commands/hardis/project/deploy/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
import { SfCommand, Flags, requiredOrgFlagWithDeprecations } from '@salesforce/sf-plugins-core';
|
|
3
3
|
import c from 'chalk';
|
|
4
4
|
import { GitProvider } from '../../../common/gitProvider/index.js';
|
|
5
|
-
import { checkDeploymentOrgCoverage, extractOrgCoverageFromLog, } from '../../../common/utils/deployUtils.js';
|
|
5
|
+
import { checkDeploymentOrgCoverage, executePrePostCommands, extractOrgCoverageFromLog, } from '../../../common/utils/deployUtils.js';
|
|
6
6
|
import { wrapSfdxCoreCommand } from '../../../common/utils/wrapUtils.js';
|
|
7
7
|
import { uxLog } from '../../../common/utils/index.js';
|
|
8
8
|
import { CONSTANTS } from '../../../config/index.js';
|
|
9
|
-
import { executePrePostCommands } from '../../../common/utils/prePostCommandUtils.js';
|
|
10
9
|
// Wrapper for sfdx force:source:deploy
|
|
11
10
|
export class Deploy extends SfCommand {
|
|
12
11
|
static description = `sfdx-hardis wrapper for sfdx force:source:deploy that displays tips to solve deployment errors.
|
|
@@ -195,14 +194,14 @@ Notes:
|
|
|
195
194
|
await checkDeploymentOrgCoverage(Number(orgCoveragePercent), { check: checkOnly });
|
|
196
195
|
}
|
|
197
196
|
catch (errCoverage) {
|
|
198
|
-
await GitProvider.managePostPullRequestComment(
|
|
197
|
+
await GitProvider.managePostPullRequestComment();
|
|
199
198
|
throw errCoverage;
|
|
200
199
|
}
|
|
201
200
|
}
|
|
202
201
|
}
|
|
203
202
|
// Run post deployment commands if defined
|
|
204
203
|
await executePrePostCommands('commandsPostDeploy', { success: process.exitCode === 0, checkOnly: checkOnly, conn: conn });
|
|
205
|
-
await GitProvider.managePostPullRequestComment(
|
|
204
|
+
await GitProvider.managePostPullRequestComment();
|
|
206
205
|
return result;
|
|
207
206
|
}
|
|
208
207
|
}
|