-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(Release script): update release process to be manually triggered (
#243) * chore: update release.yml to only run the new release script * chore: update release script
- Loading branch information
1 parent
2429e8c
commit 1f4fa28
Showing
5 changed files
with
110 additions
and
80 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,52 +0,0 @@ | ||
/** | ||
* replace workspace versions before releasing | ||
* only to be ran in CI | ||
*/ | ||
import fs from 'fs'; | ||
import path from 'path'; | ||
import { exec } from 'child_process'; | ||
|
||
function execAsync(command) { | ||
return new Promise((resolve, reject) => { | ||
exec(command, (error, stdout, stderr) => { | ||
if (error) { | ||
reject(error); | ||
return; | ||
} | ||
resolve({ stdout, stderr }); | ||
}); | ||
}); | ||
} | ||
|
||
async function getLatestVersion(packageName) { | ||
try { | ||
const { stdout } = await execAsync(`npm view ${packageName}@latest version`); | ||
const version = stdout.trim(); | ||
return version; | ||
} catch (error) { | ||
throw error; | ||
} | ||
} | ||
const packages = ['core']; | ||
|
||
export default async function releasePrep(args) { | ||
try { | ||
const latestVer = await getLatestVersion('@go-ui/core'); | ||
console.log({ latestVer }); | ||
packages.map((pkg) => { | ||
const pkgRoot = path.resolve(__dirname, `../packages/${pkg}`); | ||
const pkgFile = path.resolve(pkgRoot, 'package.json'); | ||
const content = fs.readFileSync(pkgFile, 'utf8'); | ||
let json = JSON.parse(content); | ||
// replace version number | ||
json['version'] = latestVer; | ||
const newContent = JSON.stringify(json, undefined, 2); | ||
fs.writeFileSync(pkgFile, newContent); | ||
console.log(`[${pkgFile}]`); | ||
console.log(newContent); | ||
}); | ||
} catch (error) { | ||
console.error('Error:', error); | ||
exit(1); | ||
} | ||
} | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
#!/usr/bin/env node | ||
const { execSync } = require('child_process'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
|
||
const RELEASE_COMMAND = 'pnpm run release --dry-run'; | ||
|
||
function getLatestVersion(packageName) { | ||
console.log(`> Getting latest version number from npm`); | ||
try { | ||
const output = execSync(`npm view ${packageName}@latest version`); | ||
const version = output.toString().trim(); | ||
return version; | ||
} catch (error) { | ||
console.error(`❎ Cannot get latest version for ${packageName}`); | ||
throw error; | ||
} | ||
} | ||
|
||
function syncCurrentCoreVersion() { | ||
console.log(`0️⃣STEP 0. Sync current core version in case it's not the latest`); | ||
try { | ||
const latestVer = getLatestVersion('@go-ui/core'); | ||
// get package json from core | ||
const pkgFile = path.resolve(__dirname, '../packages/core/package.json'); | ||
const content = fs.readFileSync(pkgFile, 'utf8'); | ||
let json = JSON.parse(content); | ||
if (json.version === latestVer) { | ||
console.log('✅ package.json in core is already up to date.'); | ||
return; | ||
} | ||
// replace version number | ||
json['version'] = latestVer; | ||
const newContent = JSON.stringify(json, undefined, 2); | ||
fs.writeFileSync(pkgFile, newContent); | ||
console.log(`✅ package.json in core has been updated to ${latestVer}.`); | ||
} catch (error) { | ||
console.error('❎ Error:', error); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
/** | ||
* Run release script in packages/core/package.json | ||
*/ | ||
function releaseCore() { | ||
console.log(`1️⃣ STEP 1. Release core`); | ||
try { | ||
// set working directory to ./packages/core | ||
const cwd = path.resolve(__dirname, '../packages/core'); | ||
execSync(RELEASE_COMMAND, { cwd, stdio: 'inherit' }); | ||
console.log('✅ Core package has been released.'); | ||
} catch (error) { | ||
console.error('❎ Error:', error); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
/** | ||
* make sure react and vue packages use the same version number as core | ||
* run `pnpm run gg release-prep-wrappers` in root | ||
*/ | ||
function syncVersionToWrappers() { | ||
console.log(`2️⃣ STEP 2. Sync version to wrappers`); | ||
try { | ||
execSync('pnpm run gg release-prep-wrappers', { stdio: 'inherit' }); | ||
console.log('✅ React and Vue packages have been synced.'); | ||
} catch (error) { | ||
console.error('❎ Error:', error); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
/** | ||
* Run release script in packages/react/package.json and packages/vue/package.json | ||
*/ | ||
function releaseWrappers() { | ||
const wrapperLibs = ['react', 'vue']; | ||
console.log(`3️⃣ STEP 3. Release wrappers, ${wrapperLibs.join(', ')}`); | ||
try { | ||
for (let i = 0; i < wrapperLibs.length; i++) { | ||
const lib = wrapperLibs[i]; | ||
const cwd = path.resolve(__dirname, `../packages/${lib}`); | ||
execSync(RELEASE_COMMAND, { cwd, stdio: 'inherit' }); | ||
console.log(`✅ ${lib} package have been released.`); | ||
} | ||
} catch (error) { | ||
console.error('❎ Error:', error); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
function main() { | ||
syncCurrentCoreVersion(); | ||
releaseCore(); | ||
syncVersionToWrappers(); | ||
releaseWrappers(); | ||
} | ||
|
||
main(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -89,4 +89,4 @@ | |
"publishConfig": { | ||
"access": "public" | ||
} | ||
} | ||
} |