@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
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import * as program from 'commander';
|
|
2
|
-
import { handlerProfileFile } from '../../utils/handler-set-config';
|
|
3
|
-
import logger from '../../utils/logger';
|
|
4
|
-
import i18n from '../../utils/i18n';
|
|
5
|
-
import {CommandError} from '../../error/command-error';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
program
|
|
9
|
-
.name('s set output-color')
|
|
10
|
-
.usage('[options] [name]')
|
|
11
|
-
.helpOption('-h, --help', i18n.__('Display help for command'))
|
|
12
|
-
.description(`i18n.__('Here you can set whether the output has color.')
|
|
13
|
-
|
|
14
|
-
${i18n.__('Example')}:
|
|
15
|
-
# ${i18n.__('If your want output colorful')}:
|
|
16
|
-
$ s set output-color enable
|
|
17
|
-
# ${i18n.__('If your want output with default color')}:
|
|
18
|
-
$ s set output-color disable
|
|
19
|
-
`)
|
|
20
|
-
.parse(process.argv);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
(async () => {
|
|
24
|
-
let openColorStr = '';
|
|
25
|
-
if (program.args.length > 0) {
|
|
26
|
-
openColorStr = program.args[0];
|
|
27
|
-
} else {
|
|
28
|
-
return program.help();
|
|
29
|
-
}
|
|
30
|
-
let openColorFlag: boolean;
|
|
31
|
-
if (openColorStr === 'enable') {
|
|
32
|
-
logger.colorSwitch(true);
|
|
33
|
-
openColorFlag = true;
|
|
34
|
-
logger.success('Color output enable');
|
|
35
|
-
} else if (openColorStr === 'disable') {
|
|
36
|
-
logger.colorSwitch(false);
|
|
37
|
-
openColorFlag = false;
|
|
38
|
-
logger.success('Color output disable');
|
|
39
|
-
} else {
|
|
40
|
-
return program.help();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
await handlerProfileFile({
|
|
44
|
-
data: openColorFlag,
|
|
45
|
-
configKey: 'output-color'
|
|
46
|
-
});
|
|
47
|
-
})().catch((err) => {
|
|
48
|
-
throw new CommandError(err.message);
|
|
49
|
-
});
|
package/src/utils/analysis.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export class Analysis {
|
|
2
|
-
protected componentOrderKeyMap: { [key: string]: any } = {};
|
|
3
|
-
constructor(protected readonly parsedObj: any, protected readonly dependenciesMap: any) {
|
|
4
|
-
}
|
|
5
|
-
private getComponentOrderKeyMap(projKeys: string[]) {
|
|
6
|
-
projKeys.forEach((key: string) => {
|
|
7
|
-
this.componentOrderKeyMap[key] = 1;
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
private calculateOrderNumber(componentKeys: string[]) {
|
|
12
|
-
componentKeys.forEach((key: string) => {
|
|
13
|
-
const dependenciesInstance = this.dependenciesMap[key];
|
|
14
|
-
Object.keys(dependenciesInstance).forEach(_key => {
|
|
15
|
-
if (this.componentOrderKeyMap[_key]) {
|
|
16
|
-
this.componentOrderKeyMap[_key] += dependenciesInstance[_key];
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
getProjectOrder() {
|
|
22
|
-
|
|
23
|
-
const componentKeys = Object.keys(this.dependenciesMap).filter(key => key !== 'Global');
|
|
24
|
-
this.getComponentOrderKeyMap(componentKeys); //
|
|
25
|
-
this.calculateOrderNumber(componentKeys);
|
|
26
|
-
const projectArray = Object.keys(this.componentOrderKeyMap).map((key) => {
|
|
27
|
-
return { name: key, order: this.componentOrderKeyMap[key] };
|
|
28
|
-
});
|
|
29
|
-
return projectArray.sort((item1, item2) => {
|
|
30
|
-
return item2.order - item1.order;
|
|
31
|
-
}).map((item) => item.name);
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import logger from './logger';
|
|
3
|
-
import { handlerProfileFile, getConfig } from './handler-set-config';
|
|
4
|
-
import { getHistoryFile } from './storage';
|
|
5
|
-
import {printn} from './common';
|
|
6
|
-
import * as fs from 'fs-extra';
|
|
7
|
-
import { SERVERLESS_CHECK_VERSION } from '../constants/static-variable';
|
|
8
|
-
import { GetManager } from '../config/get/get-manager';
|
|
9
|
-
import { providerArray } from '../config/common/common';
|
|
10
|
-
const pkg = require('../../package.json');
|
|
11
|
-
|
|
12
|
-
interface CheckVersionResult {
|
|
13
|
-
[key: string]: any
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export class CheckVersion {
|
|
17
|
-
checkVersionResult: CheckVersionResult;
|
|
18
|
-
hasCheckedToday = false;
|
|
19
|
-
|
|
20
|
-
async init() {
|
|
21
|
-
await this.checkTime();
|
|
22
|
-
await this.getVersion();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async showMessage() {
|
|
26
|
-
const isSelectVersion: boolean = process.argv.includes('-v') || process.argv.includes('--version');
|
|
27
|
-
const { status, statusText, data } = this.checkVersionResult;
|
|
28
|
-
const isNewVersion: boolean = data.version === pkg.version;
|
|
29
|
-
const isRequestSucc: boolean = status === undefined || !(status === 200 && statusText === 'OK');
|
|
30
|
-
if (!isSelectVersion) {
|
|
31
|
-
// 当天还没有输出过相关信息 && 如果请求成功 || 不是最新的版本
|
|
32
|
-
if (!this.hasCheckedToday && (isRequestSucc || !isNewVersion)) {
|
|
33
|
-
const release_version = `Release: ${data.version}`;
|
|
34
|
-
const local_version = `Local : ${pkg.version}`;
|
|
35
|
-
const release_version_line_length = 36 - release_version.length;
|
|
36
|
-
const local_version_line_length = 36 - local_version.length;
|
|
37
|
-
logger.log('\n ╭──────────────────────────────────────────╮');
|
|
38
|
-
logger.log(' │ Serverless Tool │');
|
|
39
|
-
logger.log(' │ │');
|
|
40
|
-
logger.log(' │ ' + release_version + printn(release_version_line_length, ' ') + '│');
|
|
41
|
-
logger.log(' │ ' + local_version + printn(local_version_line_length, ' ') + '│');
|
|
42
|
-
logger.log(' │ │');
|
|
43
|
-
logger.log(' │ │');
|
|
44
|
-
logger.log(' │ You can upgrade through: │');
|
|
45
|
-
logger.log(' │ npm install @serverless-devs/s -g │');
|
|
46
|
-
logger.log(' ╰──────────────────────────────────────────╯\n');
|
|
47
|
-
}
|
|
48
|
-
} else {
|
|
49
|
-
if (isNewVersion) {
|
|
50
|
-
logger.log(`Serverless Tool Version: ${pkg.version} `);
|
|
51
|
-
console.log('\n\n');
|
|
52
|
-
} else {
|
|
53
|
-
logger.log('Serverless Tool Version: ');
|
|
54
|
-
logger.log(` Release: ${data.version} `);
|
|
55
|
-
logger.log(` Local : ${pkg.version} `);
|
|
56
|
-
logger.log('');
|
|
57
|
-
logger.log(' You can upgrade through : npm install @serverless-devs/s -g');
|
|
58
|
-
logger.log(' Update information:');
|
|
59
|
-
data.message.forEach((message: any, index: any) => {
|
|
60
|
-
logger.log(` ${index + 1}. ${message}`);
|
|
61
|
-
});
|
|
62
|
-
console.log('\n\n');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private async getVersion() {
|
|
68
|
-
|
|
69
|
-
let SERVERLESS_CHECK_VERSION_URL;
|
|
70
|
-
try {
|
|
71
|
-
const lang = (await handlerProfileFile({ read: true, filePath: 'set-config.yml' }))['locale'] || 'en';
|
|
72
|
-
SERVERLESS_CHECK_VERSION_URL = SERVERLESS_CHECK_VERSION + '?lang=' + lang;
|
|
73
|
-
} catch (err) {
|
|
74
|
-
SERVERLESS_CHECK_VERSION_URL = SERVERLESS_CHECK_VERSION;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
let analysis = getConfig('analysis');
|
|
80
|
-
if (analysis || analysis === undefined) {
|
|
81
|
-
const historyFile = getHistoryFile();
|
|
82
|
-
const historyCmds = fs.readFileSync(historyFile, 'utf-8');
|
|
83
|
-
const getManager = new GetManager();
|
|
84
|
-
const providerMap: any = {};
|
|
85
|
-
for (let i = 0;i < providerArray.length;i++) {
|
|
86
|
-
await getManager.initAccessData({'Provider': providerArray[i]});
|
|
87
|
-
const tempData = await getManager.getUserSecretID({'Provider': providerArray[i]});
|
|
88
|
-
if (providerArray[i] === 'alibaba') {
|
|
89
|
-
providerMap[providerArray[i]] = providerMap[providerArray[i]] || [];
|
|
90
|
-
// eslint-disable-next-line guard-for-in
|
|
91
|
-
for (const item in tempData) {
|
|
92
|
-
providerMap[providerArray[i]].push(tempData[item]['AccountID']);
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
providerMap[providerArray[i]] = Object.keys(tempData).length;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
let postData: string;
|
|
100
|
-
try {
|
|
101
|
-
postData = JSON.stringify({'Account': providerMap, 'History': historyCmds});
|
|
102
|
-
} catch (ex) {
|
|
103
|
-
postData = String({'Account': providerMap, 'History': historyCmds});
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
try {
|
|
107
|
-
this.checkVersionResult = await axios.post(SERVERLESS_CHECK_VERSION_URL, {state: 1, data: postData}, {
|
|
108
|
-
timeout: 2000
|
|
109
|
-
});
|
|
110
|
-
fs.removeSync(historyFile);
|
|
111
|
-
} catch (ex) {}
|
|
112
|
-
} else {
|
|
113
|
-
try {
|
|
114
|
-
this.checkVersionResult = await axios.post(SERVERLESS_CHECK_VERSION_URL, {state: 0}, {
|
|
115
|
-
timeout: 2000
|
|
116
|
-
});
|
|
117
|
-
} catch (ex) {}
|
|
118
|
-
}
|
|
119
|
-
} catch (e) {
|
|
120
|
-
this.checkVersionResult = {};
|
|
121
|
-
}
|
|
122
|
-
await handlerProfileFile({
|
|
123
|
-
data: Date.now(),
|
|
124
|
-
configKey: 'check-version-time',
|
|
125
|
-
filePath: 'cache.yml'
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// 当天是否验证过
|
|
130
|
-
private async checkTime() {
|
|
131
|
-
const profile = await handlerProfileFile({ read: true, filePath: 'cache.yml' });
|
|
132
|
-
const checkVersionTime = profile['check-version-time'];
|
|
133
|
-
console.log();
|
|
134
|
-
//
|
|
135
|
-
if (checkVersionTime) {
|
|
136
|
-
this.hasCheckedToday = new Date(checkVersionTime).toDateString() === new Date().toDateString();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
package/src/utils/command.ts
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import {Command} from 'commander';
|
|
2
|
-
import axios from 'axios';
|
|
3
|
-
import logger from './logger';
|
|
4
|
-
import * as storage from './storage';
|
|
5
|
-
import {CheckVersion} from './check-version';
|
|
6
|
-
import {Parse} from './parse';
|
|
7
|
-
import * as fs from 'fs-extra';
|
|
8
|
-
import * as os from 'os';
|
|
9
|
-
import createUniversalCommand from '../command';
|
|
10
|
-
|
|
11
|
-
const BASE_API_URL = 'https://tool.serverlessfans.com';
|
|
12
|
-
const COMMAND_DESC_URL = '/api/package/command';
|
|
13
|
-
export async function getCommandDetail(name: any, provider: any, version:any): Promise<Array<any>> {
|
|
14
|
-
const url: any = `${BASE_API_URL}${COMMAND_DESC_URL}`;
|
|
15
|
-
let command_list: any = [];
|
|
16
|
-
try {
|
|
17
|
-
const result: any = await axios.get(url, {
|
|
18
|
-
params: {
|
|
19
|
-
name, provider, version
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
if (result.data && result.data.Response) {
|
|
23
|
-
const command = result.data.Response.Command || {};
|
|
24
|
-
command_list = Object.keys(command).map((key) => {
|
|
25
|
-
return {
|
|
26
|
-
name: key,
|
|
27
|
-
desc: command[key]
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
} catch (e) {
|
|
32
|
-
logger.error(e.message);
|
|
33
|
-
}
|
|
34
|
-
return command_list;
|
|
35
|
-
}
|
|
36
|
-
export async function getParsedTemplateObj(templateFile: any) {
|
|
37
|
-
const parse = new Parse(templateFile);
|
|
38
|
-
const parsedObj = parse.getOriginalParsedObj();
|
|
39
|
-
return await parse.getRealVariables(parsedObj);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function getCustomerCommandInfo(parsedTemplateObj: any): Array<string> {
|
|
43
|
-
|
|
44
|
-
return Object.keys(parsedTemplateObj).filter(key => key !== 'Global');
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export async function createCustomerCommand(templateFile: string): Promise<Array<any>> {
|
|
48
|
-
const customerCommands : any = [];
|
|
49
|
-
const doc = await getParsedTemplateObj(templateFile);
|
|
50
|
-
const commandListPromise = getCustomerCommandInfo(doc).map(async (projectName) => {
|
|
51
|
-
const projectDocDetail = doc[projectName];
|
|
52
|
-
const { Provider, Component } = projectDocDetail;
|
|
53
|
-
const commandList = await getCommandDetail(Component, Provider, '');
|
|
54
|
-
return { projectName, commandList, projectDocDetail };
|
|
55
|
-
});
|
|
56
|
-
const commondListDetail = await Promise.all(commandListPromise);
|
|
57
|
-
commondListDetail.forEach(({ projectName, commandList, projectDocDetail }) => {
|
|
58
|
-
const customerCommand = new Command(projectName);
|
|
59
|
-
commandList.forEach(async (command) => {
|
|
60
|
-
const { name: commandName, desc } = command;
|
|
61
|
-
const universialCommandInstance = await createUniversalCommand(commandName, projectName, desc);
|
|
62
|
-
customerCommand.addCommand(universialCommandInstance);
|
|
63
|
-
});
|
|
64
|
-
customerCommands.push(customerCommand);
|
|
65
|
-
});
|
|
66
|
-
return customerCommands;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export function registerCommandChecker(program: any) {
|
|
70
|
-
program.on('command:*', (cmds: any) => {
|
|
71
|
-
const commands = program.commands.map((command: any) => command.name());
|
|
72
|
-
|
|
73
|
-
if (!commands.includes(cmds[0])) {
|
|
74
|
-
logger.error(` error: unknown command ${cmds[0]}`);
|
|
75
|
-
logger.error();
|
|
76
|
-
program.help();
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export async function registerExitOverride(program: any) {
|
|
82
|
-
const checkVersion = new CheckVersion();
|
|
83
|
-
await checkVersion.init();
|
|
84
|
-
program.exitOverride(async () => {
|
|
85
|
-
checkVersion.showMessage();
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export async function registerCustomerCommand(system_command: any, templateFile: string) {
|
|
90
|
-
if (templateFile) {
|
|
91
|
-
const customerCommands = await createCustomerCommand(templateFile);
|
|
92
|
-
customerCommands.forEach((command) => {
|
|
93
|
-
system_command.addCommand(command);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
export async function regiserUniversalCommand(system_command: any, templateFile: string) {
|
|
98
|
-
if (templateFile) {
|
|
99
|
-
const parsedTemplateObj = await getParsedTemplateObj(templateFile);
|
|
100
|
-
const customerCommands = getCustomerCommandInfo(parsedTemplateObj);
|
|
101
|
-
if ( process.argv[2] && !customerCommands.includes( process.argv[2])) {
|
|
102
|
-
system_command.addCommand(createUniversalCommand( process.argv[2]));
|
|
103
|
-
} else if ( process.argv[2] && customerCommands.includes( process.argv[2]) && process.argv[3] && !customerCommands.includes( process.argv[3])) {
|
|
104
|
-
system_command.addCommand(createUniversalCommand( process.argv[3]));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
export function registerVerbose(program: any) {
|
|
110
|
-
if (process.argv.includes('--verbose')) {
|
|
111
|
-
process.env.VERBOSE = program.verbose;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export function recordCommandHistory(argv: string[]) {
|
|
116
|
-
const file = storage.getHistoryFile();
|
|
117
|
-
fs.appendFileSync(file, argv.join(',') + os.EOL);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
export default registerCommandChecker;
|
package/src/utils/common.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export function checkAndReturnTemplateFile() {
|
|
7
|
-
const currentDir = process.cwd();
|
|
8
|
-
const index = process.argv.indexOf('-t') || process.argv.indexOf('--template');
|
|
9
|
-
if (index !== -1) {
|
|
10
|
-
const tempFileIndex = index + 1;
|
|
11
|
-
const tempFileName = process.argv[tempFileIndex];
|
|
12
|
-
if (tempFileName) {
|
|
13
|
-
if (tempFileName.endsWith('.yaml') || tempFileName.endsWith('.yml')) {
|
|
14
|
-
if (fs.existsSync(path.join(currentDir, tempFileName))) {
|
|
15
|
-
process.argv.splice(index, 2);
|
|
16
|
-
return path.join(currentDir, tempFileName);
|
|
17
|
-
} else if (fs.existsSync(tempFileName)) {
|
|
18
|
-
process.argv.splice(index, 2);
|
|
19
|
-
return tempFileName;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (fs.existsSync(path.join(currentDir, 'template.yaml'))) {
|
|
25
|
-
return path.join(currentDir, 'template.yaml');
|
|
26
|
-
}
|
|
27
|
-
if (fs.existsSync(path.join(currentDir, 'template.yml'))) {
|
|
28
|
-
return path.join(currentDir, 'template.yml');
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function checkTemplateFile(templateFile: string) {
|
|
34
|
-
if (fs.existsSync(templateFile)) {
|
|
35
|
-
return templateFile;
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export function printn(n: number, str = ' ') {
|
|
42
|
-
let temp_str = '';
|
|
43
|
-
for (let i = 0;i < n;i++) {
|
|
44
|
-
temp_str = temp_str + str;
|
|
45
|
-
}
|
|
46
|
-
return temp_str;
|
|
47
|
-
}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import * as URL from 'url';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as download from 'download';
|
|
4
|
-
import * as os from 'os';
|
|
5
|
-
import * as fs from 'fs-extra';
|
|
6
|
-
import axios from 'axios';
|
|
7
|
-
import * as inquirer from 'inquirer';
|
|
8
|
-
import { InitError } from '../error/init-error';
|
|
9
|
-
import * as ChildProcess from 'child_process';
|
|
10
|
-
import * as util from 'util';
|
|
11
|
-
import logger from '../utils/logger';
|
|
12
|
-
import { PackageType } from '../utils/package-type';
|
|
13
|
-
import { RepoTemplate } from './repo-template-entity';
|
|
14
|
-
import i18n from './i18n';
|
|
15
|
-
import { SERVERLESS_GET_PACKAGE_PROVIDER, SERVERLESS_GET_APP_INFO_URL } from '../constants/static-variable';
|
|
16
|
-
// eslint-disable-next-line no-unused-vars
|
|
17
|
-
import {ProgressService, ProgressType, ProgressBarOptions} from '@serverless-devs/s-progress-bar';
|
|
18
|
-
const got = require('got');
|
|
19
|
-
import {green} from 'colors';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export class DownloadManager {
|
|
23
|
-
constructor() {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Download template from app center
|
|
29
|
-
* @param packageType: package type, such as application, component or plugin
|
|
30
|
-
* @param packageName: package name
|
|
31
|
-
* @param outputDir: outputDir
|
|
32
|
-
* @param provider: package provider, will promopt if not given
|
|
33
|
-
*/
|
|
34
|
-
async downloadTemplateFromAppCenter(packageType: PackageType, packageName: string, outputDir: string, provider?: string) {
|
|
35
|
-
if (packageType !== PackageType.plugin && !provider) {
|
|
36
|
-
try {
|
|
37
|
-
provider = await this.getPackageProvider(packageType, packageName);
|
|
38
|
-
logger.info(' Init Information:');
|
|
39
|
-
logger.info(i18n.__(` Package: {{package}} Provider: {{provider}}`, {'package': packageName, 'provider': provider}));
|
|
40
|
-
} catch (err) {
|
|
41
|
-
throw new InitError(err.message);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
const url = await this.getPackageDownloadUrl(packageType, packageName, provider);
|
|
47
|
-
await this.downloadTemplateByUrl({
|
|
48
|
-
zipFile: url,
|
|
49
|
-
hasSubPath: false
|
|
50
|
-
}, outputDir);
|
|
51
|
-
// logger.success('Download Success......');
|
|
52
|
-
} catch (err) {
|
|
53
|
-
throw err;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async downloadTemplateByUrl(template: RepoTemplate, outputDir: string) {
|
|
58
|
-
const uuid = this.generateUUID();
|
|
59
|
-
const srcDirName = path.join(os.tmpdir(), `${uuid}`);
|
|
60
|
-
try {
|
|
61
|
-
await this.proxyDownload(template.zipFile, srcDirName, { extract: true, strip: 1 });
|
|
62
|
-
} catch (err) {
|
|
63
|
-
throw new InitError('Download template by url failed, error: {{msg}}', { msg: err.message });
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (!template.hasSubPath) {
|
|
67
|
-
fs.copySync(srcDirName, outputDir, { dereference: true });
|
|
68
|
-
} else {
|
|
69
|
-
const srcSubDirName = path.join(srcDirName, template.subPath || '');
|
|
70
|
-
const destSubDirName = path.join(outputDir, template.subPath || '');
|
|
71
|
-
fs.copySync(srcSubDirName, destSubDirName, { dereference: true });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async downloadTemplateByGitClone(url: URL.Url, outputDir: string) {
|
|
76
|
-
let cmd = `git clone ${url.href} ${outputDir}`;
|
|
77
|
-
const exec = util.promisify(ChildProcess.exec);
|
|
78
|
-
try {
|
|
79
|
-
await exec(cmd);
|
|
80
|
-
} catch (err) {
|
|
81
|
-
throw err;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
private async getPackageProvider(packageType: PackageType, project: string): Promise<string> {
|
|
86
|
-
const options = {
|
|
87
|
-
url: SERVERLESS_GET_PACKAGE_PROVIDER,
|
|
88
|
-
type: 'get',
|
|
89
|
-
timeout: 5000,
|
|
90
|
-
headers: {},
|
|
91
|
-
params: {
|
|
92
|
-
name: project,
|
|
93
|
-
type: PackageType[packageType]
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
let result;
|
|
98
|
-
try {
|
|
99
|
-
result = await axios.request(options);
|
|
100
|
-
} catch (err) {
|
|
101
|
-
throw new InitError('Failed to get package provider, error: {{msg}}', {msg: err.message});
|
|
102
|
-
}
|
|
103
|
-
if (result.status !== 200) {
|
|
104
|
-
throw new InitError('Failed to get package provider, http code: {{code}}', {code: result.status});
|
|
105
|
-
}
|
|
106
|
-
if (result.data.Error) {
|
|
107
|
-
throw new InitError('Failed to get package provider, error message: {{msg}}', {msg: result.data.Error});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const providers: string[] = result.data.Response.Providers;
|
|
111
|
-
if (!providers || providers.length === 0) {
|
|
112
|
-
throw new InitError('No available provider for {{project}}', {project: project});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (providers.length === 0) {
|
|
116
|
-
throw new InitError('Could not get package.');
|
|
117
|
-
} else if (providers.length === 1) {
|
|
118
|
-
return providers[0];
|
|
119
|
-
} else {
|
|
120
|
-
let {provider} = await inquirer.prompt([
|
|
121
|
-
{
|
|
122
|
-
type: 'list',
|
|
123
|
-
name: 'provider',
|
|
124
|
-
message: i18n.__('Please choose a provider'),
|
|
125
|
-
choices: providers
|
|
126
|
-
}
|
|
127
|
-
]);
|
|
128
|
-
return new Promise((resolve, reject) => {
|
|
129
|
-
resolve(provider);
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
private async getPackageDownloadUrl(
|
|
135
|
-
packageType: PackageType, packageName: any, provider: any): Promise<string> {
|
|
136
|
-
const options = {
|
|
137
|
-
url: SERVERLESS_GET_APP_INFO_URL,
|
|
138
|
-
type: 'get',
|
|
139
|
-
timeout: 5000,
|
|
140
|
-
headers: {
|
|
141
|
-
'User-Agent': 's'
|
|
142
|
-
},
|
|
143
|
-
params: {
|
|
144
|
-
name: packageName,
|
|
145
|
-
provider: provider,
|
|
146
|
-
type: PackageType[packageType]
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
const result = await axios.request(options);
|
|
150
|
-
if (result.status !== 200) {
|
|
151
|
-
throw new InitError('Failed to get package information, http code: {{code}}', { code: result.status });
|
|
152
|
-
}
|
|
153
|
-
if (!result.data.Response) {
|
|
154
|
-
throw new InitError('Failed to get package information, error: {{msg}}', { msg: result.data.Response || i18n.__('Please try again later') });
|
|
155
|
-
}
|
|
156
|
-
return new Promise((resolve, reject) => {
|
|
157
|
-
resolve(result.data.Response.Url);
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
private generateUUID(): string {
|
|
162
|
-
return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
async proxyDownload(url: string, dest: string, options: download.DownloadOptions) {
|
|
166
|
-
let len;
|
|
167
|
-
try {
|
|
168
|
-
const {headers} = await got(url, {method: 'HEAD'});
|
|
169
|
-
len = parseInt(headers['content-length'], 10);
|
|
170
|
-
} catch (err) {
|
|
171
|
-
// ignore error
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
let bar :ProgressService;
|
|
175
|
-
if (len) {
|
|
176
|
-
let pbo :ProgressBarOptions = {
|
|
177
|
-
total: len
|
|
178
|
-
};
|
|
179
|
-
bar = new ProgressService(ProgressType.Bar, pbo);
|
|
180
|
-
} else {
|
|
181
|
-
let pbo :ProgressBarOptions = {
|
|
182
|
-
total: 100,
|
|
183
|
-
width: 0
|
|
184
|
-
};
|
|
185
|
-
let format = `${green(':loading')} ${green(i18n.__('Downloading ...'))} `;
|
|
186
|
-
bar = new ProgressService(ProgressType.Loading, pbo, format);
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
await download(url, dest, options).on(
|
|
190
|
-
'downloadProgress', progress => {
|
|
191
|
-
bar.update(progress.transferred);
|
|
192
|
-
}
|
|
193
|
-
);
|
|
194
|
-
bar.terminate();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const os = require('os');
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const yaml = require('js-yaml');
|
|
5
|
-
|
|
6
|
-
interface ProfileParame {
|
|
7
|
-
data?: any;
|
|
8
|
-
configKey?: string;
|
|
9
|
-
read?: boolean;
|
|
10
|
-
filePath?: string;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface Profile {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function setConfig(key: string, value: any) {
|
|
18
|
-
const profile = getProfileFile();
|
|
19
|
-
profile[key] = value;
|
|
20
|
-
setProfileFile(profile);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export function getConfig(key: string): any {
|
|
24
|
-
const profile = getProfileFile();
|
|
25
|
-
return profile[key];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export async function handlerProfileFile(parame: ProfileParame) {
|
|
29
|
-
const filePath = parame.filePath || 'set-config.yml';
|
|
30
|
-
const profPath = path.join(os.homedir(), `.s/${filePath}`);
|
|
31
|
-
const isExists = fs.existsSync(profPath);
|
|
32
|
-
|
|
33
|
-
let profile: Profile = {};
|
|
34
|
-
|
|
35
|
-
// 如果文件和目录不存在则创建,存在则读取
|
|
36
|
-
if (!isExists) {
|
|
37
|
-
const configDir = path.join(os.homedir(), '.s');
|
|
38
|
-
try {
|
|
39
|
-
fs.statSync(configDir);
|
|
40
|
-
} catch (e) {
|
|
41
|
-
await fs.mkdirSync(configDir);
|
|
42
|
-
}
|
|
43
|
-
} else {
|
|
44
|
-
try {
|
|
45
|
-
profile = yaml.safeLoad(fs.readFileSync(profPath, 'utf8')) || {};
|
|
46
|
-
} catch (e) {
|
|
47
|
-
throw e;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// 如果仅是读取,则拿到配置信息直接退出
|
|
52
|
-
if (parame.read) {
|
|
53
|
-
return profile;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// 修改配置
|
|
57
|
-
const configKey = parame.configKey || '';
|
|
58
|
-
profile[configKey] = parame.data;
|
|
59
|
-
await fs.writeFileSync(profPath, yaml.dump(profile));
|
|
60
|
-
return profile;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
function setProfileFile(profile: Profile) {
|
|
65
|
-
const profileFilePath = getDefaultProfilePath();
|
|
66
|
-
fs.writeFileSync(profileFilePath, yaml.dump(profile));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function getProfileFile() : Profile {
|
|
70
|
-
const profileFilePath = getDefaultProfilePath();
|
|
71
|
-
if (!fs.existsSync(profileFilePath)) {
|
|
72
|
-
return {};
|
|
73
|
-
}
|
|
74
|
-
try {
|
|
75
|
-
return yaml.safeLoad(fs.readFileSync(profileFilePath, 'utf8')) || {};
|
|
76
|
-
} catch (e) {
|
|
77
|
-
throw e;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function getDefaultProfilePath(): string {
|
|
82
|
-
return path.join(os.homedir(), '.s', 'set-config.yml');
|
|
83
|
-
}
|
package/src/utils/i18n.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import * as config from './handler-set-config';
|
|
2
|
-
const i18n = require('i18n');
|
|
3
|
-
|
|
4
|
-
i18n.configure({
|
|
5
|
-
logDebugFn: function (msg?:any) {},
|
|
6
|
-
logWarnFn: function (msg?:any) {},
|
|
7
|
-
logErrorFn: function (msg?:any) {},
|
|
8
|
-
locales: ['en', 'zh'],
|
|
9
|
-
directory: __dirname + '/locales',
|
|
10
|
-
register: global
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
const locale = config.getConfig('locale');
|
|
14
|
-
if (locale) {
|
|
15
|
-
i18n.setLocale(locale);
|
|
16
|
-
} else {
|
|
17
|
-
i18n.setLocale('en');
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export default i18n;
|