Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. const spawn = require('child_process').spawn
  2. const path = require('path')
  3.  
  4. const spawnPromise = (command, args, options) => new Promise(
  5. (resolve, reject) => {
  6. const task = spawn(command, args, options)
  7.  
  8. const { stdout } = task
  9. stdout.on('data', (data) => {
  10. resolve(data)
  11. })
  12.  
  13. task.on('exit', (code) => {
  14. if (code === 0) {
  15. resolve()
  16. } else {
  17. if (args === undefined) { args = [] }
  18. // console.error(chalk.red.bold(`❯ 💣 Failed on ${command} ${args.join(' ')}`))
  19. reject(code)
  20. }
  21. })
  22. }
  23. )
  24.  
  25. async function stash_before_release() {
  26. await spawnPromise(
  27. 'git',
  28. [
  29. "stash"
  30. ],
  31. )
  32. }
  33.  
  34. async function fetch() {
  35. await spawnPromise(
  36. 'git',
  37. [
  38. "fetch"
  39. ],
  40. )
  41. }
  42.  
  43. async function pull_branch(branch) {
  44. await spawnPromise(
  45. 'git',
  46. [
  47. "checkout",
  48. branch
  49. ],
  50. )
  51.  
  52. await spawnPromise(
  53. 'git',
  54. [
  55. "pull",
  56. "-pr",
  57. branch
  58. ],
  59. )
  60. }
  61.  
  62. async function lastReleaseNumber() {
  63. const result = await spawnPromise(
  64. 'git',
  65. [
  66. "log",
  67. "--merges",
  68. "--pretty=format:%s",
  69. ],
  70. )
  71. return result.toString().split("\n").slice(0,20).find(commitMessage => commitMessage.toLowerCase().includes('release') )
  72. }
  73.  
  74. function getVersionNumber(line) {
  75. const regexVersion = /(\d+).(\d+).(\d+)/
  76. const version = regexVersion.exec(line);
  77. return version && version || new Error("Wrong value provided for version string check\n\n")
  78. }
  79.  
  80. function start_release(releaseNumberArray, type){
  81. const version = sumVersioningChanges(releaseNumberArray, type)
  82. // const result = await spawnPromise(
  83. // 'git',
  84. // [
  85. // "release",
  86. // "start",
  87. // version,
  88. // ],
  89. // )
  90. return version
  91. }
  92.  
  93. async function changePackageJson(type) {
  94. return await spawnPromise(
  95. 'npm',
  96. [
  97. "version",
  98. type
  99. ],
  100. )
  101. }
  102.  
  103. const mountSummedVersionString = array => array.join('.')
  104.  
  105. const sumVersioningChanges = (lastVersionArray, type) => {
  106. let changed = false;
  107. let newVersionArray = lastVersionArray.slice(1,4)
  108. let version = 0
  109. if (type.toLowerCase() === 'major') {
  110. version = parseInt(newVersionArray[0], 10) + 1
  111. newVersionArray[0] = version
  112. newVersionArray[1] = 0
  113. newVersionArray[2] = 0
  114. changed = true
  115. } else if (type.toLowerCase() === 'minor') {
  116. version = parseInt(newVersionArray[1], 10) + 1
  117. newVersionArray[1] = version
  118. newVersionArray[2] = 0
  119. changed = true
  120. } else if (type.toLowerCase() === 'patch') {
  121. version = parseInt(newVersionArray[2], 10) + 1
  122. newVersionArray[2] = version
  123. changed = true
  124. }
  125. if(!changed){
  126. throw new Error('Must provide a type for release in: [minor, major or patch]')
  127. }
  128. return mountSummedVersionString(newVersionArray)
  129. }
  130.  
  131. async function main(changeType 'patch') {
  132. // await stash_before_release()
  133. // await fetch();
  134.  
  135. const lastCommitMessageRelease = await lastReleaseNumber();
  136. const releaseNumberArray = getVersionNumber(lastCommitMessageRelease)
  137.  
  138. // await pull_branch('dev')
  139. // await pull_branch('master')
  140.  
  141. const newV = start_release(releaseNumberArray, changeType)
  142. console.log(newV)
  143. }
  144.  
  145. // main('patch')
  146. changePackageJson('1.1.2')
  147.  
  148. module.exports = {
  149. // spawnPromise: spawnPromise,
  150. // writeIdSync: writeIdSync,
  151. // isIdFreshSync: isIdFreshSync
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement