@serverless-devs/s 0.0.44 → 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.
Files changed (379) hide show
  1. package/LICENSE +201 -21
  2. package/OWNERS +33 -0
  3. package/_config.yml +1 -0
  4. package/bin/s +1 -1
  5. package/lib/daemon/lib.js +327 -0
  6. package/lib/daemon/report.js +50 -0
  7. package/lib/daemon/update-cli.js +20 -0
  8. package/lib/daemon/update-component.js +21 -0
  9. package/lib/daemon/update-templates.js +19 -0
  10. package/lib/index.js +1732 -0
  11. package/package.json +73 -61
  12. package/readme.md +127 -0
  13. package/.eslintrc +0 -75
  14. package/README.md +0 -65
  15. package/bin/s-config +0 -2
  16. package/bin/s-config-add +0 -2
  17. package/bin/s-config-delete +0 -2
  18. package/bin/s-config-get +0 -3
  19. package/bin/s-config-update +0 -3
  20. package/bin/s-deploy +0 -2
  21. package/bin/s-gui +0 -2
  22. package/bin/s-init +0 -2
  23. package/bin/s-platform +0 -2
  24. package/bin/s-platform-delete +0 -2
  25. package/bin/s-platform-init +0 -2
  26. package/bin/s-platform-login +0 -2
  27. package/bin/s-platform-publish +0 -2
  28. package/bin/s-remove +0 -2
  29. package/bin/s-search +0 -2
  30. package/bin/s-set +0 -2
  31. package/bin/s-set-analysis +0 -2
  32. package/bin/s-set-language +0 -2
  33. package/bin/s-set-output-color +0 -2
  34. package/compile.tsconfig.json +0 -12
  35. package/configs/base.tsconfig.json +0 -25
  36. package/lib/command/command-manager.d.ts +0 -12
  37. package/lib/command/command-manager.d.ts.map +0 -1
  38. package/lib/command/command-manager.js +0 -144
  39. package/lib/command/command-manager.js.map +0 -1
  40. package/lib/command/index.d.ts +0 -2
  41. package/lib/command/index.d.ts.map +0 -1
  42. package/lib/command/index.js +0 -41
  43. package/lib/command/index.js.map +0 -1
  44. package/lib/component/hook.d.ts +0 -17
  45. package/lib/component/hook.d.ts.map +0 -1
  46. package/lib/component/hook.js +0 -201
  47. package/lib/component/hook.js.map +0 -1
  48. package/lib/component/index.d.ts +0 -53
  49. package/lib/component/index.d.ts.map +0 -1
  50. package/lib/component/index.js +0 -577
  51. package/lib/component/index.js.map +0 -1
  52. package/lib/config/add/add-manager.d.ts +0 -23
  53. package/lib/config/add/add-manager.d.ts.map +0 -1
  54. package/lib/config/add/add-manager.js +0 -282
  55. package/lib/config/add/add-manager.js.map +0 -1
  56. package/lib/config/add/index.d.ts +0 -2
  57. package/lib/config/add/index.d.ts.map +0 -1
  58. package/lib/config/add/index.js +0 -77
  59. package/lib/config/add/index.js.map +0 -1
  60. package/lib/config/common/common.d.ts +0 -7
  61. package/lib/config/common/common.d.ts.map +0 -1
  62. package/lib/config/common/common.js +0 -175
  63. package/lib/config/common/common.js.map +0 -1
  64. package/lib/config/delete/delete-manager.d.ts +0 -11
  65. package/lib/config/delete/delete-manager.d.ts.map +0 -1
  66. package/lib/config/delete/delete-manager.js +0 -133
  67. package/lib/config/delete/delete-manager.js.map +0 -1
  68. package/lib/config/delete/index.d.ts +0 -2
  69. package/lib/config/delete/index.d.ts.map +0 -1
  70. package/lib/config/delete/index.js +0 -77
  71. package/lib/config/delete/index.js.map +0 -1
  72. package/lib/config/get/get-manager.d.ts +0 -14
  73. package/lib/config/get/get-manager.d.ts.map +0 -1
  74. package/lib/config/get/get-manager.js +0 -205
  75. package/lib/config/get/get-manager.js.map +0 -1
  76. package/lib/config/get/index.d.ts +0 -2
  77. package/lib/config/get/index.d.ts.map +0 -1
  78. package/lib/config/get/index.js +0 -86
  79. package/lib/config/get/index.js.map +0 -1
  80. package/lib/config/index.d.ts +0 -2
  81. package/lib/config/index.d.ts.map +0 -1
  82. package/lib/config/index.js +0 -15
  83. package/lib/config/index.js.map +0 -1
  84. package/lib/config/update/index.d.ts +0 -2
  85. package/lib/config/update/index.d.ts.map +0 -1
  86. package/lib/config/update/index.js +0 -83
  87. package/lib/config/update/index.js.map +0 -1
  88. package/lib/config/update/update-manager.d.ts +0 -23
  89. package/lib/config/update/update-manager.d.ts.map +0 -1
  90. package/lib/config/update/update-manager.js +0 -208
  91. package/lib/config/update/update-manager.js.map +0 -1
  92. package/lib/constants/static-variable.d.ts +0 -12
  93. package/lib/constants/static-variable.d.ts.map +0 -1
  94. package/lib/constants/static-variable.js +0 -15
  95. package/lib/constants/static-variable.js.map +0 -1
  96. package/lib/entity.d.ts +0 -11
  97. package/lib/entity.d.ts.map +0 -1
  98. package/lib/entity.js +0 -3
  99. package/lib/entity.js.map +0 -1
  100. package/lib/error/command-error.d.ts +0 -5
  101. package/lib/error/command-error.d.ts.map +0 -1
  102. package/lib/error/command-error.js +0 -26
  103. package/lib/error/command-error.js.map +0 -1
  104. package/lib/error/config-delete-error.d.ts +0 -5
  105. package/lib/error/config-delete-error.d.ts.map +0 -1
  106. package/lib/error/config-delete-error.js +0 -26
  107. package/lib/error/config-delete-error.js.map +0 -1
  108. package/lib/error/config-error.d.ts +0 -5
  109. package/lib/error/config-error.d.ts.map +0 -1
  110. package/lib/error/config-error.js +0 -26
  111. package/lib/error/config-error.js.map +0 -1
  112. package/lib/error/config-get-error.d.ts +0 -5
  113. package/lib/error/config-get-error.d.ts.map +0 -1
  114. package/lib/error/config-get-error.js +0 -26
  115. package/lib/error/config-get-error.js.map +0 -1
  116. package/lib/error/config-update-error.d.ts +0 -5
  117. package/lib/error/config-update-error.d.ts.map +0 -1
  118. package/lib/error/config-update-error.js +0 -26
  119. package/lib/error/config-update-error.js.map +0 -1
  120. package/lib/error/init-error.d.ts +0 -5
  121. package/lib/error/init-error.d.ts.map +0 -1
  122. package/lib/error/init-error.js +0 -26
  123. package/lib/error/init-error.js.map +0 -1
  124. package/lib/error/login-error.d.ts +0 -5
  125. package/lib/error/login-error.d.ts.map +0 -1
  126. package/lib/error/login-error.js +0 -26
  127. package/lib/error/login-error.js.map +0 -1
  128. package/lib/error/platform-delete-error.d.ts +0 -5
  129. package/lib/error/platform-delete-error.d.ts.map +0 -1
  130. package/lib/error/platform-delete-error.js +0 -26
  131. package/lib/error/platform-delete-error.js.map +0 -1
  132. package/lib/error/platform-init-error.d.ts +0 -5
  133. package/lib/error/platform-init-error.d.ts.map +0 -1
  134. package/lib/error/platform-init-error.js +0 -26
  135. package/lib/error/platform-init-error.js.map +0 -1
  136. package/lib/error/platform-publish-error.d.ts +0 -5
  137. package/lib/error/platform-publish-error.d.ts.map +0 -1
  138. package/lib/error/platform-publish-error.js +0 -26
  139. package/lib/error/platform-publish-error.js.map +0 -1
  140. package/lib/error/search-error.d.ts +0 -5
  141. package/lib/error/search-error.d.ts.map +0 -1
  142. package/lib/error/search-error.js +0 -26
  143. package/lib/error/search-error.js.map +0 -1
  144. package/lib/error/serverless-error.d.ts +0 -4
  145. package/lib/error/serverless-error.d.ts.map +0 -1
  146. package/lib/error/serverless-error.js +0 -20
  147. package/lib/error/serverless-error.js.map +0 -1
  148. package/lib/error/set-analysis-error.d.ts +0 -5
  149. package/lib/error/set-analysis-error.d.ts.map +0 -1
  150. package/lib/error/set-analysis-error.js +0 -26
  151. package/lib/error/set-analysis-error.js.map +0 -1
  152. package/lib/error/set-language-error.d.ts +0 -5
  153. package/lib/error/set-language-error.d.ts.map +0 -1
  154. package/lib/error/set-language-error.js +0 -26
  155. package/lib/error/set-language-error.js.map +0 -1
  156. package/lib/gui/gui-service.d.ts +0 -11
  157. package/lib/gui/gui-service.d.ts.map +0 -1
  158. package/lib/gui/gui-service.js +0 -276
  159. package/lib/gui/gui-service.js.map +0 -1
  160. package/lib/gui/index.d.ts +0 -2
  161. package/lib/gui/index.d.ts.map +0 -1
  162. package/lib/gui/index.js +0 -67
  163. package/lib/gui/index.js.map +0 -1
  164. package/lib/init/init-manager.d.ts +0 -9
  165. package/lib/init/init-manager.d.ts.map +0 -1
  166. package/lib/init/init-manager.js +0 -171
  167. package/lib/init/init-manager.js.map +0 -1
  168. package/lib/init/init-message.d.ts +0 -6
  169. package/lib/init/init-message.d.ts.map +0 -1
  170. package/lib/init/init-message.js +0 -9
  171. package/lib/init/init-message.js.map +0 -1
  172. package/lib/init/init.d.ts +0 -2
  173. package/lib/init/init.d.ts.map +0 -1
  174. package/lib/init/init.js +0 -87
  175. package/lib/init/init.js.map +0 -1
  176. package/lib/platform/delete/index.d.ts +0 -2
  177. package/lib/platform/delete/index.d.ts.map +0 -1
  178. package/lib/platform/delete/index.js +0 -89
  179. package/lib/platform/delete/index.js.map +0 -1
  180. package/lib/platform/delete/platform-delete-manager.d.ts +0 -4
  181. package/lib/platform/delete/platform-delete-manager.d.ts.map +0 -1
  182. package/lib/platform/delete/platform-delete-manager.js +0 -100
  183. package/lib/platform/delete/platform-delete-manager.js.map +0 -1
  184. package/lib/platform/index.d.ts +0 -2
  185. package/lib/platform/index.d.ts.map +0 -1
  186. package/lib/platform/index.js +0 -25
  187. package/lib/platform/index.js.map +0 -1
  188. package/lib/platform/init/index.d.ts +0 -2
  189. package/lib/platform/init/index.d.ts.map +0 -1
  190. package/lib/platform/init/index.js +0 -70
  191. package/lib/platform/init/index.js.map +0 -1
  192. package/lib/platform/init/platform-init-manager.d.ts +0 -4
  193. package/lib/platform/init/platform-init-manager.d.ts.map +0 -1
  194. package/lib/platform/init/platform-init-manager.js +0 -24
  195. package/lib/platform/init/platform-init-manager.js.map +0 -1
  196. package/lib/platform/login/index.d.ts +0 -2
  197. package/lib/platform/login/index.d.ts.map +0 -1
  198. package/lib/platform/login/index.js +0 -68
  199. package/lib/platform/login/index.js.map +0 -1
  200. package/lib/platform/login/login-manager.d.ts +0 -15
  201. package/lib/platform/login/login-manager.d.ts.map +0 -1
  202. package/lib/platform/login/login-manager.js +0 -176
  203. package/lib/platform/login/login-manager.js.map +0 -1
  204. package/lib/platform/publish/index.d.ts +0 -2
  205. package/lib/platform/publish/index.d.ts.map +0 -1
  206. package/lib/platform/publish/index.js +0 -93
  207. package/lib/platform/publish/index.js.map +0 -1
  208. package/lib/platform/publish/platform-publish-manager.d.ts +0 -5
  209. package/lib/platform/publish/platform-publish-manager.d.ts.map +0 -1
  210. package/lib/platform/publish/platform-publish-manager.js +0 -115
  211. package/lib/platform/publish/platform-publish-manager.js.map +0 -1
  212. package/lib/plugin/index.d.ts +0 -20
  213. package/lib/plugin/index.d.ts.map +0 -1
  214. package/lib/plugin/index.js +0 -175
  215. package/lib/plugin/index.js.map +0 -1
  216. package/lib/s.d.ts +0 -2
  217. package/lib/s.d.ts.map +0 -1
  218. package/lib/s.js +0 -134
  219. package/lib/s.js.map +0 -1
  220. package/lib/search/search.d.ts +0 -2
  221. package/lib/search/search.d.ts.map +0 -1
  222. package/lib/search/search.js +0 -233
  223. package/lib/search/search.js.map +0 -1
  224. package/lib/set/analysis/index.d.ts +0 -2
  225. package/lib/set/analysis/index.d.ts.map +0 -1
  226. package/lib/set/analysis/index.js +0 -84
  227. package/lib/set/analysis/index.js.map +0 -1
  228. package/lib/set/index.d.ts +0 -2
  229. package/lib/set/index.d.ts.map +0 -1
  230. package/lib/set/index.js +0 -16
  231. package/lib/set/index.js.map +0 -1
  232. package/lib/set/language/index.d.ts +0 -2
  233. package/lib/set/language/index.d.ts.map +0 -1
  234. package/lib/set/language/index.js +0 -73
  235. package/lib/set/language/index.js.map +0 -1
  236. package/lib/set/output-color/index.d.ts +0 -2
  237. package/lib/set/output-color/index.d.ts.map +0 -1
  238. package/lib/set/output-color/index.js +0 -87
  239. package/lib/set/output-color/index.js.map +0 -1
  240. package/lib/utils/analysis.d.ts +0 -12
  241. package/lib/utils/analysis.d.ts.map +0 -1
  242. package/lib/utils/analysis.js +0 -42
  243. package/lib/utils/analysis.js.map +0 -1
  244. package/lib/utils/check-version.d.ts +0 -13
  245. package/lib/utils/check-version.d.ts.map +0 -1
  246. package/lib/utils/check-version.js +0 -241
  247. package/lib/utils/check-version.js.map +0 -1
  248. package/lib/utils/command.d.ts +0 -14
  249. package/lib/utils/command.d.ts.map +0 -1
  250. package/lib/utils/command.js +0 -251
  251. package/lib/utils/command.js.map +0 -1
  252. package/lib/utils/common.d.ts +0 -4
  253. package/lib/utils/common.d.ts.map +0 -1
  254. package/lib/utils/common.js +0 -50
  255. package/lib/utils/common.js.map +0 -1
  256. package/lib/utils/download-manager.d.ts +0 -23
  257. package/lib/utils/download-manager.d.ts.map +0 -1
  258. package/lib/utils/download-manager.js +0 -302
  259. package/lib/utils/download-manager.js.map +0 -1
  260. package/lib/utils/handler-set-config.d.ts +0 -14
  261. package/lib/utils/handler-set-config.d.ts.map +0 -1
  262. package/lib/utils/handler-set-config.js +0 -122
  263. package/lib/utils/handler-set-config.js.map +0 -1
  264. package/lib/utils/i18n.d.ts +0 -3
  265. package/lib/utils/i18n.d.ts.map +0 -1
  266. package/lib/utils/i18n.js +0 -21
  267. package/lib/utils/i18n.js.map +0 -1
  268. package/lib/utils/locales/en.json +0 -9
  269. package/lib/utils/locales/zh.json +0 -203
  270. package/lib/utils/logger.d.ts +0 -18
  271. package/lib/utils/logger.d.ts.map +0 -1
  272. package/lib/utils/logger.js +0 -196
  273. package/lib/utils/logger.js.map +0 -1
  274. package/lib/utils/package-type.d.ts +0 -6
  275. package/lib/utils/package-type.d.ts.map +0 -1
  276. package/lib/utils/package-type.js +0 -10
  277. package/lib/utils/package-type.js.map +0 -1
  278. package/lib/utils/parse.d.ts +0 -26
  279. package/lib/utils/parse.d.ts.map +0 -1
  280. package/lib/utils/parse.js +0 -229
  281. package/lib/utils/parse.js.map +0 -1
  282. package/lib/utils/repo-template-entity.d.ts +0 -12
  283. package/lib/utils/repo-template-entity.d.ts.map +0 -1
  284. package/lib/utils/repo-template-entity.js +0 -3
  285. package/lib/utils/repo-template-entity.js.map +0 -1
  286. package/lib/utils/start-service.d.ts +0 -22
  287. package/lib/utils/start-service.d.ts.map +0 -1
  288. package/lib/utils/start-service.js +0 -97
  289. package/lib/utils/start-service.js.map +0 -1
  290. package/lib/utils/storage.d.ts +0 -3
  291. package/lib/utils/storage.d.ts.map +0 -1
  292. package/lib/utils/storage.js +0 -23
  293. package/lib/utils/storage.js.map +0 -1
  294. package/lib/utils/url-parser.d.ts +0 -8
  295. package/lib/utils/url-parser.d.ts.map +0 -1
  296. package/lib/utils/url-parser.js +0 -58
  297. package/lib/utils/url-parser.js.map +0 -1
  298. package/scripts/tests/deploy/parse.ts +0 -0
  299. package/scripts/tests/download-manager-test.ts +0 -135
  300. package/scripts/tests/init-manager-test.ts +0 -232
  301. package/scripts/tests/url-parser-test.ts +0 -44
  302. package/src/command/command-manager.ts +0 -83
  303. package/src/command/index.ts +0 -42
  304. package/src/component/hook.ts +0 -88
  305. package/src/component/index.ts +0 -433
  306. package/src/config/add/add-manager.ts +0 -207
  307. package/src/config/add/index.ts +0 -45
  308. package/src/config/common/common.ts +0 -186
  309. package/src/config/delete/delete-manager.ts +0 -51
  310. package/src/config/delete/index.ts +0 -38
  311. package/src/config/get/get-manager.ts +0 -148
  312. package/src/config/get/index.ts +0 -49
  313. package/src/config/index.ts +0 -13
  314. package/src/config/update/index.ts +0 -46
  315. package/src/config/update/update-manager.ts +0 -120
  316. package/src/constants/static-variable.ts +0 -12
  317. package/src/entity.ts +0 -10
  318. package/src/error/command-error.ts +0 -7
  319. package/src/error/config-delete-error.ts +0 -7
  320. package/src/error/config-error.ts +0 -7
  321. package/src/error/config-get-error.ts +0 -7
  322. package/src/error/config-update-error.ts +0 -7
  323. package/src/error/init-error.ts +0 -7
  324. package/src/error/login-error.ts +0 -7
  325. package/src/error/platform-delete-error.ts +0 -7
  326. package/src/error/platform-init-error.ts +0 -7
  327. package/src/error/platform-publish-error.ts +0 -7
  328. package/src/error/search-error.ts +0 -7
  329. package/src/error/serverless-error.ts +0 -17
  330. package/src/error/set-analysis-error.ts +0 -7
  331. package/src/error/set-language-error.ts +0 -7
  332. package/src/gui/gui-service.ts +0 -183
  333. package/src/gui/index.ts +0 -26
  334. package/src/init/init-manager.ts +0 -104
  335. package/src/init/init-message.ts +0 -8
  336. package/src/init/init.ts +0 -56
  337. package/src/platform/delete/index.ts +0 -46
  338. package/src/platform/delete/platform-delete-manager.ts +0 -46
  339. package/src/platform/index.ts +0 -26
  340. package/src/platform/init/index.ts +0 -33
  341. package/src/platform/init/platform-init-manager.ts +0 -17
  342. package/src/platform/login/index.ts +0 -25
  343. package/src/platform/login/login-manager.ts +0 -121
  344. package/src/platform/publish/index.ts +0 -52
  345. package/src/platform/publish/platform-publish-manager.ts +0 -69
  346. package/src/plugin/index.ts +0 -96
  347. package/src/s.ts +0 -83
  348. package/src/search/search.ts +0 -127
  349. package/src/set/analysis/index.ts +0 -45
  350. package/src/set/index.ts +0 -19
  351. package/src/set/language/index.ts +0 -39
  352. package/src/set/output-color/index.ts +0 -49
  353. package/src/utils/analysis.ts +0 -36
  354. package/src/utils/check-version.ts +0 -139
  355. package/src/utils/command.ts +0 -123
  356. package/src/utils/common.ts +0 -47
  357. package/src/utils/download-manager.ts +0 -197
  358. package/src/utils/handler-set-config.ts +0 -83
  359. package/src/utils/i18n.ts +0 -21
  360. package/src/utils/locales/en.json +0 -9
  361. package/src/utils/locales/zh.json +0 -228
  362. package/src/utils/logger.ts +0 -84
  363. package/src/utils/package-type.ts +0 -3
  364. package/src/utils/parse.ts +0 -176
  365. package/src/utils/repo-template-entity.ts +0 -14
  366. package/src/utils/start-service.ts +0 -64
  367. package/src/utils/storage.ts +0 -20
  368. package/src/utils/url-parser.ts +0 -60
  369. package/templates/application/common/publish.yaml +0 -16
  370. package/templates/application/common/readme.md +0 -99
  371. package/templates/application/common/src/index.js +0 -13
  372. package/templates/application/common/src/template.yaml +0 -16
  373. package/templates/component/common/publish.yaml +0 -24
  374. package/templates/component/common/readme.md +0 -386
  375. package/templates/component/common/src/index.js +0 -18
  376. package/templates/component/common/src/package.json +0 -7
  377. package/templates/plugin/common/publish.yaml +0 -9
  378. package/templates/plugin/common/readme.md +0 -128
  379. package/templates/plugin/common/src/index.js +0 -9
@@ -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
- }
@@ -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
- });