eitri-cli 1.4.0-beta.6 → 1.4.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eitri-cli",
3
- "version": "1.4.0-beta.6",
3
+ "version": "1.4.0-beta.7",
4
4
  "description": "Command Line Interface to make \"Eitri-App\" with code and fire.",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -78,7 +78,7 @@
78
78
  "lint-staged": "^9.5.0",
79
79
  "nock": "^13.3.0",
80
80
  "puppeteer": "^21.4.1",
81
- "semantic-release": "^22.0.5"
81
+ "semantic-release": "^22.0.8"
82
82
  },
83
83
  "resolutions": {
84
84
  "lodash": "4.17.21",
@@ -17,6 +17,7 @@ const trackingService = new TrackingService(blindGuardian)
17
17
  const targetService = new TargetService(workspace)
18
18
  const vegvisirService = new VegvisirService()
19
19
  const standardVersion = require('standard-version')
20
+ const releaseService = require('../service/ReleaseService')
20
21
 
21
22
  module.exports = async function pushVersion(cmdObj) {
22
23
  try {
@@ -44,7 +45,7 @@ module.exports = async function pushVersion(cmdObj) {
44
45
  if (cmdObj?.release) {
45
46
  console.log("Iniciando geração de versão com CI")
46
47
  try {
47
- await releaseGenerator(cmdObj)
48
+ await releaseService()
48
49
  const lastTag = childProcess.execSync('git describe --tags --abbrev=0').toString().trim();
49
50
  const newVersion = lastTag?.replace(/^v/, "");
50
51
  console.log(`Nova versão preparada: ${newVersion}`)
@@ -217,23 +218,3 @@ async function logPermissionsAndOpenPrompt(addedPermissions, removedPermissions,
217
218
  }
218
219
  }
219
220
  }
220
-
221
-
222
- async function releaseGenerator(cmdObj) {
223
- return new Promise((resolve, reject) => {
224
- standardVersion({
225
- noVerify: true,
226
- silent: true,
227
- releaseCommitMessageFormat: "[skip ci]"
228
- }).then(() => {
229
- resolve()
230
- }).catch(err => {
231
- if (cmdObj?.verbose) {
232
- console.error(`standard-version failed with message: ${err?.message}`)
233
- }
234
- const errorMessage = "Ocorreu um erro ao gerar a versão. Por favor, verifique se a versão foi gerada no Console."
235
- reject(errorMessage)
236
- })
237
-
238
- })
239
- }
@@ -0,0 +1,123 @@
1
+ const path = require('path')
2
+ const fs = require('fs')
3
+ const childProcess = require('child_process')
4
+ const rimraf = require('rimraf');
5
+
6
+ const TEMP_FOLDER_NAME = "temp_eitri_ci"
7
+ const TEMP_CHANGELOG_FILE_NAME = "CHANGELOG_TEMP"
8
+
9
+ module.exports = async function releaseService() {
10
+ _printLog(`\x1b[1m\x1b[32mIniciando Geração Automática de Versão\x1b[0m`)
11
+ await _factoryTempFolder()
12
+ await _factoryReleaseConfig()
13
+ await _downloadDependencies()
14
+ await _installDependencies()
15
+ await _updateChangeLog()
16
+ await _clearResources()
17
+ }
18
+
19
+ async function _factoryTempFolder() {
20
+ try {
21
+ fs.mkdirSync(TEMP_FOLDER_NAME, {recursive: true})
22
+ } catch (error) {
23
+ _throwError("Erro ao gerar pasta temporária", error?.message)
24
+ }
25
+ }
26
+
27
+ async function _factoryReleaseConfig() {
28
+ try {
29
+ const releasercContent = {
30
+ "branches": [
31
+ "main",
32
+ "master",
33
+ ],
34
+ "plugins": [
35
+ "@semantic-release/commit-analyzer",
36
+ "@semantic-release/release-notes-generator",
37
+ [
38
+ "@semantic-release/changelog",
39
+ {
40
+ "changelogFile": `${TEMP_CHANGELOG_FILE_NAME}.md`
41
+ }
42
+ ],
43
+ [
44
+ "@semantic-release/git",
45
+ {
46
+ "assets": [
47
+ "CHANGELOG.md",
48
+ "eitri-app.conf.js",
49
+ `!${TEMP_FOLDER_NAME}`
50
+ ],
51
+ "message": "chore(release): ${nextRelease.version}[skip ci]\n\n${nextRelease.notes}"
52
+ }
53
+ ]
54
+ ]
55
+ };
56
+
57
+ const releasercFilePath = path.join(TEMP_FOLDER_NAME, '.releaserc.json');
58
+ fs.writeFileSync(releasercFilePath, JSON.stringify(releasercContent, null, 2));
59
+ } catch (error) {
60
+ _throwError("Erro ao criar o arquivo de configuração da release", error?.message)
61
+ }
62
+ }
63
+
64
+ async function _downloadDependencies() {
65
+ _printLog("Baixando as configurações. Este processo pode demorar alguns segundos.")
66
+ childProcess.execSync(`cd ${TEMP_FOLDER_NAME}/ && npm i semantic-release @semantic-release/git @semantic-release/changelog`)
67
+ }
68
+
69
+ async function _installDependencies() {
70
+ _printLog("Instalando configuração temporária de CI. Este processo pode demorar alguns segundos.")
71
+ childProcess.execSync(`cd ${TEMP_FOLDER_NAME}/ && npx semantic-release --no-ci --no-npm-publish --no-github-publish --working-directory=${TEMP_FOLDER_NAME} --skip-verify-conditions`)
72
+ _printLog("Configuração de CI instalada", TEMP_CHANGELOG_FILE_NAME)
73
+ }
74
+
75
+ async function _updateChangeLog() {
76
+ if (fs.existsSync(`${TEMP_FOLDER_NAME}/${TEMP_CHANGELOG_FILE_NAME}.md`)) {
77
+ _printLog("Iniciando geração de changelog")
78
+ // if(fs.existsSync(""))
79
+ const contentNewChangelog = fs.readFileSync(`${TEMP_FOLDER_NAME}/${TEMP_CHANGELOG_FILE_NAME}.md`, "utf-8");
80
+ _printLog("FIM Iniciando geração de changelog")
81
+ const newPath = path.join("CHANGELOG.md")
82
+ _printLog("INICIO 2 Iniciando geração de changelog", newPath)
83
+ if (!fs.existsSync(newPath)) {
84
+ await _createChangeLogMd()
85
+ }
86
+ const contentOriginalChangelog = fs.readFileSync(newPath, "utf-8")
87
+ _printLog("FIM 2 Iniciando geração de changelog")
88
+ const newContent = contentNewChangelog + "\n\n" + contentOriginalChangelog
89
+ fs.writeFileSync(newPath, newContent)
90
+ _printLog("Changelog gerado")
91
+ }
92
+ }
93
+
94
+ async function _clearResources() {
95
+ rimraf(TEMP_FOLDER_NAME, (error) => {
96
+ if (error) {
97
+ console.error("\n" + `Erro ao remover a pasta ${TEMP_FOLDER_NAME}:`, error?.message ? error?.message : "");
98
+ reject(error)
99
+ } else {
100
+ _printLog(`Limpando pasta temporária ${TEMP_FOLDER_NAME}`);
101
+ }
102
+ });
103
+ }
104
+
105
+ async function _createChangeLogMd(newPath) {
106
+ _printLog(`Arquivo de Changelog inexistente. [Changelog: ${newPath}]`)
107
+ _printLog("Criando arquivo")
108
+ fs.writeFileSync("CHANGELOG.md", "");
109
+ }
110
+
111
+ function _printLog(text = "", isError = false) {
112
+ if (isError) {
113
+ console.error("\n" + text)
114
+ } else {
115
+ console.log("\n" + text)
116
+ }
117
+ }
118
+
119
+ function _throwError(text = "", errorMessage = "") {
120
+ const error = `${text} [message: ${errorMessage}]`
121
+ _printLog(error, !!error)
122
+ throw new Error(error)
123
+ }