forked from invertase/react-native-firebase
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathversion.js
More file actions
73 lines (60 loc) · 2.64 KB
/
version.js
File metadata and controls
73 lines (60 loc) · 2.64 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
const { sep } = require('path');
const { execSync } = require('child_process');
const { readFileSync, writeFileSync } = require('fs');
const { exit } = require('process');
const packages = JSON.parse(execSync('npx lerna ls --json').toString('utf-8'));
const firebaseAppPackageName = '@react-native-firebase/app';
const lernaVersion = JSON.parse(readFileSync('lerna.json')).version;
console.log(`Found lerna version: ${lernaVersion}`);
packages.forEach(package => {
const { location } = package;
// ---------------------------
// Fix Changelog Links
// ---------------------------
// Links to commits/PRs are broken on conventional-commits-changelog
const changelogPath = `${location}${sep}/CHANGELOG.md`;
console.log(`Fixing changelog links & formatting: ${changelogPath}`);
let changelogContents = readFileSync(changelogPath).toString('utf-8');
changelogContents = changelogContents.replace(
/github\.com\/invertase\/react-native-firebase\/(tree\/main\/packages\/[a-z-]*\/)/gm,
'github.com/invertase/react-native-firebase/',
);
writeFileSync(changelogPath, changelogContents);
// ---------------------------
// Format Changelog
// ---------------------------
execSync(`npx prettier --write ${changelogPath}`);
// ---------------------------
// Update Peer Dependencies
// ---------------------------
const packageJsonPath = `${location}${sep}/package.json`;
const packageJsonContents = JSON.parse(readFileSync(packageJsonPath).toString('utf-8'));
// Make sure that the app package has the correct version, it has been failing periodically
if (!packageJsonContents.version === lernaVersion) {
console.log(
`app package version ${packageJsonContents.version} but should be ${lernaVersion}? Exiting.`,
);
exit(1);
}
// console.log(`Examining package ${package.name} for local peerDepencenies...`);
if (!packageJsonContents.peerDependencies) {
return;
}
packages.forEach(possiblePeerDependency => {
// console.log(` checking for cross-dependency on ${possiblePeerDependency.name}`);
if (!packageJsonContents.peerDependencies[possiblePeerDependency.name]) {
return;
}
if (packageJsonContents.peerDependencies[possiblePeerDependency.name] === lernaVersion) {
return;
}
packageJsonContents.peerDependencies[possiblePeerDependency.name] = lernaVersion;
writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, null, 2) + '\n');
console.log(
`Updated '${possiblePeerDependency.name}' peer dependency on package`,
packageJsonContents.name,
'to',
packageJsonContents.peerDependencies[possiblePeerDependency.name],
);
});
});