@wjwjq/release-helper 0.1.1 → 0.1.2

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.
@@ -9,4 +9,7 @@ assetsDir: 'dist'
9
9
 
10
10
  # nginx和assets 所属用户和用户组
11
11
  user: root
12
- userGroup: root
12
+ userGroup: root
13
+
14
+ # 指定安装模式 standalone(supervisor) 、 cluster(agent\systemd) 、 both
15
+ installMode: both
@@ -6,7 +6,18 @@ log "-----------receive parameter: $@------------"
6
6
  # exit 1
7
7
  # fi
8
8
 
9
- mode=""
9
+ mode="__INSTALL_MODE__"
10
+
11
+ if [[ "${mode}" == "standalone" ]]; then
12
+ mode=1
13
+ elif [[ "${mode}" == "cluster" ]]; then
14
+ mode=2
15
+ else
16
+ mode=''
17
+ fi
18
+
19
+
20
+ if [[ -z "${mode}" ]]; then
10
21
  while [ $# -gt 0 ]; do
11
22
  case "$1" in
12
23
  -S | -standalone)
@@ -58,6 +69,7 @@ while [ $# -gt 0 ]; do
58
69
  ;;
59
70
  esac
60
71
  done
72
+ fi
61
73
 
62
74
  if [[ -z "${mode}" ]]; then
63
75
  log_error "Fatal error: parameter -standalone or -cluster is required!"
package/dist/pack.js CHANGED
@@ -3,7 +3,7 @@ import path from 'path';
3
3
  import * as inquirer from '@inquirer/prompts';
4
4
  import pc from 'picocolors';
5
5
  import * as tar from 'tar';
6
- import { __work_dir, __releaseDir, __dirname, releaseConf } from './prepare.js';
6
+ import { checkEnvInfo, __work_dir, __releaseDir, __dirname, releaseConf } from './prepare.js';
7
7
  import { logger } from './logger.js';
8
8
  import 'yaml';
9
9
  import 'execa';
@@ -11,6 +11,7 @@ import 'node:url';
11
11
 
12
12
  async function pack(version) {
13
13
  try {
14
+ await checkEnvInfo();
14
15
  if (version === void 0) {
15
16
  version = await inquirer.input(
16
17
  {
@@ -50,6 +51,12 @@ async function pack(version) {
50
51
  ["__USER_GROUP__", releaseConf.userGroup]
51
52
  ]
52
53
  });
54
+ replaceFileContent({
55
+ filePath: path.resolve(projectDir, "script", "prompt.sh"),
56
+ replaced: [
57
+ ["__INSTALL_MODE__", releaseConf.installMode]
58
+ ]
59
+ });
53
60
  logger.info(pc.green(`start to replace version: ${version} in index.html`));
54
61
  replaceFileContent({
55
62
  filePath: path.resolve(assetsDir, "index.html"),
package/dist/prepare.js CHANGED
@@ -7,6 +7,7 @@ import { fileURLToPath } from 'node:url';
7
7
  import { logger } from './logger.js';
8
8
  import 'picocolors';
9
9
 
10
+ const installMode = ["standalone", "cluster", "both"];
10
11
  const __work_dir = process.env.INIT_CWD || process.cwd();
11
12
  const __releaseDir = path.resolve(__work_dir, ".release");
12
13
  const __filename = fileURLToPath(import.meta.url);
@@ -29,7 +30,8 @@ const releaseConf = Object.assign({
29
30
  /** 打包后资源 相对工作区所在路径 默认dist/*/
30
31
  assetsDir: "dist",
31
32
  user: "root",
32
- userGroup: "root"
33
+ userGroup: "root",
34
+ installMode: "both"
33
35
  }, parseConf(__releaseConfPath));
34
36
  const $ = execa({ encoding: "utf8" });
35
37
  async function prepare() {
@@ -72,6 +74,10 @@ async function checkEnvInfo() {
72
74
  logger.error(`The field: [${field}] is required in .release/release.conf.yaml!`);
73
75
  process.exit(1);
74
76
  }
77
+ if (field === "installMode" && !installMode.includes(value)) {
78
+ logger.error(`The field: [${field}]'s value should be one of ${installMode.join(" | ")}`);
79
+ process.exit(1);
80
+ }
75
81
  }
76
82
  }
77
83
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wjwjq/release-helper",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "generate deployment package for frontend, include nginx...",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -9,4 +9,7 @@ assetsDir: 'dist'
9
9
 
10
10
  # nginx和assets 所属用户和用户组
11
11
  user: root
12
- userGroup: root
12
+ userGroup: root
13
+
14
+ # 指定安装模式 standalone(supervisor) 、 cluster(agent\systemd) 、 both
15
+ installMode: both
@@ -6,7 +6,18 @@ log "-----------receive parameter: $@------------"
6
6
  # exit 1
7
7
  # fi
8
8
 
9
- mode=""
9
+ mode="__INSTALL_MODE__"
10
+
11
+ if [[ "${mode}" == "standalone" ]]; then
12
+ mode=1
13
+ elif [[ "${mode}" == "cluster" ]]; then
14
+ mode=2
15
+ else
16
+ mode=''
17
+ fi
18
+
19
+
20
+ if [[ -z "${mode}" ]]; then
10
21
  while [ $# -gt 0 ]; do
11
22
  case "$1" in
12
23
  -S | -standalone)
@@ -58,6 +69,7 @@ while [ $# -gt 0 ]; do
58
69
  ;;
59
70
  esac
60
71
  done
72
+ fi
61
73
 
62
74
  if [[ -z "${mode}" ]]; then
63
75
  log_error "Fatal error: parameter -standalone or -cluster is required!"
package/src/pack.ts CHANGED
@@ -5,12 +5,13 @@ import * as inquirer from "@inquirer/prompts"
5
5
  import pc from "picocolors"
6
6
  import * as tar from 'tar'
7
7
 
8
- import { __work_dir, __releaseDir, __dirname, releaseConf } from './prepare'
8
+ import { __work_dir, __releaseDir, __dirname, releaseConf, checkEnvInfo } from './prepare'
9
9
  import { logger } from "./logger"
10
10
 
11
11
  export async function pack(version?: string) {
12
12
  try {
13
-
13
+ await checkEnvInfo();
14
+
14
15
  if (version === undefined) {
15
16
  version = await inquirer.input(
16
17
  {
@@ -66,6 +67,14 @@ export async function pack(version?: string) {
66
67
  ]
67
68
  })
68
69
 
70
+ // 替换安装模式
71
+ replaceFileContent({
72
+ filePath: path.resolve(projectDir, 'script', 'prompt.sh'),
73
+ replaced: [
74
+ ['__INSTALL_MODE__', releaseConf.installMode],
75
+ ]
76
+ })
77
+
69
78
  logger.info(pc.green(`start to replace version: ${version} in index.html`))
70
79
 
71
80
  replaceFileContent({
package/src/prepare.ts CHANGED
@@ -8,6 +8,8 @@ import { fileURLToPath } from "node:url";
8
8
 
9
9
  import { logger } from './logger';
10
10
 
11
+ const installMode = ['standalone', 'cluster', 'both'] as const;
12
+
11
13
  export type ReleaseConf = {
12
14
  /** gitlab 仓库地址 */
13
15
  host: string
@@ -20,6 +22,8 @@ export type ReleaseConf = {
20
22
  /** nginx和assets 所属用户和用户组 默认: root*/
21
23
  user: string
22
24
  userGroup: string
25
+ /* 指定安装模式 standalone(supervisor) 、 cluster(agent\systemd) 、 both */
26
+ installMode: (typeof installMode)[number]
23
27
  }
24
28
 
25
29
  // 获取项目根目录
@@ -41,7 +45,7 @@ function parseConf(file: string) {
41
45
  }
42
46
  }
43
47
 
44
- export const releaseConf = Object.assign({
48
+ export const releaseConf: Required<ReleaseConf> = Object.assign({
45
49
  host: '',
46
50
  token: '',
47
51
  /** 打包脚本 默认npm run build */
@@ -49,7 +53,8 @@ export const releaseConf = Object.assign({
49
53
  /** 打包后资源 相对工作区所在路径 默认dist/*/
50
54
  assetsDir: 'dist',
51
55
  user: 'root',
52
- userGroup: 'root'
56
+ userGroup: 'root',
57
+ installMode: 'both'
53
58
  }, parseConf(__releaseConfPath));
54
59
 
55
60
  export const $ = execa({ encoding: 'utf8' });
@@ -105,6 +110,11 @@ export async function checkEnvInfo() {
105
110
  logger.error(`The field: [${field}] is required in .release/release.conf.yaml!`);
106
111
  process.exit(1);
107
112
  }
113
+
114
+ if(field === 'installMode' && !installMode.includes(value as (typeof installMode)[number])){
115
+ logger.error(`The field: [${field}]'s value should be one of ${installMode.join(' | ')}`);
116
+ process.exit(1);
117
+ }
108
118
  }
109
119
  }
110
120