forked from finos/SymphonyElectron
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathafterSign.js
More file actions
57 lines (49 loc) · 1.59 KB
/
afterSign.js
File metadata and controls
57 lines (49 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const { getRawHeader } = require('@electron/asar');
const path = require('path');
const fs = require('fs');
const { saveMetaData } = require('./helpers/script/script-helper');
const {
compareAndPrint,
} = require('../scripts/helpers/terminal/terminal-helper');
const folderSnapshotFile = './dist/asar-size-metadata.json';
const currentFolderMetaDataFile =
'./dist/bundle-analytics/asar-size-metadata.json';
function getTotalSize(record) {
if ('size' in record) {
// FileRecord
return record.size;
} else {
// DirectoryRecord
return Object.values(record.files).reduce(
(sum, metadata) => sum + getTotalSize(metadata),
0,
);
}
}
async function getFileSizes(archivePath) {
const headerBuffer = await getRawHeader(archivePath);
const files = {};
for (const [fileName, fileMeta] of Object.entries(
headerBuffer.header.files,
)) {
files[fileName] = getTotalSize(fileMeta);
}
let previousFolderSizes = {};
if (fs.existsSync(folderSnapshotFile)) {
previousFolderSizes = JSON.parse(fs.readFileSync(folderSnapshotFile));
console.log('Comparing with previous metadata...\n');
compareAndPrint(files, previousFolderSizes, 0.01);
} else {
console.log('No previous metadata found. Creating one...');
}
saveMetaData(files, currentFolderMetaDataFile);
return files;
}
module.exports = async function afterSign(context) {
if (context.electronPlatformName === 'win32') {
const { appOutDir } = context;
// nosemgrep
const electronAsarPath = path.join(appOutDir, 'resources', 'app.asar');
await getFileSizes(electronAsarPath);
}
};