@serverless-devs/s 0.0.45 → 0.1.4-18cdd23b
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/LICENSE +201 -21
- package/OWNERS +33 -0
- package/_config.yml +1 -0
- package/bin/s +1 -1
- package/lib/daemon/lib.js +327 -0
- package/lib/daemon/report.js +50 -0
- package/lib/daemon/update-cli.js +20 -0
- package/lib/daemon/update-component.js +21 -0
- package/lib/daemon/update-templates.js +19 -0
- package/lib/index.js +1732 -0
- package/package.json +73 -61
- package/readme.md +127 -0
- package/.eslintrc +0 -75
- package/README.md +0 -65
- package/bin/s-config +0 -2
- package/bin/s-config-add +0 -2
- package/bin/s-config-delete +0 -2
- package/bin/s-config-get +0 -3
- package/bin/s-config-update +0 -3
- package/bin/s-deploy +0 -2
- package/bin/s-gui +0 -2
- package/bin/s-init +0 -2
- package/bin/s-platform +0 -2
- package/bin/s-platform-delete +0 -2
- package/bin/s-platform-init +0 -2
- package/bin/s-platform-login +0 -2
- package/bin/s-platform-publish +0 -2
- package/bin/s-remove +0 -2
- package/bin/s-search +0 -2
- package/bin/s-set +0 -2
- package/bin/s-set-analysis +0 -2
- package/bin/s-set-language +0 -2
- package/bin/s-set-output-color +0 -2
- package/compile.tsconfig.json +0 -12
- package/configs/base.tsconfig.json +0 -25
- package/lib/command/command-manager.d.ts +0 -12
- package/lib/command/command-manager.d.ts.map +0 -1
- package/lib/command/command-manager.js +0 -144
- package/lib/command/command-manager.js.map +0 -1
- package/lib/command/index.d.ts +0 -2
- package/lib/command/index.d.ts.map +0 -1
- package/lib/command/index.js +0 -41
- package/lib/command/index.js.map +0 -1
- package/lib/component/hook.d.ts +0 -17
- package/lib/component/hook.d.ts.map +0 -1
- package/lib/component/hook.js +0 -201
- package/lib/component/hook.js.map +0 -1
- package/lib/component/index.d.ts +0 -53
- package/lib/component/index.d.ts.map +0 -1
- package/lib/component/index.js +0 -577
- package/lib/component/index.js.map +0 -1
- package/lib/config/add/add-manager.d.ts +0 -23
- package/lib/config/add/add-manager.d.ts.map +0 -1
- package/lib/config/add/add-manager.js +0 -282
- package/lib/config/add/add-manager.js.map +0 -1
- package/lib/config/add/index.d.ts +0 -2
- package/lib/config/add/index.d.ts.map +0 -1
- package/lib/config/add/index.js +0 -77
- package/lib/config/add/index.js.map +0 -1
- package/lib/config/common/common.d.ts +0 -7
- package/lib/config/common/common.d.ts.map +0 -1
- package/lib/config/common/common.js +0 -175
- package/lib/config/common/common.js.map +0 -1
- package/lib/config/delete/delete-manager.d.ts +0 -11
- package/lib/config/delete/delete-manager.d.ts.map +0 -1
- package/lib/config/delete/delete-manager.js +0 -133
- package/lib/config/delete/delete-manager.js.map +0 -1
- package/lib/config/delete/index.d.ts +0 -2
- package/lib/config/delete/index.d.ts.map +0 -1
- package/lib/config/delete/index.js +0 -77
- package/lib/config/delete/index.js.map +0 -1
- package/lib/config/get/get-manager.d.ts +0 -14
- package/lib/config/get/get-manager.d.ts.map +0 -1
- package/lib/config/get/get-manager.js +0 -205
- package/lib/config/get/get-manager.js.map +0 -1
- package/lib/config/get/index.d.ts +0 -2
- package/lib/config/get/index.d.ts.map +0 -1
- package/lib/config/get/index.js +0 -86
- package/lib/config/get/index.js.map +0 -1
- package/lib/config/index.d.ts +0 -2
- package/lib/config/index.d.ts.map +0 -1
- package/lib/config/index.js +0 -15
- package/lib/config/index.js.map +0 -1
- package/lib/config/update/index.d.ts +0 -2
- package/lib/config/update/index.d.ts.map +0 -1
- package/lib/config/update/index.js +0 -83
- package/lib/config/update/index.js.map +0 -1
- package/lib/config/update/update-manager.d.ts +0 -23
- package/lib/config/update/update-manager.d.ts.map +0 -1
- package/lib/config/update/update-manager.js +0 -208
- package/lib/config/update/update-manager.js.map +0 -1
- package/lib/constants/static-variable.d.ts +0 -12
- package/lib/constants/static-variable.d.ts.map +0 -1
- package/lib/constants/static-variable.js +0 -15
- package/lib/constants/static-variable.js.map +0 -1
- package/lib/entity.d.ts +0 -11
- package/lib/entity.d.ts.map +0 -1
- package/lib/entity.js +0 -3
- package/lib/entity.js.map +0 -1
- package/lib/error/command-error.d.ts +0 -5
- package/lib/error/command-error.d.ts.map +0 -1
- package/lib/error/command-error.js +0 -26
- package/lib/error/command-error.js.map +0 -1
- package/lib/error/config-delete-error.d.ts +0 -5
- package/lib/error/config-delete-error.d.ts.map +0 -1
- package/lib/error/config-delete-error.js +0 -26
- package/lib/error/config-delete-error.js.map +0 -1
- package/lib/error/config-error.d.ts +0 -5
- package/lib/error/config-error.d.ts.map +0 -1
- package/lib/error/config-error.js +0 -26
- package/lib/error/config-error.js.map +0 -1
- package/lib/error/config-get-error.d.ts +0 -5
- package/lib/error/config-get-error.d.ts.map +0 -1
- package/lib/error/config-get-error.js +0 -26
- package/lib/error/config-get-error.js.map +0 -1
- package/lib/error/config-update-error.d.ts +0 -5
- package/lib/error/config-update-error.d.ts.map +0 -1
- package/lib/error/config-update-error.js +0 -26
- package/lib/error/config-update-error.js.map +0 -1
- package/lib/error/init-error.d.ts +0 -5
- package/lib/error/init-error.d.ts.map +0 -1
- package/lib/error/init-error.js +0 -26
- package/lib/error/init-error.js.map +0 -1
- package/lib/error/login-error.d.ts +0 -5
- package/lib/error/login-error.d.ts.map +0 -1
- package/lib/error/login-error.js +0 -26
- package/lib/error/login-error.js.map +0 -1
- package/lib/error/platform-delete-error.d.ts +0 -5
- package/lib/error/platform-delete-error.d.ts.map +0 -1
- package/lib/error/platform-delete-error.js +0 -26
- package/lib/error/platform-delete-error.js.map +0 -1
- package/lib/error/platform-init-error.d.ts +0 -5
- package/lib/error/platform-init-error.d.ts.map +0 -1
- package/lib/error/platform-init-error.js +0 -26
- package/lib/error/platform-init-error.js.map +0 -1
- package/lib/error/platform-publish-error.d.ts +0 -5
- package/lib/error/platform-publish-error.d.ts.map +0 -1
- package/lib/error/platform-publish-error.js +0 -26
- package/lib/error/platform-publish-error.js.map +0 -1
- package/lib/error/search-error.d.ts +0 -5
- package/lib/error/search-error.d.ts.map +0 -1
- package/lib/error/search-error.js +0 -26
- package/lib/error/search-error.js.map +0 -1
- package/lib/error/serverless-error.d.ts +0 -4
- package/lib/error/serverless-error.d.ts.map +0 -1
- package/lib/error/serverless-error.js +0 -20
- package/lib/error/serverless-error.js.map +0 -1
- package/lib/error/set-analysis-error.d.ts +0 -5
- package/lib/error/set-analysis-error.d.ts.map +0 -1
- package/lib/error/set-analysis-error.js +0 -26
- package/lib/error/set-analysis-error.js.map +0 -1
- package/lib/error/set-language-error.d.ts +0 -5
- package/lib/error/set-language-error.d.ts.map +0 -1
- package/lib/error/set-language-error.js +0 -26
- package/lib/error/set-language-error.js.map +0 -1
- package/lib/gui/gui-service.d.ts +0 -11
- package/lib/gui/gui-service.d.ts.map +0 -1
- package/lib/gui/gui-service.js +0 -276
- package/lib/gui/gui-service.js.map +0 -1
- package/lib/gui/index.d.ts +0 -2
- package/lib/gui/index.d.ts.map +0 -1
- package/lib/gui/index.js +0 -67
- package/lib/gui/index.js.map +0 -1
- package/lib/init/init-manager.d.ts +0 -9
- package/lib/init/init-manager.d.ts.map +0 -1
- package/lib/init/init-manager.js +0 -171
- package/lib/init/init-manager.js.map +0 -1
- package/lib/init/init-message.d.ts +0 -6
- package/lib/init/init-message.d.ts.map +0 -1
- package/lib/init/init-message.js +0 -9
- package/lib/init/init-message.js.map +0 -1
- package/lib/init/init.d.ts +0 -2
- package/lib/init/init.d.ts.map +0 -1
- package/lib/init/init.js +0 -87
- package/lib/init/init.js.map +0 -1
- package/lib/platform/delete/index.d.ts +0 -2
- package/lib/platform/delete/index.d.ts.map +0 -1
- package/lib/platform/delete/index.js +0 -89
- package/lib/platform/delete/index.js.map +0 -1
- package/lib/platform/delete/platform-delete-manager.d.ts +0 -4
- package/lib/platform/delete/platform-delete-manager.d.ts.map +0 -1
- package/lib/platform/delete/platform-delete-manager.js +0 -100
- package/lib/platform/delete/platform-delete-manager.js.map +0 -1
- package/lib/platform/index.d.ts +0 -2
- package/lib/platform/index.d.ts.map +0 -1
- package/lib/platform/index.js +0 -25
- package/lib/platform/index.js.map +0 -1
- package/lib/platform/init/index.d.ts +0 -2
- package/lib/platform/init/index.d.ts.map +0 -1
- package/lib/platform/init/index.js +0 -70
- package/lib/platform/init/index.js.map +0 -1
- package/lib/platform/init/platform-init-manager.d.ts +0 -4
- package/lib/platform/init/platform-init-manager.d.ts.map +0 -1
- package/lib/platform/init/platform-init-manager.js +0 -24
- package/lib/platform/init/platform-init-manager.js.map +0 -1
- package/lib/platform/login/index.d.ts +0 -2
- package/lib/platform/login/index.d.ts.map +0 -1
- package/lib/platform/login/index.js +0 -68
- package/lib/platform/login/index.js.map +0 -1
- package/lib/platform/login/login-manager.d.ts +0 -15
- package/lib/platform/login/login-manager.d.ts.map +0 -1
- package/lib/platform/login/login-manager.js +0 -176
- package/lib/platform/login/login-manager.js.map +0 -1
- package/lib/platform/publish/index.d.ts +0 -2
- package/lib/platform/publish/index.d.ts.map +0 -1
- package/lib/platform/publish/index.js +0 -93
- package/lib/platform/publish/index.js.map +0 -1
- package/lib/platform/publish/platform-publish-manager.d.ts +0 -5
- package/lib/platform/publish/platform-publish-manager.d.ts.map +0 -1
- package/lib/platform/publish/platform-publish-manager.js +0 -115
- package/lib/platform/publish/platform-publish-manager.js.map +0 -1
- package/lib/plugin/index.d.ts +0 -20
- package/lib/plugin/index.d.ts.map +0 -1
- package/lib/plugin/index.js +0 -175
- package/lib/plugin/index.js.map +0 -1
- package/lib/s.d.ts +0 -2
- package/lib/s.d.ts.map +0 -1
- package/lib/s.js +0 -134
- package/lib/s.js.map +0 -1
- package/lib/search/search.d.ts +0 -2
- package/lib/search/search.d.ts.map +0 -1
- package/lib/search/search.js +0 -233
- package/lib/search/search.js.map +0 -1
- package/lib/set/analysis/index.d.ts +0 -2
- package/lib/set/analysis/index.d.ts.map +0 -1
- package/lib/set/analysis/index.js +0 -84
- package/lib/set/analysis/index.js.map +0 -1
- package/lib/set/index.d.ts +0 -2
- package/lib/set/index.d.ts.map +0 -1
- package/lib/set/index.js +0 -16
- package/lib/set/index.js.map +0 -1
- package/lib/set/language/index.d.ts +0 -2
- package/lib/set/language/index.d.ts.map +0 -1
- package/lib/set/language/index.js +0 -73
- package/lib/set/language/index.js.map +0 -1
- package/lib/set/output-color/index.d.ts +0 -2
- package/lib/set/output-color/index.d.ts.map +0 -1
- package/lib/set/output-color/index.js +0 -87
- package/lib/set/output-color/index.js.map +0 -1
- package/lib/utils/analysis.d.ts +0 -12
- package/lib/utils/analysis.d.ts.map +0 -1
- package/lib/utils/analysis.js +0 -42
- package/lib/utils/analysis.js.map +0 -1
- package/lib/utils/check-version.d.ts +0 -13
- package/lib/utils/check-version.d.ts.map +0 -1
- package/lib/utils/check-version.js +0 -241
- package/lib/utils/check-version.js.map +0 -1
- package/lib/utils/command.d.ts +0 -14
- package/lib/utils/command.d.ts.map +0 -1
- package/lib/utils/command.js +0 -251
- package/lib/utils/command.js.map +0 -1
- package/lib/utils/common.d.ts +0 -4
- package/lib/utils/common.d.ts.map +0 -1
- package/lib/utils/common.js +0 -50
- package/lib/utils/common.js.map +0 -1
- package/lib/utils/download-manager.d.ts +0 -23
- package/lib/utils/download-manager.d.ts.map +0 -1
- package/lib/utils/download-manager.js +0 -302
- package/lib/utils/download-manager.js.map +0 -1
- package/lib/utils/handler-set-config.d.ts +0 -14
- package/lib/utils/handler-set-config.d.ts.map +0 -1
- package/lib/utils/handler-set-config.js +0 -122
- package/lib/utils/handler-set-config.js.map +0 -1
- package/lib/utils/i18n.d.ts +0 -3
- package/lib/utils/i18n.d.ts.map +0 -1
- package/lib/utils/i18n.js +0 -21
- package/lib/utils/i18n.js.map +0 -1
- package/lib/utils/locales/en.json +0 -9
- package/lib/utils/locales/zh.json +0 -203
- package/lib/utils/logger.d.ts +0 -18
- package/lib/utils/logger.d.ts.map +0 -1
- package/lib/utils/logger.js +0 -196
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/package-type.d.ts +0 -6
- package/lib/utils/package-type.d.ts.map +0 -1
- package/lib/utils/package-type.js +0 -10
- package/lib/utils/package-type.js.map +0 -1
- package/lib/utils/parse.d.ts +0 -26
- package/lib/utils/parse.d.ts.map +0 -1
- package/lib/utils/parse.js +0 -229
- package/lib/utils/parse.js.map +0 -1
- package/lib/utils/repo-template-entity.d.ts +0 -12
- package/lib/utils/repo-template-entity.d.ts.map +0 -1
- package/lib/utils/repo-template-entity.js +0 -3
- package/lib/utils/repo-template-entity.js.map +0 -1
- package/lib/utils/start-service.d.ts +0 -22
- package/lib/utils/start-service.d.ts.map +0 -1
- package/lib/utils/start-service.js +0 -97
- package/lib/utils/start-service.js.map +0 -1
- package/lib/utils/storage.d.ts +0 -3
- package/lib/utils/storage.d.ts.map +0 -1
- package/lib/utils/storage.js +0 -23
- package/lib/utils/storage.js.map +0 -1
- package/lib/utils/url-parser.d.ts +0 -8
- package/lib/utils/url-parser.d.ts.map +0 -1
- package/lib/utils/url-parser.js +0 -58
- package/lib/utils/url-parser.js.map +0 -1
- package/scripts/tests/deploy/parse.ts +0 -0
- package/scripts/tests/download-manager-test.ts +0 -135
- package/scripts/tests/init-manager-test.ts +0 -232
- package/scripts/tests/url-parser-test.ts +0 -44
- package/src/command/command-manager.ts +0 -83
- package/src/command/index.ts +0 -42
- package/src/component/hook.ts +0 -88
- package/src/component/index.ts +0 -433
- package/src/config/add/add-manager.ts +0 -207
- package/src/config/add/index.ts +0 -45
- package/src/config/common/common.ts +0 -186
- package/src/config/delete/delete-manager.ts +0 -51
- package/src/config/delete/index.ts +0 -38
- package/src/config/get/get-manager.ts +0 -148
- package/src/config/get/index.ts +0 -49
- package/src/config/index.ts +0 -13
- package/src/config/update/index.ts +0 -46
- package/src/config/update/update-manager.ts +0 -120
- package/src/constants/static-variable.ts +0 -12
- package/src/entity.ts +0 -10
- package/src/error/command-error.ts +0 -7
- package/src/error/config-delete-error.ts +0 -7
- package/src/error/config-error.ts +0 -7
- package/src/error/config-get-error.ts +0 -7
- package/src/error/config-update-error.ts +0 -7
- package/src/error/init-error.ts +0 -7
- package/src/error/login-error.ts +0 -7
- package/src/error/platform-delete-error.ts +0 -7
- package/src/error/platform-init-error.ts +0 -7
- package/src/error/platform-publish-error.ts +0 -7
- package/src/error/search-error.ts +0 -7
- package/src/error/serverless-error.ts +0 -17
- package/src/error/set-analysis-error.ts +0 -7
- package/src/error/set-language-error.ts +0 -7
- package/src/gui/gui-service.ts +0 -183
- package/src/gui/index.ts +0 -26
- package/src/init/init-manager.ts +0 -104
- package/src/init/init-message.ts +0 -8
- package/src/init/init.ts +0 -56
- package/src/platform/delete/index.ts +0 -46
- package/src/platform/delete/platform-delete-manager.ts +0 -46
- package/src/platform/index.ts +0 -26
- package/src/platform/init/index.ts +0 -33
- package/src/platform/init/platform-init-manager.ts +0 -17
- package/src/platform/login/index.ts +0 -25
- package/src/platform/login/login-manager.ts +0 -121
- package/src/platform/publish/index.ts +0 -52
- package/src/platform/publish/platform-publish-manager.ts +0 -69
- package/src/plugin/index.ts +0 -96
- package/src/s.ts +0 -83
- package/src/search/search.ts +0 -127
- package/src/set/analysis/index.ts +0 -45
- package/src/set/index.ts +0 -19
- package/src/set/language/index.ts +0 -39
- package/src/set/output-color/index.ts +0 -49
- package/src/utils/analysis.ts +0 -36
- package/src/utils/check-version.ts +0 -139
- package/src/utils/command.ts +0 -123
- package/src/utils/common.ts +0 -47
- package/src/utils/download-manager.ts +0 -197
- package/src/utils/handler-set-config.ts +0 -83
- package/src/utils/i18n.ts +0 -21
- package/src/utils/locales/en.json +0 -9
- package/src/utils/locales/zh.json +0 -228
- package/src/utils/logger.ts +0 -84
- package/src/utils/package-type.ts +0 -3
- package/src/utils/parse.ts +0 -176
- package/src/utils/repo-template-entity.ts +0 -14
- package/src/utils/start-service.ts +0 -64
- package/src/utils/storage.ts +0 -20
- package/src/utils/url-parser.ts +0 -60
- package/templates/application/common/publish.yaml +0 -16
- package/templates/application/common/readme.md +0 -99
- package/templates/application/common/src/index.js +0 -13
- package/templates/application/common/src/template.yaml +0 -16
- package/templates/component/common/publish.yaml +0 -24
- package/templates/component/common/readme.md +0 -386
- package/templates/component/common/src/index.js +0 -18
- package/templates/component/common/src/package.json +0 -7
- package/templates/plugin/common/publish.yaml +0 -9
- package/templates/plugin/common/readme.md +0 -128
- package/templates/plugin/common/src/index.js +0 -9
package/src/component/index.ts
DELETED
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const os = require('os');
|
|
4
|
-
const util = require('util');
|
|
5
|
-
const inquirer = require('inquirer');
|
|
6
|
-
const exec = util.promisify(require('child_process').exec);
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
import axios from 'axios';
|
|
10
|
-
import i18n from '../utils/i18n';
|
|
11
|
-
import { DownloadManager } from '../utils/download-manager';
|
|
12
|
-
import { GetManager } from '../config/get/get-manager';
|
|
13
|
-
import { AddManager } from '../config/add/add-manager';
|
|
14
|
-
import * as logger from '../utils/logger';
|
|
15
|
-
import { PackageType } from '../utils/package-type';
|
|
16
|
-
import { Hook } from './hook';
|
|
17
|
-
// eslint-disable-next-line no-unused-vars
|
|
18
|
-
import { Parse } from '../utils/parse';
|
|
19
|
-
import { ConfigError } from '../error/config-error';
|
|
20
|
-
import { SERVERLESS_CHECK_COMPONENT_VERSION } from '../constants/static-variable';
|
|
21
|
-
const S_COMPONENT_BASE_PATH = path.join(os.homedir(), `.s/components`);
|
|
22
|
-
|
|
23
|
-
const TYPE_MAP = {
|
|
24
|
-
[PackageType.component]: 'Component',
|
|
25
|
-
[PackageType.plugin]: 'Plugin',
|
|
26
|
-
[PackageType.application]: 'Application'
|
|
27
|
-
};
|
|
28
|
-
export interface ComponentConfig {
|
|
29
|
-
Component: string;
|
|
30
|
-
Provider: string;
|
|
31
|
-
Access?: string;
|
|
32
|
-
Extends: any;
|
|
33
|
-
Properties: { [key: string]: any };
|
|
34
|
-
Params: any;
|
|
35
|
-
ProjectName: string;
|
|
36
|
-
}
|
|
37
|
-
export interface VersionCheckParams {
|
|
38
|
-
name: string;
|
|
39
|
-
type: PackageType;
|
|
40
|
-
provider: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export interface GenerateComponentExeParams {
|
|
44
|
-
list: Array<string>;
|
|
45
|
-
parse: Parse;
|
|
46
|
-
parsedObj: any;
|
|
47
|
-
method: string;
|
|
48
|
-
params: string;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export async function synchronizeExecuteComponentList(
|
|
52
|
-
list: any = [],
|
|
53
|
-
index: any = 0,
|
|
54
|
-
initData: any = {}
|
|
55
|
-
) {
|
|
56
|
-
if (index >= 0 && index < list.length) {
|
|
57
|
-
return await list[index]().then(async ({ name, data }: any) => {
|
|
58
|
-
initData[name] = data;
|
|
59
|
-
return await synchronizeExecuteComponentList(
|
|
60
|
-
list,
|
|
61
|
-
index + 1,
|
|
62
|
-
initData
|
|
63
|
-
);
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
return initData;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function generateSynchronizeComponentExeList(
|
|
70
|
-
{ list, parse, parsedObj, method, params }: GenerateComponentExeParams,
|
|
71
|
-
equipment: (
|
|
72
|
-
parse: Parse,
|
|
73
|
-
projectName: string,
|
|
74
|
-
parsedObj: any
|
|
75
|
-
) => Promise<ComponentConfig>
|
|
76
|
-
): Array<any> {
|
|
77
|
-
return list.map((projectName) => {
|
|
78
|
-
return () => {
|
|
79
|
-
return new Promise(async (resolve, reject) => {
|
|
80
|
-
try {
|
|
81
|
-
parsedObj.Params = params || '';
|
|
82
|
-
logger.info(i18n.__(`Start executing project {{projectName}}`, { projectName: projectName }));
|
|
83
|
-
const projectConfig = await equipment(parse, projectName, parsedObj);
|
|
84
|
-
const componentExecute = new ComponentExeCute(projectConfig, method);
|
|
85
|
-
const Output = await componentExecute.init();
|
|
86
|
-
parsedObj[projectName].Output = Output;
|
|
87
|
-
logger.info(i18n.__(`Project {{projectName}} successfully to execute \n\t`, { projectName: projectName }));
|
|
88
|
-
resolve({ name: projectName, data: Output });
|
|
89
|
-
} catch (e) {
|
|
90
|
-
if (String(e).indexOf('method does not exist') !== -1) {
|
|
91
|
-
logger.error(i18n.__(`Project {{projectName}} doesn't have the method: {{method}}`, { projectName: projectName, method: method }));
|
|
92
|
-
resolve({});
|
|
93
|
-
} else {
|
|
94
|
-
logger.error(e);
|
|
95
|
-
logger.error(i18n.__(`Project {{projectName}} failed to execute`, { projectName: projectName }));
|
|
96
|
-
resolve({ name: projectName, data: '' });
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
export class ComponentExeCute {
|
|
104
|
-
protected componentPath: string;
|
|
105
|
-
protected credentials: any;
|
|
106
|
-
protected isPackageProject = false;
|
|
107
|
-
constructor(
|
|
108
|
-
protected componentConfig: ComponentConfig,
|
|
109
|
-
protected method: string
|
|
110
|
-
) {
|
|
111
|
-
if (!fs.existsSync(S_COMPONENT_BASE_PATH)) {
|
|
112
|
-
fs.mkdirSync(S_COMPONENT_BASE_PATH);
|
|
113
|
-
}
|
|
114
|
-
let { Component: name } = this.componentConfig;
|
|
115
|
-
this.componentPath = path.join(S_COMPONENT_BASE_PATH, `/${name}`);
|
|
116
|
-
this.isPackageProject = fs.existsSync(
|
|
117
|
-
path.join(this.componentPath, '/package.json')
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
async init() {
|
|
122
|
-
let { Component: name, Provider } = this.componentConfig;
|
|
123
|
-
|
|
124
|
-
const providerOnlyPrefix = Provider.split('.')[0];
|
|
125
|
-
let credentials = await this.getCredentials();
|
|
126
|
-
|
|
127
|
-
if (!credentials) {
|
|
128
|
-
credentials = await this.setCredentials(providerOnlyPrefix);
|
|
129
|
-
}
|
|
130
|
-
this.credentials = credentials;
|
|
131
|
-
|
|
132
|
-
// 将密钥缓存到临时环境变量中
|
|
133
|
-
try {
|
|
134
|
-
process.env.temp_credentials = JSON.stringify(this.credentials);
|
|
135
|
-
} catch (e) {}
|
|
136
|
-
|
|
137
|
-
let version;
|
|
138
|
-
if (await fs.existsSync(name)) {
|
|
139
|
-
this.componentPath = name;
|
|
140
|
-
} else {
|
|
141
|
-
if (name.indexOf('@') !== -1) {
|
|
142
|
-
const temp = name.split('@');
|
|
143
|
-
name = temp[0];
|
|
144
|
-
version = temp[1];
|
|
145
|
-
if (!(name && version)) {
|
|
146
|
-
throw new Error('Could not get component name and version, please check you component content.');
|
|
147
|
-
}
|
|
148
|
-
} else {
|
|
149
|
-
version = await this.getRemoteComponentVersion({
|
|
150
|
-
name,
|
|
151
|
-
provider: providerOnlyPrefix,
|
|
152
|
-
type: PackageType.component
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
// 判断组件是否已存在
|
|
156
|
-
const tempPath = path.join(S_COMPONENT_BASE_PATH, `/${name}-${providerOnlyPrefix}@${version}`);
|
|
157
|
-
if (!(await fs.existsSync(tempPath))) {
|
|
158
|
-
logger.info(i18n.__(`No component {{name}}-{{provider}}@{{version}} is found, it will be downloaded soon, this may take a few minutes......`, { name: name, version: version, provider: providerOnlyPrefix }));
|
|
159
|
-
await this.downLoadAndUnCompressComponentV2(PackageType.component, name, providerOnlyPrefix, version);
|
|
160
|
-
}
|
|
161
|
-
this.componentPath = tempPath;
|
|
162
|
-
}
|
|
163
|
-
return await this.startExecute();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
async getCredentials() {
|
|
167
|
-
const { Provider, Access } = this.componentConfig;
|
|
168
|
-
const configUserInput = { 'Provider': Provider, 'AliasName': Access };
|
|
169
|
-
const getManager = new GetManager();
|
|
170
|
-
await getManager.initAccessData(configUserInput);
|
|
171
|
-
const providerMap: {
|
|
172
|
-
[key: string]: any;
|
|
173
|
-
} = await getManager.getUserSecretID(configUserInput);
|
|
174
|
-
const accessData = Provider && Access ? providerMap : providerMap[`${Provider}.${Access || 'default'}`];
|
|
175
|
-
if (accessData) {
|
|
176
|
-
return accessData;
|
|
177
|
-
}
|
|
178
|
-
if (!Access) {
|
|
179
|
-
|
|
180
|
-
// 2020-9-24 循环调用可能出现循环卡死
|
|
181
|
-
if (process.env['next-command-execute-flag'] === 'true') {
|
|
182
|
-
try {
|
|
183
|
-
// 使用现有的缓存密钥
|
|
184
|
-
return JSON.parse(process.env.temp_credentials || 'error');
|
|
185
|
-
} catch (e) {
|
|
186
|
-
// 抛出错误
|
|
187
|
-
throw new ConfigError('Calling @serverless-devs/s tools in Extends requires configuring Access in Yaml.');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
logger.warning('\n');
|
|
192
|
-
logger.warning(' You can configure the specified key in yaml. For example:');
|
|
193
|
-
logger.warning(`\n ${this.componentConfig.ProjectName}`);
|
|
194
|
-
logger.warning(` Component: ${this.componentConfig.Component}`);
|
|
195
|
-
logger.warning(` Provider: ${Provider}`);
|
|
196
|
-
logger.warning(' Access: Fill in the specified key here');
|
|
197
|
-
logger.warning('\n');
|
|
198
|
-
let result = '';
|
|
199
|
-
const selectObject = [];
|
|
200
|
-
Object.keys(providerMap).forEach(item => {
|
|
201
|
-
const temp = {
|
|
202
|
-
name: item.startsWith('project') ? `${item.replace('project.', 'project: ')}` : `${item.replace(Provider + '.', Provider + ': ')}`,
|
|
203
|
-
value: item
|
|
204
|
-
};
|
|
205
|
-
if (Provider) {
|
|
206
|
-
if (item.startsWith(Provider) || item.startsWith('project')) {
|
|
207
|
-
selectObject.push(temp);
|
|
208
|
-
}
|
|
209
|
-
} else {
|
|
210
|
-
selectObject.push(temp);
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
selectObject.push({ name: 'Create a new account', value: 'create' });
|
|
215
|
-
await inquirer
|
|
216
|
-
.prompt([
|
|
217
|
-
{
|
|
218
|
-
type: 'list',
|
|
219
|
-
name: 'access',
|
|
220
|
-
message: i18n.__('Please select an access:'),
|
|
221
|
-
choices: selectObject
|
|
222
|
-
}
|
|
223
|
-
])
|
|
224
|
-
.then((answers: any) => {
|
|
225
|
-
result = answers.access;
|
|
226
|
-
});
|
|
227
|
-
if (result === 'create') {
|
|
228
|
-
return undefined;
|
|
229
|
-
}
|
|
230
|
-
return providerMap[result];
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
// 没找到密钥信息
|
|
234
|
-
throw new ConfigError('Failed to get the specified key: {{access}}', {
|
|
235
|
-
access: Access
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
async setCredentials(provider: any) {
|
|
241
|
-
const addManager = new AddManager();
|
|
242
|
-
const result = await addManager.inputLengthZero(provider);
|
|
243
|
-
|
|
244
|
-
// 2020-9-23 修复部署过程中增加密钥信息,无法存储到系统的bug
|
|
245
|
-
const inputProviderAlias = `${provider}.${addManager.aliasName || 'default'}`;
|
|
246
|
-
addManager.inputFullData[inputProviderAlias] = result;
|
|
247
|
-
addManager.writeData(addManager.globalFilePath, addManager.inputFullData);
|
|
248
|
-
|
|
249
|
-
return result;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
componentExist(): boolean {
|
|
253
|
-
return fs.existsSync(this.componentPath);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
async getRemoteComponentVersion({
|
|
257
|
-
name,
|
|
258
|
-
provider,
|
|
259
|
-
type
|
|
260
|
-
}: VersionCheckParams) {
|
|
261
|
-
const url = SERVERLESS_CHECK_COMPONENT_VERSION;
|
|
262
|
-
let version = null;
|
|
263
|
-
try {
|
|
264
|
-
const result: any = await axios.get(url, {
|
|
265
|
-
params: {
|
|
266
|
-
name,
|
|
267
|
-
provider,
|
|
268
|
-
type: TYPE_MAP[type]
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
if (result.data && result.data.Response && result.data.Response.Version) {
|
|
272
|
-
version = result.data.Response.Version;
|
|
273
|
-
} else {
|
|
274
|
-
throw new Error('Please Check the provider and component');
|
|
275
|
-
}
|
|
276
|
-
} catch (e) {
|
|
277
|
-
logger.error(e.message);
|
|
278
|
-
}
|
|
279
|
-
return version;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
getLocalComponentVersion(): string | null {
|
|
283
|
-
const { Component: name } = this.componentConfig;
|
|
284
|
-
const pkgFile = path.join(S_COMPONENT_BASE_PATH, `/${name}/package.json`);
|
|
285
|
-
if (!fs.existsSync(pkgFile)) {
|
|
286
|
-
return null;
|
|
287
|
-
}
|
|
288
|
-
const componentPackageJsonObj = require(pkgFile);
|
|
289
|
-
return componentPackageJsonObj.version;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
private async preLoadNodeModules() {
|
|
293
|
-
if (
|
|
294
|
-
this.isPackageProject &&
|
|
295
|
-
!fs.existsSync(path.join(this.componentPath, 'node_modules'))
|
|
296
|
-
) {
|
|
297
|
-
logger.info('npm install');
|
|
298
|
-
const { stdout, stderr } = await exec('npm install', {
|
|
299
|
-
cwd: this.componentPath
|
|
300
|
-
});
|
|
301
|
-
if (stderr) {
|
|
302
|
-
logger.error(stderr);
|
|
303
|
-
} else {
|
|
304
|
-
logger.info(stdout);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
async downLoadAndUnCompressComponent(
|
|
310
|
-
type: PackageType,
|
|
311
|
-
name: string,
|
|
312
|
-
provider: string
|
|
313
|
-
) {
|
|
314
|
-
const downloadManager = new DownloadManager();
|
|
315
|
-
const componentPath = path.join(S_COMPONENT_BASE_PATH, `/${name}`);
|
|
316
|
-
if (!fs.existsSync(componentPath)) {
|
|
317
|
-
fs.mkdirSync(componentPath);
|
|
318
|
-
}
|
|
319
|
-
await downloadManager.downloadTemplateFromAppCenter(
|
|
320
|
-
type,
|
|
321
|
-
name,
|
|
322
|
-
componentPath,
|
|
323
|
-
provider
|
|
324
|
-
);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
async downLoadAndUnCompressComponentV2(
|
|
328
|
-
type: PackageType,
|
|
329
|
-
name: string,
|
|
330
|
-
provider: string,
|
|
331
|
-
version: string
|
|
332
|
-
): Promise<void> {
|
|
333
|
-
const downloadManager = new DownloadManager();
|
|
334
|
-
const componentPath = path.join(S_COMPONENT_BASE_PATH, `/${name}-${provider}@${version}`);
|
|
335
|
-
if (!fs.existsSync(componentPath)) {
|
|
336
|
-
fs.mkdirSync(componentPath);
|
|
337
|
-
}
|
|
338
|
-
await downloadManager.downloadTemplateFromAppCenter(
|
|
339
|
-
type,
|
|
340
|
-
name,
|
|
341
|
-
componentPath,
|
|
342
|
-
provider
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
private loadExtends(): Hook | null {
|
|
347
|
-
const { Extends = {} } = this.componentConfig;
|
|
348
|
-
const method = this.method;
|
|
349
|
-
let hookExecuteInstance = null;
|
|
350
|
-
const hooks = Extends[method];
|
|
351
|
-
if (hooks) {
|
|
352
|
-
hookExecuteInstance = new Hook(hooks);
|
|
353
|
-
}
|
|
354
|
-
return hookExecuteInstance;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
async loadPreExtends(extend: Hook | null): Promise<void> {
|
|
358
|
-
if (extend) {
|
|
359
|
-
await extend.executePreHook();
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
async loadAfterExtend(extend: Hook | null): Promise<void> {
|
|
364
|
-
if (extend) {
|
|
365
|
-
await extend.executeAfterHook();
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
async loadComponent() {
|
|
370
|
-
await this.preLoadNodeModules(); // check and install node_module
|
|
371
|
-
const componentModule = require(this.componentPath);
|
|
372
|
-
return componentModule;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
async invokeMethod(ComponentClass: any, method: string, data: any) {
|
|
376
|
-
const promise = new Promise(async (resolve, reject) => {
|
|
377
|
-
try {
|
|
378
|
-
const componentInstance = new ComponentClass();
|
|
379
|
-
const result = await componentInstance[method](data);
|
|
380
|
-
resolve(result);
|
|
381
|
-
} catch (e) {
|
|
382
|
-
reject(new Error(e.message));
|
|
383
|
-
}
|
|
384
|
-
});
|
|
385
|
-
return promise;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
async executeCommand(): Promise<any> {
|
|
389
|
-
const {
|
|
390
|
-
Properties,
|
|
391
|
-
Params,
|
|
392
|
-
Provider,
|
|
393
|
-
Access,
|
|
394
|
-
Component,
|
|
395
|
-
ProjectName
|
|
396
|
-
} = this.componentConfig;
|
|
397
|
-
|
|
398
|
-
const inputs = {
|
|
399
|
-
Properties,
|
|
400
|
-
Credentials: this.credentials,
|
|
401
|
-
Project: {
|
|
402
|
-
ProjectName,
|
|
403
|
-
Component,
|
|
404
|
-
Provider: Provider,
|
|
405
|
-
AccessAlias: Access || ''
|
|
406
|
-
},
|
|
407
|
-
Command: this.method,
|
|
408
|
-
Args: Params || '',
|
|
409
|
-
Path: {
|
|
410
|
-
ConfigPath: process.env.templateFile || ''
|
|
411
|
-
}
|
|
412
|
-
};
|
|
413
|
-
const ComponentClass = await this.loadComponent();
|
|
414
|
-
|
|
415
|
-
const data = await this.invokeMethod(
|
|
416
|
-
ComponentClass,
|
|
417
|
-
this.method,
|
|
418
|
-
inputs
|
|
419
|
-
);
|
|
420
|
-
return data;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
async startExecute(): Promise<any> {
|
|
424
|
-
let outData = {};
|
|
425
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
426
|
-
// @ts-ignore
|
|
427
|
-
const extend = process.env['skip-extends'] === 'true' ? null : await this.loadExtends();
|
|
428
|
-
await this.loadPreExtends(extend);
|
|
429
|
-
outData = await this.executeCommand();
|
|
430
|
-
await this.loadAfterExtend(extend);
|
|
431
|
-
return outData;
|
|
432
|
-
}
|
|
433
|
-
}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const os = require('os');
|
|
3
|
-
const inquirer = require('inquirer');
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
const yaml = require('js-yaml');
|
|
6
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
7
|
-
// @ts-ignore
|
|
8
|
-
import * as program from 'commander';
|
|
9
|
-
import i18n from '../../utils/i18n';
|
|
10
|
-
import logger from '../../utils/logger';
|
|
11
|
-
import { ConfigError } from '../../error/config-error';
|
|
12
|
-
import { providerArray, providerObject, providerCollection, providerAccessFormat, checkProviderList } from '../common/common';
|
|
13
|
-
|
|
14
|
-
function isEqualArray(rightFormat: Array<string>, inputFormat: Array<string>): boolean {
|
|
15
|
-
if (!(rightFormat || inputFormat)) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
if (rightFormat.length !== inputFormat.length) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
rightFormat.forEach((item) => {
|
|
22
|
-
if (!inputFormat.includes(item)) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
interface ConfigMap {[key: string]: any;}
|
|
30
|
-
|
|
31
|
-
export class AddManager {
|
|
32
|
-
globalFilePath: string;
|
|
33
|
-
inputFullData: ConfigMap; // 用户输入的inputProviderAlias为键 与 inputSecretID 为值 组成的对象
|
|
34
|
-
protected inputProviderAlias = '';
|
|
35
|
-
protected inputSecretID: any;
|
|
36
|
-
protected provider: string;
|
|
37
|
-
aliasName: string;
|
|
38
|
-
protected promptList: Array<any>;
|
|
39
|
-
protected isRightFormat = true;
|
|
40
|
-
protected context: Array<string>;
|
|
41
|
-
constructor() {
|
|
42
|
-
this.globalFilePath = path.join(os.homedir(), '.s/access.yaml');
|
|
43
|
-
this.inputFullData = {};
|
|
44
|
-
this.context = program.args;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async init(inputProviderAndAlisName: any, inputSecretCheck: any) {
|
|
48
|
-
if (program.args.length > 0) {
|
|
49
|
-
throw new ConfigError('Configuration failed');
|
|
50
|
-
} else {
|
|
51
|
-
if (inputProviderAndAlisName['Provider']) {
|
|
52
|
-
this.provider = String(inputProviderAndAlisName['Provider']).toLocaleLowerCase();
|
|
53
|
-
this.aliasName = String(inputProviderAndAlisName['AliasName'] || 'default').toLocaleLowerCase();
|
|
54
|
-
if (providerArray.indexOf(this.provider) === -1) {
|
|
55
|
-
throw new ConfigError(
|
|
56
|
-
'The cloud vendor[{{provider}}] was not found. [alibaba/aws/azure/baidu/google/huawei/tencent]',
|
|
57
|
-
{ provider: this.provider }
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
this.inputSecretID = {};
|
|
62
|
-
let inputSecretCheckKeys: Array<string> = Object.keys(inputSecretCheck); // 用户输入的秘钥对象的key
|
|
63
|
-
|
|
64
|
-
//正确秘钥形式
|
|
65
|
-
let providerAccessFormatSecret: Array<string> = providerAccessFormat[this.provider];
|
|
66
|
-
//检查用户输入的秘钥的格式与对应云厂商的格式是否相同
|
|
67
|
-
if (isEqualArray(providerAccessFormatSecret, inputSecretCheckKeys)) {
|
|
68
|
-
for (const item of inputSecretCheckKeys) {
|
|
69
|
-
this.inputSecretID[item] = inputSecretCheck[item];
|
|
70
|
-
}
|
|
71
|
-
} else {
|
|
72
|
-
throw new ConfigError(
|
|
73
|
-
'Please Input Right Secret Format: [{{providerAccessFormatSecret}}]',
|
|
74
|
-
{ providerAccessFormatSecret: providerAccessFormatSecret }
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
await this.inputLengthZero();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
await this.checkInputSecretID();
|
|
83
|
-
this.inputProviderAlias = `${this.provider}.${this.aliasName || 'default'}`;
|
|
84
|
-
this.inputFullData[this.inputProviderAlias] = this.inputSecretID;
|
|
85
|
-
this.writeData(this.globalFilePath, this.inputFullData);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
output() {
|
|
89
|
-
logger.log('');
|
|
90
|
-
logger.info(i18n.__(' Provider: {{provider}}', { provider: `${providerObject[this.provider]} (${this.provider})` }));
|
|
91
|
-
if (this.aliasName) {
|
|
92
|
-
logger.info(i18n.__(' Alias: {{alias}}', { alias: this.aliasName }));
|
|
93
|
-
}
|
|
94
|
-
// eslint-disable-next-line guard-for-in
|
|
95
|
-
for (const item in this.inputSecretID) {
|
|
96
|
-
logger.info(` ${item}: ${this.inputSecretID[item]}`);
|
|
97
|
-
}
|
|
98
|
-
logger.log('');
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// 用户输入参数为0的时候
|
|
102
|
-
async inputLengthZero(provider: any = undefined) {
|
|
103
|
-
if (!provider) {
|
|
104
|
-
{ await inquirer.prompt(checkProviderList).then((answers: any) => {
|
|
105
|
-
this.provider = answers.provider;
|
|
106
|
-
}); }
|
|
107
|
-
} else {
|
|
108
|
-
this.provider = provider.toLocaleLowerCase();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (!providerArray.includes(this.provider)) {
|
|
112
|
-
throw new ConfigError(
|
|
113
|
-
'The cloud vendor[{{provider}}] was not found. [alibaba/aws/azure/baidu/google/huawei/tencent]',
|
|
114
|
-
{ provider: this.provider }
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
try {
|
|
119
|
-
Object.keys(providerCollection).forEach((item) => {
|
|
120
|
-
if (item === this.provider) {
|
|
121
|
-
this.promptList = providerCollection[item];
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
this.promptList.push({
|
|
125
|
-
type: 'input',
|
|
126
|
-
message: i18n.__('Please create alias for key pair. If not, please enter to skip'),
|
|
127
|
-
name: 'aliasName',
|
|
128
|
-
default: 'default' // 默认值
|
|
129
|
-
});
|
|
130
|
-
} catch (err) {
|
|
131
|
-
throw new ConfigError(err.message);
|
|
132
|
-
}
|
|
133
|
-
await inquirer.prompt(this.promptList).then((answers: any) => {
|
|
134
|
-
this.inputSecretID = answers;
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
Object.keys(this.inputSecretID).forEach((item) => {
|
|
138
|
-
if (item === 'aliasName') {
|
|
139
|
-
this.aliasName = this.inputSecretID[item];
|
|
140
|
-
delete this.inputSecretID[item];
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
this.inputProviderAlias = this.provider + '.' + this.aliasName || 'default';
|
|
144
|
-
return this.inputSecretID;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// 检查用户输入的输入的inputSecretID是否为空值
|
|
148
|
-
async checkInputSecretID() {
|
|
149
|
-
// eslint-disable-next-line guard-for-in
|
|
150
|
-
for (const item in this.inputSecretID) {
|
|
151
|
-
let isTrue: boolean = String(typeof this.inputSecretID[item]) === 'string';
|
|
152
|
-
{
|
|
153
|
-
if (!this.inputSecretID[item] || !isTrue)
|
|
154
|
-
{ throw new ConfigError(
|
|
155
|
-
'The Provider[{{provider}}]: key[{{key}}] is required.',
|
|
156
|
-
{provider: providerObject[this.provider], key: item}
|
|
157
|
-
); }
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async writeFileWay(filePath: string, text: ConfigMap) {
|
|
163
|
-
this.output();
|
|
164
|
-
try {
|
|
165
|
-
await fs.writeFileSync(filePath, yaml.dump(text));
|
|
166
|
-
} catch (err) {
|
|
167
|
-
throw new ConfigError('Configuration failed');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
writeData(filePath: string, text: ConfigMap) {
|
|
172
|
-
const isExists: boolean = fs.existsSync(filePath);
|
|
173
|
-
// 当前文件不存在
|
|
174
|
-
if (!isExists) {
|
|
175
|
-
this.writeFileWay(filePath, text);
|
|
176
|
-
} else {
|
|
177
|
-
let userInformation: any = yaml.safeLoad(
|
|
178
|
-
fs.readFileSync(filePath, 'utf8')
|
|
179
|
-
);
|
|
180
|
-
// 文件存在,且不为空;
|
|
181
|
-
// eslint-disable-next-line no-eq-null,eqeqeq
|
|
182
|
-
if (userInformation != null) {
|
|
183
|
-
const userProviderAlias: Array<string> = Object.keys(userInformation);
|
|
184
|
-
const isExistProviderAlias: boolean = userProviderAlias.includes(
|
|
185
|
-
this.inputProviderAlias
|
|
186
|
-
);
|
|
187
|
-
//全局配置是否含有用户输入的provider.alias
|
|
188
|
-
if (isExistProviderAlias) {
|
|
189
|
-
throw new ConfigError(
|
|
190
|
-
'Provider + Alias already exists. You can set a different alias or modify it through: {{input}}',
|
|
191
|
-
{input: `s config update -p ${this.provider} -a ${this.aliasName || 'default'}`}
|
|
192
|
-
);
|
|
193
|
-
} else {
|
|
194
|
-
try {
|
|
195
|
-
fs.appendFileSync(filePath, yaml.dump(text));
|
|
196
|
-
this.output();
|
|
197
|
-
logger.success('Configuration successful');
|
|
198
|
-
} catch (err) {
|
|
199
|
-
throw new ConfigError('Configuration failed');
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
} else {
|
|
203
|
-
this.writeFileWay(filePath, text);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
package/src/config/add/index.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import * as program from 'commander';
|
|
2
|
-
import { AddManager } from './add-manager';
|
|
3
|
-
import i18n from '../../utils/i18n';
|
|
4
|
-
import { getInputData } from '../common/common';
|
|
5
|
-
import {CommandError} from '../../error/command-error';
|
|
6
|
-
|
|
7
|
-
const description = i18n.__('s config add help');
|
|
8
|
-
|
|
9
|
-
program
|
|
10
|
-
.name('s config add')
|
|
11
|
-
.usage('[options] [name]')
|
|
12
|
-
.helpOption('-h, --help', i18n.__('Display help for command'))
|
|
13
|
-
.option(
|
|
14
|
-
'-p, --provider [name]',
|
|
15
|
-
i18n.__(
|
|
16
|
-
'The cloud service provider. [alibaba/aws/azure/baidu/google/huawei/tencent]'
|
|
17
|
-
)
|
|
18
|
-
)
|
|
19
|
-
.option(
|
|
20
|
-
'-a, --alias-name [name]',
|
|
21
|
-
i18n.__('Key pair alias, if the alias is not set, use default instead')
|
|
22
|
-
)
|
|
23
|
-
.option('--AccountID [name]', i18n.__('Configure the AccountID'))
|
|
24
|
-
.option('--AccessKeyID [name]', i18n.__('Configure the AccessKeyID'))
|
|
25
|
-
.option('--AccessKeySecret [name]', i18n.__('Configure the AccessKeySecret'))
|
|
26
|
-
.option('--SecretID [name]', i18n.__('Configure the SecretID'))
|
|
27
|
-
.option('--SecretKey [name]', i18n.__('Configure the SecretKey'))
|
|
28
|
-
.option('--SecretAccessKey [name]', i18n.__('Configure the SecretAccessKey'))
|
|
29
|
-
.option('--KeyVault [name]', i18n.__('Configure the KeyVault'))
|
|
30
|
-
.option('--Secret [name]', i18n.__('Configure the Secret'))
|
|
31
|
-
.option('--PrivateKeyData [name]', i18n.__('Configure the PrivateKeyData'))
|
|
32
|
-
.description(description)
|
|
33
|
-
.parse(process.argv);
|
|
34
|
-
|
|
35
|
-
(async () => {
|
|
36
|
-
await new AddManager().init(
|
|
37
|
-
{
|
|
38
|
-
Provider: program.provider,
|
|
39
|
-
AliasName: program.aliasName
|
|
40
|
-
},
|
|
41
|
-
getInputData(program)
|
|
42
|
-
);
|
|
43
|
-
})().catch((err) => {
|
|
44
|
-
throw new CommandError(err.message);
|
|
45
|
-
});
|