chore(ci): script releases

This commit is contained in:
Leifer Mendez
2022-12-09 13:50:01 +01:00
parent 2e906bce79
commit 40b0d9691e
11 changed files with 88 additions and 44 deletions

View File

@@ -1,11 +1,23 @@
const { writeFile, readFileSync } = require('fs')
const { join } = require('path')
const { exec, spawn } = require('node:child_process')
const { spawn, execFile } = require('node:child_process')
const process = require('node:process')
const util = require('node:util')
const OS_ENVIROMENT_WIN = process.platform.includes('win32')
const semver = require('semver')
const NPM_COMMAND = OS_ENVIROMENT_WIN ? 'npm.cmd' : 'npm'
const [PKG_ARG, PKG_ARG_VERSION] = process.argv.slice(2) || [null]
const PATH_PACKAGES = join(__dirname, '..', `packages`)
const cmd = util.promisify(execFile)
/**
* Leer package json
* @param {*} packageName
* @returns
*/
const readPackage = (packageName = null) => {
const pkgJson = join(PATH_PACKAGES, packageName, 'package.json')
const rawFile = readFileSync(pkgJson, 'utf-8')
@@ -14,18 +26,27 @@ const readPackage = (packageName = null) => {
return JSON.parse(rawFile)
}
/**
* Actualizar package json
* @param {*} packageName
* @param {*} newPkgJson
*/
const updatePackage = (packageName = null, newPkgJson) => {
const pkgJson = join(PATH_PACKAGES, packageName, 'package.json')
writeFile(pkgJson, newPkgJson, (err) => {
if (err) throw err
return new Promise((resolve, reject) => {
const pkgJson = join(PATH_PACKAGES, packageName, 'package.json')
if (!Object.keys(newPkgJson).length) throw new Error(`ERROR_FILE_READ`)
writeFile(pkgJson, newPkgJson, (err) => {
if (err) reject(err)
resolve(true)
})
})
}
/**
* Actualizar ramdon version de package
* Actualizar version
* @param {*} packageName
*/
const updateVersion = (packageName = null, number = null) => {
const updateVersion = async (packageName = null, number = null) => {
if (!packageName) throw new Error(`PATH_ERROR_PACKAGE: ${packageName}`)
const pkgJsonObject = readPackage(packageName)
@@ -42,20 +63,44 @@ const updateVersion = (packageName = null, number = null) => {
null,
2
)
updatePackage(packageName, newPkgJson)
await updatePackage(packageName, newPkgJson)
return { version: newVersion }
}
// const publishRelease = async (packageName) => {
// const pkgTarName = `builder.io-qwik-${version}.tgz`
// await execa('npm', ['pack'], { cwd: distPkgDir })
// }
const packRelease = async (packageName) => {
const pkgJson = join(PATH_PACKAGES, packageName)
const { stdout } = await cmd(NPM_COMMAND, ['pack'], {
stdio: 'inherit',
cwd: pkgJson,
})
return stdout
}
const publishRelease = async (packageName, latest = false) => {
const args = !latest ? ['--tag', 'next'] : ['--access', 'public']
const pkgJson = join(PATH_PACKAGES, packageName)
const { stdout } = await cmd(NPM_COMMAND, ['publish'].concat(args), {
stdio: 'inherit',
cwd: pkgJson,
})
console.log(stdout)
return stdout
}
/**
* Recibe los argumentos entrantes
*/
if (PKG_ARG) {
const pkgName = PKG_ARG ? PKG_ARG.split('=').at(1) : null
const pkgNumber = PKG_ARG_VERSION ? PKG_ARG_VERSION.split('=').at(1) : null
updateVersion(pkgName, pkgNumber)
const main = async () => {
if (PKG_ARG) {
const pkgName = PKG_ARG ? PKG_ARG.split('=').at(1) : null
const pkgNumber = PKG_ARG_VERSION
? PKG_ARG_VERSION.split('=').at(1)
: null
await updateVersion(pkgName, pkgNumber)
await packRelease(pkgName)
await publishRelease(pkgName)
}
}
main()