Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const spawn = require('child_process').spawn
- const path = require('path')
- const spawnPromise = (command, args, options) => new Promise(
- (resolve, reject) => {
- const task = spawn(command, args, options)
- const { stdout } = task
- stdout.on('data', (data) => {
- resolve(data)
- })
- task.on('exit', (code) => {
- if (code === 0) {
- resolve()
- } else {
- if (args === undefined) { args = [] }
- // console.error(chalk.red.bold(`❯ 💣 Failed on ${command} ${args.join(' ')}`))
- reject(code)
- }
- })
- }
- )
- async function stash_before_release() {
- await spawnPromise(
- 'git',
- [
- "stash"
- ],
- )
- }
- async function fetch() {
- await spawnPromise(
- 'git',
- [
- "fetch"
- ],
- )
- }
- async function pull_branch(branch) {
- await spawnPromise(
- 'git',
- [
- "checkout",
- branch
- ],
- )
- await spawnPromise(
- 'git',
- [
- "pull",
- "-pr",
- branch
- ],
- )
- }
- async function lastReleaseNumber() {
- const result = await spawnPromise(
- 'git',
- [
- "log",
- "--merges",
- "--pretty=format:%s",
- ],
- )
- return result.toString().split("\n").slice(0,20).find(commitMessage => commitMessage.toLowerCase().includes('release') )
- }
- function getVersionNumber(line) {
- const regexVersion = /(\d+).(\d+).(\d+)/
- const version = regexVersion.exec(line);
- return version && version || new Error("Wrong value provided for version string check\n\n")
- }
- function start_release(releaseNumberArray, type){
- const version = sumVersioningChanges(releaseNumberArray, type)
- // const result = await spawnPromise(
- // 'git',
- // [
- // "release",
- // "start",
- // version,
- // ],
- // )
- return version
- }
- async function changePackageJson(type) {
- return await spawnPromise(
- 'npm',
- [
- "version",
- type
- ],
- )
- }
- const mountSummedVersionString = array => array.join('.')
- const sumVersioningChanges = (lastVersionArray, type) => {
- let changed = false;
- let newVersionArray = lastVersionArray.slice(1,4)
- let version = 0
- if (type.toLowerCase() === 'major') {
- version = parseInt(newVersionArray[0], 10) + 1
- newVersionArray[0] = version
- newVersionArray[1] = 0
- newVersionArray[2] = 0
- changed = true
- } else if (type.toLowerCase() === 'minor') {
- version = parseInt(newVersionArray[1], 10) + 1
- newVersionArray[1] = version
- newVersionArray[2] = 0
- changed = true
- } else if (type.toLowerCase() === 'patch') {
- version = parseInt(newVersionArray[2], 10) + 1
- newVersionArray[2] = version
- changed = true
- }
- if(!changed){
- throw new Error('Must provide a type for release in: [minor, major or patch]')
- }
- return mountSummedVersionString(newVersionArray)
- }
- async function main(changeType 'patch') {
- // await stash_before_release()
- // await fetch();
- const lastCommitMessageRelease = await lastReleaseNumber();
- const releaseNumberArray = getVersionNumber(lastCommitMessageRelease)
- // await pull_branch('dev')
- // await pull_branch('master')
- const newV = start_release(releaseNumberArray, changeType)
- console.log(newV)
- }
- // main('patch')
- changePackageJson('1.1.2')
- module.exports = {
- // spawnPromise: spawnPromise,
- // writeIdSync: writeIdSync,
- // isIdFreshSync: isIdFreshSync
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement