chore(release): separate version from build (#3441)
This commit is contained in:
1 parent
828690cd3b
commit
008fa5b715
5 files changed
+155
-112
No files matched your search
-110
@@ -1,8 +1,6 @@
|
||||
import { execa } from 'execa';
|
||||
import semver from 'semver';
|
||||
import fs from 'fs/promises';
|
||||
import glob from 'glob';
|
||||
import path from 'path';
|
||||
|
||||
async function run() {
|
||||
const { stdout: branchName } = await execa('git', [
|
||||
@@ -74,114 +72,6 @@ async function run() {
|
||||
await fs.writeFile('./commit.txt', versionInfo.commit);
|
||||
|
||||
console.log('Version info saved to version.json');
|
||||
|
||||
// Read the packages from the lerna.json file
|
||||
const packages = lernaJson.packages;
|
||||
|
||||
if (!packages) {
|
||||
throw new Error('Could not find packages in lerna.json');
|
||||
}
|
||||
|
||||
// for each package's package.json file, see if there is a peerdependency,
|
||||
// and for each peer dependency see if it includes a package that
|
||||
// starts with @ohif/, if so update the version to the
|
||||
// next version since lerna will not handle this for us
|
||||
|
||||
// Iterate over each package path pattern
|
||||
for (const packagePathPattern of packages) {
|
||||
// Use glob to find all matching directories
|
||||
const matchingDirectories = glob.sync(packagePathPattern);
|
||||
|
||||
for (const packageDirectory of matchingDirectories) {
|
||||
const packageJsonPath = path.join(packageDirectory, 'package.json');
|
||||
|
||||
try {
|
||||
const packageJson = JSON.parse(
|
||||
await fs.readFile(packageJsonPath, 'utf-8')
|
||||
);
|
||||
|
||||
if (!packageJson.peerDependencies) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const peerDependency of Object.keys(
|
||||
packageJson.peerDependencies
|
||||
)) {
|
||||
if (peerDependency.startsWith('@ohif/')) {
|
||||
packageJson.peerDependencies[peerDependency] = nextVersion;
|
||||
|
||||
console.log(
|
||||
'updating peerdependency to ',
|
||||
packageJson.peerDependencies[peerDependency]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await fs.writeFile(
|
||||
packageJsonPath,
|
||||
JSON.stringify(packageJson, null, 2) + '\n'
|
||||
);
|
||||
|
||||
console.log(`Updated ${packageJsonPath}`);
|
||||
} catch (err) {
|
||||
// This could be a directory without a package.json file. Ignore and continue.
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Todo: Do we really need to run the build command here?
|
||||
// Maybe we need to hook the netlify deploy preview
|
||||
// await execa('yarn', ['run', 'build']);
|
||||
// console.log('Build command completed');
|
||||
|
||||
console.log('Committing and pushing changes...');
|
||||
await execa('git', ['add', '-A']);
|
||||
await execa('git', [
|
||||
'commit',
|
||||
'-m',
|
||||
'chore(version): version.json [skip ci]',
|
||||
]);
|
||||
await execa('git', ['push', 'origin', branchName]);
|
||||
|
||||
console.log('Setting the version using lerna...');
|
||||
|
||||
// add a message to the commit to indicate that the version was set using lerna
|
||||
await execa('npx', [
|
||||
'lerna',
|
||||
'version',
|
||||
nextVersion,
|
||||
'--yes',
|
||||
'--exact',
|
||||
'--force-publish',
|
||||
'--message',
|
||||
'chore(version): Update package versions [skip ci]',
|
||||
]);
|
||||
console.log('Version set using lerna');
|
||||
|
||||
// Publishing each package, if on master/main branch publish beta versions
|
||||
// otherwise publish latest
|
||||
if (branchName === 'release') {
|
||||
await execa('npx', [
|
||||
'lerna',
|
||||
'publish',
|
||||
'from-package',
|
||||
'--no-verify-access',
|
||||
'--yes',
|
||||
]);
|
||||
} else {
|
||||
await execa('npx', [
|
||||
'lerna',
|
||||
'publish',
|
||||
'from-package',
|
||||
'--no-verify-access',
|
||||
'--yes',
|
||||
'--dist-tag',
|
||||
'beta',
|
||||
]);
|
||||
}
|
||||
|
||||
console.log('Finished');
|
||||
}
|
||||
|
||||
run().catch(err => {
|
||||
|
||||
Reference in new issue
Block a user