@contrail/cli 1.0.70 → 2.0.0

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 (270) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1034 -5
  3. package/bin/dev +17 -0
  4. package/bin/dev.cmd +3 -0
  5. package/bin/run +5 -0
  6. package/bin/run.cmd +3 -0
  7. package/{lib → dist}/api/apps.d.ts +13 -13
  8. package/dist/api/apps.js +96 -0
  9. package/{lib → dist}/api/event-workflow-action-definition.d.ts +1 -1
  10. package/dist/api/event-workflow-action-definition.js +11 -0
  11. package/{lib → dist}/api/event-workflow-template-definition.d.ts +6 -6
  12. package/dist/api/event-workflow-template-definition.js +26 -0
  13. package/{lib → dist}/api/event-workflow-templates.d.ts +7 -7
  14. package/dist/api/event-workflow-templates.js +32 -0
  15. package/dist/api/types.d.ts +7 -0
  16. package/dist/api/types.js +52 -0
  17. package/{lib → dist}/auth/auth.d.ts +9 -9
  18. package/dist/auth/auth.js +6 -0
  19. package/{lib → dist}/auth/login.d.ts +2 -2
  20. package/{lib → dist}/auth/login.js +146 -141
  21. package/dist/commands/app/create.d.ts +6 -0
  22. package/dist/commands/app/create.js +15 -0
  23. package/dist/commands/app/delete.d.ts +7 -0
  24. package/dist/commands/app/delete.js +38 -0
  25. package/dist/commands/app/install.d.ts +11 -0
  26. package/dist/commands/app/install.js +117 -0
  27. package/dist/commands/app/publish.d.ts +7 -0
  28. package/dist/commands/app/publish.js +45 -0
  29. package/dist/commands/app/uninstall.d.ts +10 -0
  30. package/dist/commands/app/uninstall.js +58 -0
  31. package/dist/commands/app/upgrade.d.ts +11 -0
  32. package/dist/commands/app/upgrade.js +79 -0
  33. package/dist/commands/colors/deleteAll.d.ts +6 -0
  34. package/dist/commands/colors/deleteAll.js +30 -0
  35. package/dist/commands/colors/load.d.ts +6 -0
  36. package/dist/commands/colors/load.js +29 -0
  37. package/dist/commands/config/list.d.ts +6 -0
  38. package/dist/commands/config/list.js +15 -0
  39. package/dist/commands/config/remove.d.ts +14 -0
  40. package/dist/commands/config/remove.js +26 -0
  41. package/dist/commands/config/set.d.ts +13 -0
  42. package/dist/commands/config/set.js +29 -0
  43. package/dist/commands/loader-process/load.d.ts +9 -0
  44. package/dist/commands/loader-process/load.js +33 -0
  45. package/dist/commands/loader-process/upload-and-load.d.ts +10 -0
  46. package/dist/commands/loader-process/upload-and-load.js +35 -0
  47. package/dist/commands/projects/export.d.ts +10 -0
  48. package/dist/commands/projects/export.js +34 -0
  49. package/dist/commands/projects/list.d.ts +6 -0
  50. package/dist/commands/projects/list.js +34 -0
  51. package/dist/commands/projects/load.d.ts +9 -0
  52. package/{lib/projects/project-uploader.js → dist/commands/projects/load.js} +106 -105
  53. package/dist/commands/types/exportOptionSetHierarchies.d.ts +7 -0
  54. package/{lib/types/option-set-hierarchy-exporter.js → dist/commands/types/exportOptionSetHierarchies.js} +130 -113
  55. package/{lib/types/types-extractor.d.ts → dist/commands/types/getAll.d.ts} +29 -27
  56. package/{lib/types/types-extractor.js → dist/commands/types/getAll.js} +267 -318
  57. package/dist/commands/types/loadAll.d.ts +7 -0
  58. package/dist/commands/types/loadAll.js +41 -0
  59. package/dist/commands/types/mergeOptionSets.d.ts +9 -0
  60. package/{lib/types/option-set-merger.js → dist/commands/types/mergeOptionSets.js} +114 -105
  61. package/dist/commands/types/mergeTypeProperties.d.ts +11 -0
  62. package/dist/commands/types/mergeTypeProperties.js +89 -0
  63. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.d.ts +10 -0
  64. package/dist/commands/types/parseOptionSetsHierarchyLocalFile.js +112 -0
  65. package/dist/commands/types/parseOptionSetsLocalFiles.d.ts +14 -0
  66. package/dist/commands/types/parseOptionSetsLocalFiles.js +153 -0
  67. package/dist/commands/types/parseOptionSetsToFolderStructure.d.ts +10 -0
  68. package/dist/commands/types/parseOptionSetsToFolderStructure.js +104 -0
  69. package/dist/commands/types/parseTypesFromFiles.d.ts +10 -0
  70. package/dist/commands/types/parseTypesFromFiles.js +34 -0
  71. package/dist/commands/types/parseTypesFromLocalFiles.d.ts +10 -0
  72. package/dist/commands/types/parseTypesFromLocalFiles.js +34 -0
  73. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.d.ts +11 -0
  74. package/dist/commands/types/parseTypesFromTemplateAndDataFromLocalFiles.js +36 -0
  75. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.d.ts +10 -0
  76. package/dist/commands/types/parseTypesFromTemplateFromLocalFiles.js +35 -0
  77. package/dist/commands/types/uploadOptionSetHierarchies.d.ts +7 -0
  78. package/{lib/types/option-set-hierarchy-uploader.js → dist/commands/types/uploadOptionSetHierarchies.js} +130 -113
  79. package/dist/commands/types/uploadOptionSets.d.ts +7 -0
  80. package/{lib/types/option-set-uploader.js → dist/commands/types/uploadOptionSets.js} +115 -98
  81. package/dist/commands/types/uploadOptionSetsHierarchyLocalFile.d.ts +11 -0
  82. package/{lib/types/option-set-hierarchy-parser.js → dist/commands/types/uploadOptionSetsHierarchyLocalFile.js} +128 -140
  83. package/dist/commands/types/uploadRuleSets.d.ts +7 -0
  84. package/{lib/types/rule-set-uploader.js → dist/commands/types/uploadRuleSets.js} +189 -172
  85. package/dist/commands/types/uploadTypePropertyPolicies.d.ts +7 -0
  86. package/{lib/types/type-property-policy-uploader.js → dist/commands/types/uploadTypePropertyPolicies.js} +195 -178
  87. package/dist/commands/types/uploadUsageInfo.d.ts +7 -0
  88. package/{lib/types/usage-info-uploader.js → dist/commands/types/uploadUsageInfo.js} +149 -132
  89. package/dist/commands/users/export.d.ts +9 -0
  90. package/dist/commands/users/export.js +60 -0
  91. package/dist/commands/users/upload.d.ts +9 -0
  92. package/dist/commands/users/upload.js +65 -0
  93. package/dist/commands/workflow-template-definitions/install.d.ts +6 -0
  94. package/dist/commands/workflow-template-definitions/install.js +17 -0
  95. package/dist/commands/workflow-template-definitions/list.d.ts +6 -0
  96. package/dist/commands/workflow-template-definitions/list.js +17 -0
  97. package/dist/commands/workflow-templates/delete.d.ts +6 -0
  98. package/dist/commands/workflow-templates/delete.js +17 -0
  99. package/dist/commands/workflow-templates/list.d.ts +6 -0
  100. package/dist/commands/workflow-templates/list.js +17 -0
  101. package/dist/commands/workflow-templates/load.d.ts +9 -0
  102. package/dist/commands/workflow-templates/load.js +21 -0
  103. package/{lib → dist}/common.d.ts +1 -1
  104. package/dist/common.js +9 -0
  105. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.d.ts +11 -11
  106. package/{lib/apps/deploy-app → dist/helpers/app}/actions-deployer.js +122 -114
  107. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.d.ts +8 -8
  108. package/{lib/apps/deploy-app → dist/helpers/app}/app-deployer.js +98 -93
  109. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.d.ts +7 -7
  110. package/{lib/apps/deploy-app → dist/helpers/app}/app-template-parsers.js +43 -38
  111. package/dist/helpers/app/load-app-config.d.ts +1 -0
  112. package/dist/helpers/app/load-app-config.js +18 -0
  113. package/dist/helpers/app/setup-template.d.ts +1 -0
  114. package/dist/helpers/app/setup-template.js +38 -0
  115. package/dist/helpers/colors/helpers.d.ts +4 -0
  116. package/dist/helpers/colors/helpers.js +74 -0
  117. package/{lib → dist/helpers}/config/config.d.ts +6 -6
  118. package/dist/helpers/config/config.js +76 -0
  119. package/dist/helpers/loader-process/helpers.d.ts +2 -0
  120. package/{lib/loader-process/loader-process.js → dist/helpers/loader-process/helpers.js} +98 -120
  121. package/dist/helpers/projects/helpers.d.ts +2 -0
  122. package/{lib/projects/project-exporter.js → dist/helpers/projects/helpers.js} +165 -187
  123. package/{lib → dist/helpers}/types/csv-parser.d.ts +1 -1
  124. package/{lib → dist/helpers}/types/csv-parser.js +56 -51
  125. package/dist/helpers/types/type-extractor.d.ts +1 -0
  126. package/dist/helpers/types/type-extractor.js +32 -0
  127. package/dist/helpers/types/type-parser.d.ts +4 -0
  128. package/dist/helpers/types/type-parser.js +118 -0
  129. package/{lib/types/types-uploader.d.ts → dist/helpers/types/type-uploader.d.ts} +1 -1
  130. package/{lib/types/types-uploader.js → dist/helpers/types/type-uploader.js} +244 -239
  131. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.d.ts +12 -12
  132. package/{lib → dist/helpers}/workflow-template-definitions/workflow-template-definition-deployer.js +156 -151
  133. package/{lib/workflow-templates/local-workflow-template-deployer.d.ts → dist/helpers/workflow-templates/helper.d.ts} +17 -11
  134. package/dist/helpers/workflow-templates/helper.js +166 -0
  135. package/dist/index.d.ts +1 -0
  136. package/dist/index.js +5 -0
  137. package/{lib → dist}/interfaces.d.ts +323 -191
  138. package/dist/interfaces.js +63 -0
  139. package/{templates → dist/templates}/typescript/Dockerfile +15 -15
  140. package/{templates → dist/templates}/typescript/README.md +10 -10
  141. package/{templates → dist/templates}/typescript/app.yml +49 -49
  142. package/{templates → dist/templates}/typescript/docker_deploy.bat +1 -1
  143. package/{templates → dist/templates}/typescript/package.json +54 -54
  144. package/{templates → dist/templates}/typescript/src/actions/logItem.ts +25 -25
  145. package/{templates → dist/templates}/typescript/src/framework/action-dispatcher.ts +89 -89
  146. package/{templates → dist/templates}/typescript/src/framework/app-config.ts +26 -26
  147. package/{templates → dist/templates}/typescript/src/framework/index.ts +2 -2
  148. package/{templates → dist/templates}/typescript/src/framework/interfaces.ts +32 -32
  149. package/{templates → dist/templates}/typescript/tsconfig.json +28 -28
  150. package/oclif.manifest.json +821 -0
  151. package/package.json +116 -72
  152. package/.eslintrc.js +0 -53
  153. package/.vscode/settings.json +0 -6
  154. package/bin/init +0 -4
  155. package/lib/api/apps.js +0 -85
  156. package/lib/api/event-workflow-action-definition.js +0 -7
  157. package/lib/api/event-workflow-template-definition.js +0 -20
  158. package/lib/api/event-workflow-templates.js +0 -25
  159. package/lib/apps/create-app/create.d.ts +0 -1
  160. package/lib/apps/create-app/create.js +0 -60
  161. package/lib/apps/create-app/setup-template.d.ts +0 -1
  162. package/lib/apps/create-app/setup-template.js +0 -34
  163. package/lib/apps/deploy-app/deploy.d.ts +0 -2
  164. package/lib/apps/deploy-app/deploy.js +0 -58
  165. package/lib/apps/install-app/app-installer.d.ts +0 -2
  166. package/lib/apps/install-app/app-installer.js +0 -120
  167. package/lib/apps/upgrade-app/app-upgrader.d.ts +0 -3
  168. package/lib/apps/upgrade-app/app-upgrader.js +0 -126
  169. package/lib/auth/auth.js +0 -2
  170. package/lib/cli.d.ts +0 -5
  171. package/lib/cli.js +0 -524
  172. package/lib/colors/color-loader.d.ts +0 -2
  173. package/lib/colors/color-loader.js +0 -96
  174. package/lib/common.js +0 -5
  175. package/lib/config/config.js +0 -70
  176. package/lib/config/configCommands.d.ts +0 -3
  177. package/lib/config/configCommands.js +0 -34
  178. package/lib/interfaces.js +0 -25
  179. package/lib/loader-process/loader-process.d.ts +0 -2
  180. package/lib/projects/interfaces.d.ts +0 -77
  181. package/lib/projects/interfaces.js +0 -23
  182. package/lib/projects/project-exporter.d.ts +0 -2
  183. package/lib/projects/project-uploader.d.ts +0 -1
  184. package/lib/types/allUploader.d.ts +0 -1
  185. package/lib/types/allUploader.js +0 -24
  186. package/lib/types/interfaces.d.ts +0 -55
  187. package/lib/types/interfaces.js +0 -1
  188. package/lib/types/option-set-hierarchy-exporter.d.ts +0 -1
  189. package/lib/types/option-set-hierarchy-parser.d.ts +0 -2
  190. package/lib/types/option-set-hierarchy-uploader.d.ts +0 -1
  191. package/lib/types/option-set-merger.d.ts +0 -1
  192. package/lib/types/option-set-parser.d.ts +0 -3
  193. package/lib/types/option-set-parser.js +0 -140
  194. package/lib/types/option-set-uploader.d.ts +0 -1
  195. package/lib/types/parse-types.d.ts +0 -4
  196. package/lib/types/parse-types.js +0 -189
  197. package/lib/types/rule-set-uploader.d.ts +0 -1
  198. package/lib/types/type-property-policy-uploader.d.ts +0 -1
  199. package/lib/types/types-properties-merger.d.ts +0 -1
  200. package/lib/types/types-properties-merger.js +0 -75
  201. package/lib/types/usage-info-uploader.d.ts +0 -1
  202. package/lib/users/user-exporter.d.ts +0 -1
  203. package/lib/users/user-exporter.js +0 -41
  204. package/lib/users/user-uploader.d.ts +0 -1
  205. package/lib/users/user-uploader.js +0 -45
  206. package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +0 -2
  207. package/lib/workflow-template-definitions/workflow-template-definition-commands.js +0 -10
  208. package/lib/workflow-templates/local-workflow-template-deployer.js +0 -102
  209. package/lib/workflow-templates/workflow-template-commands.d.ts +0 -4
  210. package/lib/workflow-templates/workflow-template-commands.js +0 -51
  211. package/lib/workflow-templates/workflow-template-deployer.d.ts +0 -4
  212. package/lib/workflow-templates/workflow-template-deployer.js +0 -26
  213. package/publish.bat +0 -5
  214. package/publish.sh +0 -5
  215. package/src/api/apps.ts +0 -97
  216. package/src/api/event-workflow-action-definition.ts +0 -8
  217. package/src/api/event-workflow-template-definition.ts +0 -23
  218. package/src/api/event-workflow-templates.ts +0 -29
  219. package/src/apps/create-app/create.ts +0 -74
  220. package/src/apps/create-app/setup-template.ts +0 -38
  221. package/src/apps/deploy-app/actions-deployer.ts +0 -140
  222. package/src/apps/deploy-app/app-deployer.ts +0 -105
  223. package/src/apps/deploy-app/app-template-parsers.ts +0 -44
  224. package/src/apps/deploy-app/deploy.ts +0 -66
  225. package/src/apps/install-app/app-installer.ts +0 -126
  226. package/src/apps/upgrade-app/app-upgrader.ts +0 -132
  227. package/src/auth/auth.ts +0 -10
  228. package/src/auth/login.ts +0 -155
  229. package/src/cli.ts +0 -540
  230. package/src/colors/color-loader.ts +0 -112
  231. package/src/colors/colors.csv +0 -866
  232. package/src/common.ts +0 -5
  233. package/src/config/config.ts +0 -74
  234. package/src/config/configCommands.ts +0 -38
  235. package/src/interfaces.ts +0 -200
  236. package/src/loader-process/loader-process.ts +0 -152
  237. package/src/projects/interfaces.ts +0 -73
  238. package/src/projects/project-exporter.ts +0 -225
  239. package/src/projects/project-uploader.ts +0 -131
  240. package/src/types/allUploader.ts +0 -28
  241. package/src/types/csv-parser.ts +0 -59
  242. package/src/types/interfaces.ts +0 -58
  243. package/src/types/option-set-hierarchy-exporter.ts +0 -125
  244. package/src/types/option-set-hierarchy-parser.ts +0 -169
  245. package/src/types/option-set-hierarchy-uploader.ts +0 -122
  246. package/src/types/option-set-merger.ts +0 -124
  247. package/src/types/option-set-parser.ts +0 -166
  248. package/src/types/option-set-uploader.ts +0 -108
  249. package/src/types/parse-types.ts +0 -227
  250. package/src/types/rule-set-uploader.ts +0 -187
  251. package/src/types/type-property-policy-uploader.ts +0 -192
  252. package/src/types/types-extractor.ts +0 -369
  253. package/src/types/types-properties-merger.ts +0 -90
  254. package/src/types/types-uploader.ts +0 -271
  255. package/src/types/usage-info-uploader.ts +0 -139
  256. package/src/users/user-exporter.ts +0 -52
  257. package/src/users/user-uploader.ts +0 -58
  258. package/src/workflow-template-definitions/workflow-template-definition-commands.ts +0 -13
  259. package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +0 -184
  260. package/src/workflow-templates/local-workflow-template-deployer.ts +0 -126
  261. package/src/workflow-templates/workflow-template-commands.ts +0 -59
  262. package/src/workflow-templates/workflow-template-deployer.ts +0 -30
  263. package/templates/javascript/actions/example/action.js +0 -38
  264. package/templates/javascript/app.yml +0 -53
  265. package/templates/javascript/package.json +0 -23
  266. package/templates/typescript/package-lock.json +0 -14
  267. package/tsconfig.json +0 -32
  268. /package/{templates → dist/templates}/typescript/src/framework/handler.ts +0 -0
  269. /package/{templates → dist/templates}/typescript/src/framework/logger.ts +0 -0
  270. /package/{templates → dist/templates}/typescript/src/framework/mock-server.ts +0 -0
@@ -1,120 +0,0 @@
1
- import inquirer from 'inquirer';
2
- import chalk from 'chalk';
3
- import { Entities } from '@contrail/sdk';
4
- import { authUser } from '../../auth/login';
5
- import { deleteAppOrg, getAvailableApps, getInstalledApps, getWorkflowTemplateDefinitionsForApp, installAppToOrg } from '../../api/apps';
6
- import { WorkflowTemplateDefinitionDeployer } from '../../workflow-template-definitions/workflow-template-definition-deployer';
7
- async function getConfigProperties(app) {
8
- const config = {};
9
- for (const key of Object.keys(app.configProperties)) {
10
- const slug = app.configProperties[key]['slug'];
11
- const name = app.configProperties[key]['label'];
12
- const type = app.configProperties[key]['propertyType'];
13
- const questions = [];
14
- questions.push({
15
- type: 'input',
16
- name: 'configAnswer',
17
- message: `[App config] ${name} (${type}):`,
18
- });
19
- const answers = await inquirer.prompt(questions);
20
- config[slug] = answers.configAnswer;
21
- }
22
- return config;
23
- }
24
- export async function uninstallApp() {
25
- await authUser();
26
- const installedApps = await getInstalledApps();
27
- const answers = await inquirer.prompt([{
28
- type: 'list',
29
- name: 'appIdentifier',
30
- message: 'Which app would you like to uninstall?',
31
- choices: installedApps.map(x => x.app.identifier)
32
- }]);
33
- const appToDelete = installedApps.find(x => x.app.identifier === answers.appIdentifier);
34
- console.log('%s Uninstalling app', chalk.green.bold('APP INSTALLATION'));
35
- await deleteAppOrg(appToDelete.id);
36
- // eslint-disable-next-line no-constant-condition
37
- while (true) {
38
- await delay(1000);
39
- try {
40
- const appStillDeleting = await new Entities().get({ entityName: 'app-org', id: appToDelete.id });
41
- if (!appStillDeleting) {
42
- break;
43
- }
44
- process.stdout.write('.');
45
- }
46
- catch (e) {
47
- console.log('Error is:', e);
48
- break;
49
- }
50
- }
51
- console.log('%s App Uninstalled', chalk.green.bold('APP INSTALLATION'));
52
- }
53
- export async function installApp() {
54
- await authUser();
55
- const apps = await getAvailableApps();
56
- if (!apps.length) {
57
- throw new Error('No apps are available to install...');
58
- }
59
- const installedApps = await getInstalledApps();
60
- const installedAppsIds = installedApps.map(x => x.app.id);
61
- const installableApps = apps.filter(x => !installedAppsIds.includes(x.id));
62
- console.log(chalk.yellow.bold('Installed Apps:'));
63
- for (const appOrg of installedApps) {
64
- console.log(chalk.yellow.bold(`${appOrg.app.name}: ${appOrg.app.identifier}`));
65
- }
66
- const questions = [];
67
- questions.push({
68
- type: 'list',
69
- name: 'appIdentifier',
70
- message: 'Which app would you like to install?',
71
- choices: installableApps.map(x => x.identifier)
72
- });
73
- let answers = await inquirer.prompt(questions);
74
- const app = installableApps.find(x => x.identifier === answers.appIdentifier);
75
- let configProperties;
76
- if (app.configProperties) {
77
- configProperties = await getConfigProperties(app);
78
- }
79
- console.log('%s Installing apps', chalk.green.bold('APP INSTALLATION'));
80
- const appOrg = await installAppToOrg(app, configProperties);
81
- // eslint-disable-next-line no-constant-condition
82
- while (true) {
83
- await delay(1000);
84
- try {
85
- const installingApp = await new Entities().get({ entityName: 'app-org', id: appOrg.id });
86
- if (installingApp.status === 'READY') {
87
- console.log('%s App installed', chalk.green.bold('APP INSTALLATION'));
88
- break;
89
- }
90
- if (installingApp.status === 'FAILED_INSTALLING') {
91
- console.log('%s App installation failed', chalk.red.bold('APP INSTALLATION'));
92
- return;
93
- }
94
- process.stdout.write('.');
95
- }
96
- catch (e) {
97
- console.log('%s App installation failed', chalk.red.bold('APP INSTALLATION'));
98
- console.log('Error is:', e);
99
- return;
100
- }
101
- }
102
- const workflowTemplateDefinitions = await getWorkflowTemplateDefinitionsForApp({ appId: app.id });
103
- if (!workflowTemplateDefinitions.length) {
104
- return;
105
- }
106
- answers = await inquirer.prompt([{
107
- type: 'confirm',
108
- name: 'shouldInstallWorkflows',
109
- message: 'Would you like to install the Workflows associated with this app?',
110
- default: false
111
- }]);
112
- if (!answers.shouldInstallWorkflows) {
113
- console.log('%s Not installing associated app workflows', chalk.yellow.bold('APP INSTALLATION'));
114
- return;
115
- }
116
- new WorkflowTemplateDefinitionDeployer().installWorkflowTemplateDefinitions(workflowTemplateDefinitions);
117
- }
118
- function delay(ms) {
119
- return new Promise(resolve => setTimeout(resolve, ms));
120
- }
@@ -1,3 +0,0 @@
1
- export declare function uninstallApp(): Promise<void>;
2
- export declare function upgradeApp(): Promise<void>;
3
- export declare function installApp(): Promise<void>;
@@ -1,126 +0,0 @@
1
- import inquirer from 'inquirer';
2
- import chalk from 'chalk';
3
- import { Entities } from '@contrail/sdk';
4
- import { authUser } from '../../auth/login';
5
- import { deleteAppOrg, getAppVersions, getAvailableApps, getInstalledApps, installAppToOrg, upgradeAppVersion } from '../../api/apps';
6
- async function getConfigProperties(app) {
7
- const config = {};
8
- for (const key of Object.keys(app.configProperties)) {
9
- const slug = app.configProperties[key]['slug'];
10
- const name = app.configProperties[key]['label'];
11
- const type = app.configProperties[key]['propertyType'];
12
- const questions = [];
13
- questions.push({
14
- type: 'input',
15
- name: 'configAnswer',
16
- message: `[App config] ${name} (${type}):`,
17
- });
18
- const answers = await inquirer.prompt(questions);
19
- config[slug] = answers.configAnswer;
20
- }
21
- return config;
22
- }
23
- export async function uninstallApp() {
24
- await authUser();
25
- const installedApps = await getInstalledApps();
26
- const answers = await inquirer.prompt([{
27
- type: 'list',
28
- name: 'appIdentifier',
29
- message: 'Which app would you like to uninstall?',
30
- choices: installedApps.map(x => x.app.identifier)
31
- }]);
32
- const appToDelete = installedApps.find(x => x.app.identifier === answers.appIdentifier);
33
- console.log('%s Uninstalling app', chalk.green.bold('APP INSTALLATION'));
34
- await deleteAppOrg(appToDelete.id);
35
- // eslint-disable-next-line no-constant-condition
36
- while (true) {
37
- await delay(1000);
38
- try {
39
- const appStillDeleting = await new Entities().get({ entityName: 'app-org', id: appToDelete.id });
40
- if (!appStillDeleting) {
41
- break;
42
- }
43
- process.stdout.write('.');
44
- }
45
- catch (e) {
46
- console.log('Error is:', e);
47
- break;
48
- }
49
- }
50
- console.log('%s App Uninstalled', chalk.green.bold('APP INSTALLATION'));
51
- }
52
- export async function upgradeApp() {
53
- await authUser();
54
- const allApps = await getAvailableApps();
55
- const installedApps = await getInstalledApps();
56
- let answers = await inquirer.prompt([{
57
- type: 'list',
58
- name: 'appIdentifier',
59
- message: 'Which app would you like to upgrade?',
60
- choices: installedApps.map(x => x.app.identifier)
61
- }]);
62
- const appOrgToUpgrade = installedApps.find(x => x.app.identifier === answers.appIdentifier);
63
- const appToUpgrade = allApps.find(x => x.identifier === answers.appIdentifier);
64
- const versions = await getAppVersions(appToUpgrade);
65
- answers = await inquirer.prompt([{
66
- type: 'list',
67
- name: 'appVersion',
68
- message: 'Which app version would you like to upgrade to?',
69
- choices: versions.map(x => {
70
- const number = x.versionNumber.toString().padStart(4, '0');
71
- const name = x.id === appOrgToUpgrade.appVersionId ? `${number} (${x.createdOn}) (current)` : `${number} (${x.createdOn})`;
72
- return {
73
- value: x.id, name
74
- };
75
- }).sort((x, y) => { return x.name > y.name ? -1 : 1; })
76
- }]);
77
- console.log(`%s Upgrading app to version ${answers.appVersion}`, chalk.green.bold('APP INSTALLATION'));
78
- await upgradeAppVersion(appOrgToUpgrade, answers.appVersion);
79
- // eslint-disable-next-line no-constant-condition
80
- while (true) {
81
- await delay(1000);
82
- const appStillUpgrading = await new Entities().get({ entityName: 'app-org', id: appOrgToUpgrade.id });
83
- if (appStillUpgrading.status === 'READY') {
84
- console.log('%s App Upgraded', chalk.green.bold('APP INSTALLATION'));
85
- return;
86
- }
87
- if (appStillUpgrading.status === 'FAILED_INSTALLING') {
88
- console.log('%s App Upgrade FAILED!', chalk.red.bold('APP INSTALLATION'));
89
- return;
90
- }
91
- console.log('checking app status...');
92
- }
93
- }
94
- export async function installApp() {
95
- await authUser();
96
- const apps = await getAvailableApps();
97
- if (!apps.length) {
98
- throw new Error('No apps are available to install...');
99
- }
100
- const installedApps = await getInstalledApps();
101
- const installedAppsIds = installedApps.map(x => x.app.id);
102
- const installableApps = apps.filter(x => !installedAppsIds.includes(x.id));
103
- console.log(chalk.yellow.bold('Installed Apps:'));
104
- for (const appOrg of installedApps) {
105
- console.log(chalk.yellow.bold(`${appOrg.app.name}: ${appOrg.app.identifier}`));
106
- }
107
- const questions = [];
108
- questions.push({
109
- type: 'list',
110
- name: 'appIdentifier',
111
- message: 'Which app would you like to install?',
112
- choices: installableApps.map(x => x.identifier)
113
- });
114
- const answers = await inquirer.prompt(questions);
115
- const app = installableApps.find(x => x.identifier === answers.appIdentifier);
116
- let configProperties;
117
- if (app.configProperties) {
118
- configProperties = await getConfigProperties(app);
119
- }
120
- console.log('%s Installing apps', chalk.green.bold('APP INSTALLATION'));
121
- await installAppToOrg(app, configProperties);
122
- console.log('%s App installed', chalk.green.bold('APP INSTALLATION'));
123
- }
124
- function delay(ms) {
125
- return new Promise(resolve => setTimeout(resolve, ms));
126
- }
package/lib/auth/auth.js DELETED
@@ -1,2 +0,0 @@
1
- export class Auth {
2
- }
package/lib/cli.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Built using documentation here:
3
- * https://www.twilio.com/blog/how-to-build-a-cli-with-node-js
4
- */
5
- export declare function cli(args: any): Promise<void>;