@lakutata/cli 1.0.22 → 1.0.25

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/build/Deploy.js CHANGED
@@ -2,14 +2,24 @@
2
2
  "use strict";
3
3
  (async () => {
4
4
  const path = require('path');
5
+ const args = require('args');
5
6
  const inquirer = require('inquirer');
6
7
  const shelljs = require('shelljs');
7
8
  const moment = require('moment-timezone');
8
9
  const packageJson = require(path.resolve(process.cwd(), './package.json'));
9
- const argvLen = process.argv.length;
10
- const REGISTRY_ADDR = process.argv[argvLen - 1];
11
- const DOCKERFILE_PATH = process.argv[argvLen - 2];
10
+ args
11
+ .option('dockerfile', 'Dockerfile文件路径', './Dockerfile')
12
+ .option('repository', '镜像仓库地址')
13
+ .option('username', '镜像仓库用户名')
14
+ .option('password', '镜像仓库密码')
15
+ .option('platform', '构建平台')
16
+ .option('tagLatest', '是否为镜像打上latest的标签');
17
+ const flags = args.parse(process.argv);
18
+ const REGISTRY_ADDR = flags.repository;
19
+ const DOCKERFILE_PATH = flags.dockerfile;
12
20
  const REPOSITORY_ADDR = new URL(`repo://${REGISTRY_ADDR}`).hostname;
21
+ if (!DOCKERFILE_PATH)
22
+ throw new Error('未指定Dockerfile文件路径');
13
23
  if (!REGISTRY_ADDR)
14
24
  throw new Error('未配置仓库地址');
15
25
  const TIMESTAMP = Date.now();
@@ -22,46 +32,45 @@
22
32
  });
23
33
  });
24
34
  };
25
- const account = await inquirer.prompt([
26
- {
27
- type: 'input',
28
- name: 'username',
29
- message: 'Docker仓库账号'
30
- },
31
- {
32
- type: 'password',
33
- name: 'password',
34
- message: 'Docker仓库密码',
35
- mask: '*'
36
- }
37
- ]);
38
- const settings = await inquirer.prompt([
39
- {
40
- type: 'list',
41
- name: 'platform',
42
- message: '目标构建平台架构',
43
- choices: [
44
- 'linux/amd64',
45
- 'linux/arm64',
46
- 'linux/riscv64',
47
- 'linux/ppc64le',
48
- 'linux/s390x',
49
- 'linux/386',
50
- 'linux/arm/v7',
51
- 'linux/arm/v6'
52
- ]
53
- },
54
- {
55
- type: 'confirm',
56
- name: 'tagLatest',
57
- message: '是否为镜像打上latest标签',
58
- default: false
59
- }
60
- ]);
61
- const tagLatest = settings.tagLatest;
35
+ const platforms = [
36
+ 'linux/amd64',
37
+ 'linux/arm64',
38
+ 'linux/riscv64',
39
+ 'linux/ppc64le',
40
+ 'linux/s390x',
41
+ 'linux/386',
42
+ 'linux/arm/v7',
43
+ 'linux/arm/v6'
44
+ ];
45
+ const username = flags.username ? flags.username : (await inquirer.prompt({
46
+ type: 'input',
47
+ name: 'username',
48
+ message: 'Docker仓库账号'
49
+ })).username;
50
+ const password = flags.password ? flags.password : (await inquirer.prompt({
51
+ type: 'password',
52
+ name: 'password',
53
+ message: 'Docker仓库密码',
54
+ mask: '*'
55
+ })).password;
56
+ const platform = flags.platform ? flags.platform : (await inquirer.prompt({
57
+ type: 'list',
58
+ name: 'platform',
59
+ message: '目标构建平台架构',
60
+ choices: platforms
61
+ })).platform;
62
+ let tagLatest = flags.tagLatest ? flags.tagLatest : (await inquirer.prompt({
63
+ type: 'confirm',
64
+ name: 'tagLatest',
65
+ message: '是否为镜像打上latest标签',
66
+ default: false
67
+ })).tagLatest;
68
+ if (typeof tagLatest === 'string') {
69
+ tagLatest = tagLatest !== 'false';
70
+ }
62
71
  try {
63
- await execPromise(`docker login --username=${account.username} ${REPOSITORY_ADDR} -p${account.password}`);
64
- shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${settings.platform} .`);
72
+ await execPromise(`docker login --username=${username} ${REPOSITORY_ADDR} -p${password}`);
73
+ shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} .`);
65
74
  shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`);
66
75
  if (tagLatest) {
67
76
  shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`);
@@ -1 +1 @@
1
- {"version":3,"file":"Deploy.js","sourceRoot":"","sources":["../src/Deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Deploy.js","sourceRoot":"","sources":["../src/Deploy.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,7 @@ async function CreateDockerFileManipulator(projectPath, tsConfigFilePath, direct
72
72
  const dockerfiles = {};
73
73
  if (productionRepository) {
74
74
  dockerfiles.Dockerfile = generateDockerfileContent(timezone, 'production', outDir, 'node', mainEntry);
75
- packageJson.scripts.deploy = `lakutata-deploy ./Dockerfile ${productionRepository}`;
75
+ packageJson.scripts.deploy = `lakutata-deploy --dockerfile ./Dockerfile --repository ${productionRepository}`;
76
76
  }
77
77
  if (((_b = packageJson === null || packageJson === void 0 ? void 0 : packageJson.scripts) === null || _b === void 0 ? void 0 : _b.test) && developmentRepository) {
78
78
  const testScriptString = packageJson.scripts.test;
@@ -103,7 +103,7 @@ async function CreateDockerFileManipulator(projectPath, tsConfigFilePath, direct
103
103
  }
104
104
  if (testEntryPoint && runtime) {
105
105
  dockerfiles.DockerfileDev = generateDockerfileContent(timezone, 'development', outDir, runtime, testEntryPoint);
106
- packageJson.scripts['deploy:dev'] = `lakutata-deploy ./DockerfileDev ${developmentRepository}`;
106
+ packageJson.scripts['deploy:dev'] = `lakutata-deploy --dockerfile ./DockerfileDev --repository ${developmentRepository}`;
107
107
  }
108
108
  }
109
109
  for (const dockerfileName of Object.keys(dockerfiles)) {
@@ -1 +1 @@
1
- {"version":3,"file":"CreateDockerFileManipulator.js","sourceRoot":"","sources":["../../../src/lib/manipulators/CreateDockerFileManipulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateDockerFileManipulator.js","sourceRoot":"","sources":["../../../src/lib/manipulators/CreateDockerFileManipulator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lakutata/cli",
3
- "version": "1.0.22",
3
+ "version": "1.0.25",
4
4
  "description": "Lakutata CLI Tool",
5
5
  "main": "./build/CLI.js",
6
6
  "types": "./build/CLI.d.ts",
@@ -35,6 +35,8 @@
35
35
  "author": "alex.ma",
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
+ "@types/args": "^5.0.0",
39
+ "args": "^5.0.3",
38
40
  "inquirer": "^8.2.4",
39
41
  "moment-timezone": "^0.5.34",
40
42
  "package-json": "^7.0.0",
package/src/Deploy.ts CHANGED
@@ -1,14 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
  (async () => {
3
3
  const path = require('path')
4
+ const args = require('args')
4
5
  const inquirer = require('inquirer')
5
6
  const shelljs = require('shelljs')
6
7
  const moment = require('moment-timezone')
7
8
  const packageJson = require(path.resolve(process.cwd(), './package.json'))
8
- const argvLen = process.argv.length
9
- const REGISTRY_ADDR = process.argv[argvLen - 1]
10
- const DOCKERFILE_PATH = process.argv[argvLen - 2]
9
+ args
10
+ .option('dockerfile', 'Dockerfile文件路径', './Dockerfile')
11
+ .option('repository', '镜像仓库地址')
12
+ .option('username', '镜像仓库用户名')
13
+ .option('password', '镜像仓库密码')
14
+ .option('platform', '构建平台')
15
+ .option('tagLatest', '是否为镜像打上latest的标签')
16
+ const flags = args.parse(process.argv)
17
+ const REGISTRY_ADDR = flags.repository
18
+ const DOCKERFILE_PATH = flags.dockerfile
11
19
  const REPOSITORY_ADDR = new URL(`repo://${REGISTRY_ADDR}`).hostname
20
+ if (!DOCKERFILE_PATH) throw new Error('未指定Dockerfile文件路径')
12
21
  if (!REGISTRY_ADDR) throw new Error('未配置仓库地址')
13
22
  const TIMESTAMP = Date.now()
14
23
  const IMAGE_BASE_NAME = `lakutata_tmp_image_${TIMESTAMP}`
@@ -20,46 +29,53 @@
20
29
  })
21
30
  })
22
31
  }
23
- const account = await inquirer.prompt([
32
+ const platforms = [
33
+ 'linux/amd64',
34
+ 'linux/arm64',
35
+ 'linux/riscv64',
36
+ 'linux/ppc64le',
37
+ 'linux/s390x',
38
+ 'linux/386',
39
+ 'linux/arm/v7',
40
+ 'linux/arm/v6'
41
+ ]
42
+ const username = flags.username ? flags.username : (await inquirer.prompt(
24
43
  {
25
44
  type: 'input',
26
45
  name: 'username',
27
46
  message: 'Docker仓库账号'
28
- },
47
+ }
48
+ )).username
49
+ const password = flags.password ? flags.password : (await inquirer.prompt(
29
50
  {
30
51
  type: 'password',
31
52
  name: 'password',
32
53
  message: 'Docker仓库密码',
33
54
  mask: '*'
34
55
  }
35
- ])
36
- const settings = await inquirer.prompt([
56
+ )).password
57
+ const platform = flags.platform ? flags.platform : (await inquirer.prompt(
37
58
  {
38
59
  type: 'list',
39
60
  name: 'platform',
40
61
  message: '目标构建平台架构',
41
- choices: [
42
- 'linux/amd64',
43
- 'linux/arm64',
44
- 'linux/riscv64',
45
- 'linux/ppc64le',
46
- 'linux/s390x',
47
- 'linux/386',
48
- 'linux/arm/v7',
49
- 'linux/arm/v6'
50
- ]
51
- },
62
+ choices: platforms
63
+ }
64
+ )).platform
65
+ let tagLatest = flags.tagLatest ? flags.tagLatest : (await inquirer.prompt(
52
66
  {
53
67
  type: 'confirm',
54
68
  name: 'tagLatest',
55
69
  message: '是否为镜像打上latest标签',
56
70
  default: false
57
71
  }
58
- ])
59
- const tagLatest: boolean = settings.tagLatest
72
+ )).tagLatest
73
+ if (typeof tagLatest === 'string') {
74
+ tagLatest = tagLatest !== 'false'
75
+ }
60
76
  try {
61
- await execPromise(`docker login --username=${account.username} ${REPOSITORY_ADDR} -p${account.password}`)
62
- shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${settings.platform} .`)
77
+ await execPromise(`docker login --username=${username} ${REPOSITORY_ADDR} -p${password}`)
78
+ shelljs.exec(`docker buildx build -f ${DOCKERFILE_PATH} -t ${IMAGE_BASE_NAME}:${IMAGE_VERSION} --platform=${platform} .`)
63
79
  shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:${IMAGE_VERSION}`)
64
80
  if (tagLatest) {
65
81
  shelljs.exec(`docker tag ${IMAGE_BASE_NAME}:${IMAGE_VERSION} ${REGISTRY_ADDR}:latest`)
@@ -72,7 +72,7 @@ export async function CreateDockerFileManipulator(projectPath: string, tsConfigF
72
72
  const dockerfiles: { [key: string]: string } = {}
73
73
  if (productionRepository) {
74
74
  dockerfiles.Dockerfile = generateDockerfileContent(timezone, 'production', outDir, 'node', mainEntry)
75
- packageJson.scripts.deploy = `lakutata-deploy ./Dockerfile ${productionRepository}`
75
+ packageJson.scripts.deploy = `lakutata-deploy --dockerfile ./Dockerfile --repository ${productionRepository}`
76
76
  }
77
77
  if (packageJson?.scripts?.test && developmentRepository) {
78
78
  //有测试主入口并且仓库地址被正确配置
@@ -102,7 +102,7 @@ export async function CreateDockerFileManipulator(projectPath: string, tsConfigF
102
102
  }
103
103
  if (testEntryPoint && runtime) {
104
104
  dockerfiles.DockerfileDev = generateDockerfileContent(timezone, 'development', outDir, runtime, testEntryPoint)
105
- packageJson.scripts['deploy:dev'] = `lakutata-deploy ./DockerfileDev ${developmentRepository}`
105
+ packageJson.scripts['deploy:dev'] = `lakutata-deploy --dockerfile ./DockerfileDev --repository ${developmentRepository}`
106
106
  }
107
107
  }
108
108
  for (const dockerfileName of Object.keys(dockerfiles)) {