chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import fs from 'node:fs'
|
||||
|
||||
import execa from 'execa'
|
||||
|
||||
import { LogHelper } from '@/helpers/log-helper'
|
||||
|
||||
/**
|
||||
* Update version number in files which need version number
|
||||
*/
|
||||
export default (version) =>
|
||||
new Promise(async (resolve, reject) => {
|
||||
const changelog = 'CHANGELOG.md'
|
||||
const tmpChangelog = 'TMP-CHANGELOG.md'
|
||||
|
||||
LogHelper.info(`Generating ${changelog}...`)
|
||||
|
||||
try {
|
||||
await execa('git-changelog', [
|
||||
'--changelogrc',
|
||||
'.changelogrc',
|
||||
'--template',
|
||||
'scripts/assets/CHANGELOG-TEMPLATE.md',
|
||||
'--file',
|
||||
`scripts/tmp/${tmpChangelog}`,
|
||||
'--version_name',
|
||||
version
|
||||
])
|
||||
} catch (e) {
|
||||
LogHelper.error(`Error during git-changelog: ${e}`)
|
||||
reject(e)
|
||||
}
|
||||
|
||||
try {
|
||||
LogHelper.info('Getting remote origin URL...')
|
||||
LogHelper.info('Getting previous tag...')
|
||||
|
||||
const remoteOriginResult = await execa('git', [
|
||||
'config',
|
||||
'--get',
|
||||
'remote.origin.url'
|
||||
])
|
||||
const gitTagResult = await execa('git', ['tag'])
|
||||
|
||||
const repoUrl = remoteOriginResult.stdout
|
||||
.trim()
|
||||
.replace(/\.git$/, '')
|
||||
const previousTag = gitTagResult.stdout.trim().split('\n').pop() || ''
|
||||
const changelogData = await fs.promises.readFile(changelog, 'utf8')
|
||||
const compareUrl = `${repoUrl}/compare/${previousTag}...v${version}`
|
||||
let tmpData = await fs.promises.readFile(
|
||||
`scripts/tmp/${tmpChangelog}`,
|
||||
'utf8'
|
||||
)
|
||||
|
||||
LogHelper.success(`Remote origin URL gotten: ${repoUrl}.git`)
|
||||
LogHelper.success(`Previous tag gotten: ${previousTag}`)
|
||||
|
||||
if (previousTag !== '') {
|
||||
tmpData = tmpData.replace(version, `[${version}](${compareUrl})`)
|
||||
}
|
||||
|
||||
try {
|
||||
await fs.promises.writeFile(changelog, `${tmpData}${changelogData}`)
|
||||
await fs.promises.unlink(`scripts/tmp/${tmpChangelog}`)
|
||||
LogHelper.success(`${changelog} generated`)
|
||||
resolve()
|
||||
} catch (error) {
|
||||
LogHelper.error(`Failed to write into file: ${error}`)
|
||||
}
|
||||
} catch (e) {
|
||||
LogHelper.error(`Error during git commands: ${e}`)
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,36 @@
|
||||
import { LogHelper } from '@/helpers/log-helper'
|
||||
import { LoaderHelper } from '@/helpers/loader-helper'
|
||||
|
||||
import updateVersion from './update-version'
|
||||
import generateChangelog from './generate-changelog'
|
||||
|
||||
/**
|
||||
* Main entry of the release preparation
|
||||
*/
|
||||
;(async () => {
|
||||
LoaderHelper.start()
|
||||
LogHelper.info('Preparing for release...')
|
||||
|
||||
const { argv } = process
|
||||
const version = argv[2].toLowerCase()
|
||||
const semverRegex =
|
||||
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/
|
||||
|
||||
if (version.match(semverRegex) !== null) {
|
||||
try {
|
||||
await updateVersion(version)
|
||||
await generateChangelog(version)
|
||||
|
||||
LogHelper.success('Hooray! Leon is ready to be released!')
|
||||
LoaderHelper.stop()
|
||||
} catch (e) {
|
||||
LogHelper.error(e)
|
||||
LoaderHelper.stop()
|
||||
}
|
||||
} else {
|
||||
LogHelper.error(
|
||||
'The version number does match the Semantic Versioning rules (https://semver.org)'
|
||||
)
|
||||
LoaderHelper.stop()
|
||||
}
|
||||
})()
|
||||
@@ -0,0 +1,29 @@
|
||||
import fs from 'node:fs'
|
||||
|
||||
import { LogHelper } from '@/helpers/log-helper'
|
||||
|
||||
/**
|
||||
* Update version number in files which need version number
|
||||
*/
|
||||
export default (version) =>
|
||||
new Promise(async (resolve, reject) => {
|
||||
LogHelper.info('Updating version...')
|
||||
|
||||
try {
|
||||
const packageJSONPath = 'package.json'
|
||||
const packageJSON = JSON.parse(
|
||||
await fs.promises.readFile(packageJSONPath, 'utf8')
|
||||
)
|
||||
packageJSON.version = version
|
||||
await fs.promises.writeFile(
|
||||
packageJSONPath,
|
||||
`${JSON.stringify(packageJSON, null, 2)}\n`
|
||||
)
|
||||
|
||||
LogHelper.success(`Version updated to ${version}`)
|
||||
resolve()
|
||||
} catch (e) {
|
||||
LogHelper.error(`Error while updating version: ${e}`)
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user