@contrail/cli 1.0.71 → 2.0.1

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/handler.ts +11 -11
  148. package/{templates → dist/templates}/typescript/src/framework/index.ts +2 -2
  149. package/{templates → dist/templates}/typescript/src/framework/interfaces.ts +32 -32
  150. package/{templates → dist/templates}/typescript/src/framework/logger.ts +21 -21
  151. package/{templates → dist/templates}/typescript/src/framework/mock-server.ts +31 -31
  152. package/{templates → dist/templates}/typescript/tsconfig.json +28 -28
  153. package/oclif.manifest.json +821 -0
  154. package/package.json +116 -72
  155. package/.eslintrc.js +0 -53
  156. package/.vscode/settings.json +0 -6
  157. package/bin/init +0 -4
  158. package/lib/api/apps.js +0 -85
  159. package/lib/api/event-workflow-action-definition.js +0 -7
  160. package/lib/api/event-workflow-template-definition.js +0 -20
  161. package/lib/api/event-workflow-templates.js +0 -25
  162. package/lib/apps/create-app/create.d.ts +0 -1
  163. package/lib/apps/create-app/create.js +0 -60
  164. package/lib/apps/create-app/setup-template.d.ts +0 -1
  165. package/lib/apps/create-app/setup-template.js +0 -34
  166. package/lib/apps/deploy-app/deploy.d.ts +0 -2
  167. package/lib/apps/deploy-app/deploy.js +0 -58
  168. package/lib/apps/install-app/app-installer.d.ts +0 -2
  169. package/lib/apps/install-app/app-installer.js +0 -120
  170. package/lib/apps/upgrade-app/app-upgrader.d.ts +0 -3
  171. package/lib/apps/upgrade-app/app-upgrader.js +0 -126
  172. package/lib/auth/auth.js +0 -2
  173. package/lib/cli.d.ts +0 -5
  174. package/lib/cli.js +0 -524
  175. package/lib/colors/color-loader.d.ts +0 -2
  176. package/lib/colors/color-loader.js +0 -96
  177. package/lib/common.js +0 -5
  178. package/lib/config/config.js +0 -70
  179. package/lib/config/configCommands.d.ts +0 -3
  180. package/lib/config/configCommands.js +0 -34
  181. package/lib/interfaces.js +0 -25
  182. package/lib/loader-process/loader-process.d.ts +0 -2
  183. package/lib/projects/interfaces.d.ts +0 -77
  184. package/lib/projects/interfaces.js +0 -23
  185. package/lib/projects/project-exporter.d.ts +0 -2
  186. package/lib/projects/project-uploader.d.ts +0 -1
  187. package/lib/types/allUploader.d.ts +0 -1
  188. package/lib/types/allUploader.js +0 -24
  189. package/lib/types/interfaces.d.ts +0 -55
  190. package/lib/types/interfaces.js +0 -1
  191. package/lib/types/option-set-hierarchy-exporter.d.ts +0 -1
  192. package/lib/types/option-set-hierarchy-parser.d.ts +0 -2
  193. package/lib/types/option-set-hierarchy-uploader.d.ts +0 -1
  194. package/lib/types/option-set-merger.d.ts +0 -1
  195. package/lib/types/option-set-parser.d.ts +0 -3
  196. package/lib/types/option-set-parser.js +0 -140
  197. package/lib/types/option-set-uploader.d.ts +0 -1
  198. package/lib/types/parse-types.d.ts +0 -4
  199. package/lib/types/parse-types.js +0 -189
  200. package/lib/types/rule-set-uploader.d.ts +0 -1
  201. package/lib/types/type-property-policy-uploader.d.ts +0 -1
  202. package/lib/types/types-properties-merger.d.ts +0 -1
  203. package/lib/types/types-properties-merger.js +0 -75
  204. package/lib/types/usage-info-uploader.d.ts +0 -1
  205. package/lib/users/user-exporter.d.ts +0 -1
  206. package/lib/users/user-exporter.js +0 -41
  207. package/lib/users/user-uploader.d.ts +0 -1
  208. package/lib/users/user-uploader.js +0 -45
  209. package/lib/workflow-template-definitions/workflow-template-definition-commands.d.ts +0 -2
  210. package/lib/workflow-template-definitions/workflow-template-definition-commands.js +0 -10
  211. package/lib/workflow-templates/local-workflow-template-deployer.js +0 -102
  212. package/lib/workflow-templates/workflow-template-commands.d.ts +0 -4
  213. package/lib/workflow-templates/workflow-template-commands.js +0 -51
  214. package/lib/workflow-templates/workflow-template-deployer.d.ts +0 -4
  215. package/lib/workflow-templates/workflow-template-deployer.js +0 -26
  216. package/publish.bat +0 -5
  217. package/publish.sh +0 -5
  218. package/src/api/apps.ts +0 -97
  219. package/src/api/event-workflow-action-definition.ts +0 -8
  220. package/src/api/event-workflow-template-definition.ts +0 -23
  221. package/src/api/event-workflow-templates.ts +0 -29
  222. package/src/apps/create-app/create.ts +0 -74
  223. package/src/apps/create-app/setup-template.ts +0 -38
  224. package/src/apps/deploy-app/actions-deployer.ts +0 -140
  225. package/src/apps/deploy-app/app-deployer.ts +0 -105
  226. package/src/apps/deploy-app/app-template-parsers.ts +0 -44
  227. package/src/apps/deploy-app/deploy.ts +0 -66
  228. package/src/apps/install-app/app-installer.ts +0 -126
  229. package/src/apps/upgrade-app/app-upgrader.ts +0 -132
  230. package/src/auth/auth.ts +0 -10
  231. package/src/auth/login.ts +0 -155
  232. package/src/cli.ts +0 -540
  233. package/src/colors/color-loader.ts +0 -112
  234. package/src/colors/colors.csv +0 -866
  235. package/src/common.ts +0 -5
  236. package/src/config/config.ts +0 -74
  237. package/src/config/configCommands.ts +0 -38
  238. package/src/interfaces.ts +0 -200
  239. package/src/loader-process/loader-process.ts +0 -152
  240. package/src/projects/interfaces.ts +0 -73
  241. package/src/projects/project-exporter.ts +0 -225
  242. package/src/projects/project-uploader.ts +0 -131
  243. package/src/types/allUploader.ts +0 -28
  244. package/src/types/csv-parser.ts +0 -59
  245. package/src/types/interfaces.ts +0 -58
  246. package/src/types/option-set-hierarchy-exporter.ts +0 -125
  247. package/src/types/option-set-hierarchy-parser.ts +0 -169
  248. package/src/types/option-set-hierarchy-uploader.ts +0 -122
  249. package/src/types/option-set-merger.ts +0 -124
  250. package/src/types/option-set-parser.ts +0 -166
  251. package/src/types/option-set-uploader.ts +0 -108
  252. package/src/types/parse-types.ts +0 -227
  253. package/src/types/rule-set-uploader.ts +0 -187
  254. package/src/types/type-property-policy-uploader.ts +0 -192
  255. package/src/types/types-extractor.ts +0 -369
  256. package/src/types/types-properties-merger.ts +0 -90
  257. package/src/types/types-uploader.ts +0 -271
  258. package/src/types/usage-info-uploader.ts +0 -139
  259. package/src/users/user-exporter.ts +0 -52
  260. package/src/users/user-uploader.ts +0 -58
  261. package/src/workflow-template-definitions/workflow-template-definition-commands.ts +0 -13
  262. package/src/workflow-template-definitions/workflow-template-definition-deployer.ts +0 -184
  263. package/src/workflow-templates/local-workflow-template-deployer.ts +0 -126
  264. package/src/workflow-templates/workflow-template-commands.ts +0 -59
  265. package/src/workflow-templates/workflow-template-deployer.ts +0 -30
  266. package/templates/javascript/actions/example/action.js +0 -38
  267. package/templates/javascript/app.yml +0 -53
  268. package/templates/javascript/package.json +0 -23
  269. package/templates/typescript/package-lock.json +0 -14
  270. package/tsconfig.json +0 -32
package/src/auth/login.ts DELETED
@@ -1,155 +0,0 @@
1
- const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
2
- import inquirer from 'inquirer';
3
- import { Request, setConfig as setSdkConfig } from '@contrail/sdk';
4
- import { Auth, AuthContext } from './auth';
5
- import { getConfig, storeConfig } from '../config/config';
6
-
7
- const CONFIGURATION = {
8
- userPoolId: 'us-east-1_qIaNZdUfm',
9
- clientId: process.env.CONTRAIL_COGNITO_CLIENT_ID || '7knkt34gfacbgd0ghnuspefdfg',
10
- };
11
-
12
- export async function authUser(): Promise<AuthContext> {
13
- console.debug('authorizing user');
14
- const config = await getConfig();
15
- if (
16
- config &&
17
- config.apiUserToken &&
18
- config.apiGateway &&
19
- config.orgSlug
20
- ) {
21
- console.debug('populating auth config from fs config');
22
- Auth.config = {
23
- apiUserToken: config.apiUserToken,
24
- apiGateway: config.apiGateway,
25
- orgSlug: config.orgSlug,
26
- };
27
- setSdkConfig(Auth.config);
28
- try {
29
- return await refreshCurrentUserOrg();
30
- } catch (e) {
31
- console.log('Token expired. Requesting auth credentials...');
32
- }
33
-
34
- }
35
- const questions = [];
36
- if (!process.env.CONTRAIL_CLI_EMAIL) {
37
- questions.push({
38
- type: 'input',
39
- name: 'email',
40
- validate: (val) => !!val,
41
- message: 'Email',
42
- });
43
- }
44
- if (!process.env.CONTRAIL_CLI_PASSWORD) {
45
- questions.push({
46
- type: 'password',
47
- name: 'password',
48
- validate: (val) => !!val,
49
- message: 'Password',
50
- });
51
- }
52
- if (!process.env.CONTRAIL_CLI_ORGSLUG) {
53
- questions.push({
54
- type: 'input',
55
- name: 'orgSlug',
56
- validate: (val) => !!val,
57
- message: 'Org (slug)',
58
- });
59
- }
60
-
61
- const answers = await inquirer.prompt(questions);
62
- const params = {
63
- email: process.env.CONTRAIL_CLI_EMAIL || answers.email,
64
- password: process.env.CONTRAIL_CLI_PASSWORD || answers.password,
65
- orgSlug: process.env.CONTRAIL_CLI_ORGSLUG || answers.orgSlug,
66
- };
67
- if (!params.email || !params.password) {
68
- throw new Error('Email and Password required');
69
- }
70
-
71
- const poolData = {
72
- UserPoolId: CONFIGURATION.userPoolId,
73
- ClientId: CONFIGURATION.clientId,
74
- };
75
-
76
- const userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
77
- const authData = {
78
- Username: params.email,
79
- Password: params.password,
80
- };
81
-
82
- const authDetails = new AmazonCognitoIdentity.AuthenticationDetails(authData);
83
- const userData = {
84
- Username: params.email,
85
- Pool: userPool,
86
- };
87
-
88
- const cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
89
-
90
- return new Promise((resolve, reject) => {
91
- cognitoUser.authenticateUser(authDetails, {
92
- onSuccess: async (result) => {
93
- const user = result;
94
- const config = await setAuthContext(user, params);
95
-
96
- resolve(config);
97
- },
98
- onFailure: (err) => {
99
- reject(err);
100
- },
101
- });
102
- });
103
- }
104
-
105
- async function setAuthContext(user, params): Promise<AuthContext> {
106
- const config = await getConfig();
107
- let apiGateway;
108
- console.log(config.environments);
109
- if(config.environments) {
110
- const questions = [];
111
- questions.push({
112
- type: 'list',
113
- name: 'environment',
114
- message: 'Which environment would you like to use?',
115
- choices: Object.keys(config.environments),
116
- default: Object.keys(config.environments)[0],
117
- });
118
- const answers = await inquirer.prompt(questions);
119
- apiGateway = config.environments[answers.environment];
120
- } else {
121
- apiGateway = 'https://api.vibeiq.com/prod/api';
122
- }
123
-
124
- // Set Auth Config
125
- Auth.config = {
126
- apiUserToken: user.idToken.jwtToken,
127
- apiGateway,
128
- orgSlug: params.orgSlug,
129
- };
130
- // SET SDK CONFIG
131
- setSdkConfig(Auth.config);
132
-
133
- return refreshCurrentUserOrg();
134
- }
135
-
136
- async function refreshCurrentUserOrg() {
137
- console.debug('refreshing current user org');
138
- const currentUser = await Request.request('/users/current', {
139
- method: 'GET',
140
- headers: {
141
- Accept: 'application/json',
142
- 'Content-Type': 'application/json',
143
- },
144
- });
145
- if (!currentUser) {
146
- throw Error('Could not get current user');
147
- }
148
- const org = currentUser.orgs.find(o => o.orgSlug === Auth.config.orgSlug);
149
- if (org) {
150
- Auth.config.orgId = org.orgId || org.id;
151
- }
152
- // cache config in the fs
153
- storeConfig(Object.assign({}, Auth.config));
154
- return Object.assign({}, Auth.config);
155
- }
package/src/cli.ts DELETED
@@ -1,540 +0,0 @@
1
-
2
- import { create } from './apps/create-app/create';
3
- import { deployApp, removeApp } from './apps/deploy-app/deploy';
4
- import { getAll } from './types/types-extractor';
5
- import { uploadTypes } from './types/types-uploader';
6
- import { UploadOptionSets } from './types/option-set-uploader';
7
- import { ParseOptionSetsLocalFiles, ParseOptionSetsToFolderStructure } from './types/option-set-parser';
8
- import { ParseOptionSetsHierarchyLocalFile, UploadOptionSetsHierarchyLocalFile } from './types/option-set-hierarchy-parser';
9
- import { ExportOptionSetsHierarchies } from './types/option-set-hierarchy-exporter';
10
- import { MergeOptionSets } from './types/option-set-merger';
11
- import { MergeTypeProperties } from './types/types-properties-merger';
12
- import { ParseTypesFromFiles, ParseTypesFromLocalFiles, ParseTypesFromTemplateFromLocalFiles, ParseTypesFromTemplateAndDataFromLocalFiles } from './types/parse-types';
13
- import { loadColors, deleteColors } from './colors/color-loader';
14
- import { listConfig, removeConfig, setConfig } from './config/configCommands';
15
- import { deleteWorkflowTemplates, localDeployWorkflowTemplate, listWorkflowTemplate } from './workflow-templates/workflow-template-commands';
16
- import { installApp, uninstallApp } from './apps/install-app/app-installer';
17
- import { upgradeApp } from './apps/upgrade-app/app-upgrader';
18
- import { cliInstallWorkflowTemplateDefinitions, listWorkflowTemplateDefinitions } from './workflow-template-definitions/workflow-template-definition-commands';
19
- import { configureProject } from './projects/project-uploader';
20
- import { ListProjects, ExportProject } from './projects/project-exporter';
21
- import { Load, UploadAndLoad } from './loader-process/loader-process';
22
- import { uploadUsageInfo } from './types/usage-info-uploader';
23
- import { uploadRuleSets } from './types/rule-set-uploader';
24
- import { UploadOptionSetHierarchies } from './types/option-set-hierarchy-uploader';
25
- import { uploadTypePropertyPolicies } from './types/type-property-policy-uploader';
26
- import { uploadAll } from './types/allUploader';
27
- import { ExportUsers } from './users/user-exporter';
28
- import { UploadUsers } from './users/user-uploader';
29
-
30
- const cliUsage = require('command-line-usage');
31
-
32
- /**
33
- * Built using documentation here:
34
- * https://www.twilio.com/blog/how-to-build-a-cli-with-node-js
35
- */
36
-
37
- export async function cli(args) {
38
- const fullCommand = args[2];
39
- if (!fullCommand) {
40
- printIllegalCommand();
41
- return;
42
- }
43
- const commandParts = fullCommand.split('.');
44
-
45
- if (!commandParts?.length) {
46
- printIllegalCommand();
47
- return;
48
- }
49
-
50
- if (
51
- commandParts?.length < 2 &&
52
- commandParts[0].toLowerCase() !== 'help' &&
53
- commandParts[0].toLowerCase() !== '-help' &&
54
- commandParts[0].toLowerCase() !== '--help'
55
- ) {
56
- printIllegalCommand();
57
- return;
58
- }
59
-
60
- const domain = commandParts[0];
61
- const command = commandParts[1];
62
-
63
- switch (domain) {
64
- case 'app': {
65
- switch (command) {
66
- case 'create': {
67
- create(args);
68
- break;
69
- }
70
- case 'deploy': {
71
- deployApp(args);
72
- break;
73
- }
74
- case 'remove': {
75
- removeApp(args);
76
- break;
77
- }
78
- case 'install': {
79
- installApp();
80
- break;
81
- }
82
- case 'uninstall': {
83
- uninstallApp();
84
- break;
85
- }
86
- case 'upgrade': {
87
- upgradeApp();
88
- break;
89
- }
90
- default: {
91
- printIllegalCommand();
92
- }
93
- }
94
- break;
95
- }
96
- case 'types': {
97
- switch (command) {
98
- case 'getAll': {
99
- getAll(args);
100
- break;
101
- }
102
- case 'uploadAll': {
103
- uploadAll();
104
- break;
105
- }
106
- case 'uploadTypes': {
107
- uploadTypes();
108
- break;
109
- }
110
- case 'uploadOptionSets': {
111
- UploadOptionSets(args);
112
- break;
113
- }
114
- case 'parseOptionSetsLocalFiles': {
115
- ParseOptionSetsLocalFiles(args);
116
- break;
117
- }
118
- case 'parseOptionSetsToFolderStructure': {
119
- ParseOptionSetsToFolderStructure(args);
120
- break;
121
- }
122
- case 'parseOptionSetsHierarchyLocalFile': {
123
- ParseOptionSetsHierarchyLocalFile(args);
124
- break;
125
- }
126
- case 'uploadOptionSetsHierarchyLocalFile': {
127
- UploadOptionSetsHierarchyLocalFile(args);
128
- break;
129
- }
130
- case 'exportOptionSetsHierarchies': {
131
- ExportOptionSetsHierarchies();
132
- break;
133
- }
134
- case 'uploadOptionSetsHierarchies': {
135
- UploadOptionSetHierarchies(args);
136
- break;
137
- }
138
- case 'uploadRuleSets': {
139
- uploadRuleSets(args);
140
- break;
141
- }
142
- case 'uploadUsageInfo': {
143
- uploadUsageInfo(args);
144
- break;
145
- }
146
- case 'uploadTypePropertyPolicies': {
147
- uploadTypePropertyPolicies(args);
148
- break;
149
- }
150
- case 'parseTypesFromLocalFiles': {
151
- ParseTypesFromLocalFiles(args);
152
- break;
153
- }
154
- case 'parseTypesFromTemplateFromLocalFiles': {
155
- ParseTypesFromTemplateFromLocalFiles(args);
156
- break;
157
- }
158
- case 'parseTypesFromTemplateAndDataFromLocalFiles': {
159
- ParseTypesFromTemplateAndDataFromLocalFiles(args);
160
- break;
161
- }
162
- case 'parseTypesFromFiles': {
163
- ParseTypesFromFiles(args);
164
- break;
165
- }
166
- case 'mergeOptionSets': {
167
- MergeOptionSets(args);
168
- break;
169
- }
170
- case 'mergeTypeProperties': {
171
- MergeTypeProperties(args);
172
- break;
173
- }
174
- default: {
175
- printIllegalCommand();
176
- }
177
- }
178
- break;
179
- }
180
- case 'colors': {
181
- switch (command) {
182
- case 'load': {
183
- await loadColors();
184
- break;
185
- }
186
- case 'delete': {
187
- await deleteColors();
188
- break;
189
- }
190
- default: {
191
- printIllegalCommand();
192
- }
193
- }
194
- break;
195
- }
196
- case 'loader': {
197
- switch (command) {
198
- case 'uploadAndLoad': {
199
- await UploadAndLoad(args);
200
- break;
201
- }
202
- case 'load': {
203
- await Load(args);
204
- break;
205
- }
206
- default: {
207
- printIllegalCommand();
208
- }
209
- }
210
- break;
211
- }
212
- case 'projects': {
213
- switch (command) {
214
- case 'load': {
215
- await configureProject(args);
216
- break;
217
- }
218
- case 'list': {
219
- await ListProjects();
220
- break;
221
- }
222
- case 'export': {
223
- await ExportProject(args);
224
- break;
225
- }
226
- default: {
227
- printIllegalCommand();
228
- }
229
- }
230
- break;
231
- }
232
- case 'users': {
233
- switch (command) {
234
- case 'export': {
235
- await ExportUsers();
236
- break;
237
- }
238
- case 'import': {
239
- await UploadUsers();
240
- break;
241
- }
242
- default: {
243
- printIllegalCommand();
244
- }
245
- }
246
- break;
247
- }
248
-
249
- case 'workflow-templates': {
250
- switch (command) {
251
- case 'load': {
252
- await localDeployWorkflowTemplate();
253
- break;
254
- }
255
- case 'delete': {
256
- await deleteWorkflowTemplates();
257
- break;
258
- }
259
- case 'list': {
260
- await listWorkflowTemplate();
261
- break;
262
- }
263
- default: {
264
- printIllegalCommand();
265
- }
266
- }
267
- break;
268
- }
269
- case 'workflow-template-definitions': {
270
- switch (command) {
271
- case 'install': {
272
- await cliInstallWorkflowTemplateDefinitions();
273
- break;
274
- }
275
- case 'list': {
276
- await listWorkflowTemplateDefinitions();
277
- break;
278
- }
279
- default: {
280
- printIllegalCommand();
281
- }
282
- }
283
- break;
284
- }
285
- case 'config': {
286
- switch (command) {
287
- case 'list': {
288
- await listConfig();
289
- break;
290
- }
291
- case 'set': {
292
- await setConfig(args);
293
- break;
294
- }
295
- case 'remove': {
296
- await removeConfig(args);
297
- break;
298
- }
299
- default: {
300
- printIllegalCommand();
301
- }
302
- }
303
- break;
304
- }
305
- case 'help':
306
- case '-help':
307
- case '--help': {
308
- printHelp();
309
- break;
310
- }
311
- default: {
312
- printIllegalCommand();
313
- }
314
- }
315
- }
316
-
317
- function printHelp() {
318
- const sections = [
319
- {
320
- header: 'VibeIQ CLI',
321
- content: 'From your friends at VibeIQ!',
322
- },
323
- ...helpSections,
324
- ];
325
-
326
- const usage = cliUsage(sections);
327
- console.log(usage);
328
- }
329
-
330
- function printIllegalCommand() {
331
- console.log('Illegal command.');
332
-
333
- const usage = cliUsage(helpSections);
334
- console.log(usage);
335
- }
336
-
337
- const helpSections = [
338
- {
339
- header: 'General Usage',
340
- content: [
341
- 'Commands are run by pairing a domain with a command, joining them using a "."',
342
- 'e.g. app.create',
343
- '',
344
- 'All <File Path> options should use the file path relative to the folder the command is being run in and include the file ext.',
345
- ],
346
- },
347
- {
348
- header: 'App Commands - Domain: app',
349
- content: [
350
- {
351
- name: 'create',
352
- summary: 'Create a new app workspace.'
353
- },
354
- {
355
- name: 'deploy [--template-only]',
356
- summary: 'Deploy your app. --template-only can be used to deploy event workflow as a template directly to the org'
357
- },
358
- {
359
- name: 'remove',
360
- summary: 'Remove your app.'
361
- },
362
- {
363
- name: 'install',
364
- summary: 'Install an app to your org.'
365
- },
366
- {
367
- name: 'upgrade',
368
- summary: 'Upgrades or downgrades an existing app in your org.'
369
- },
370
- {
371
- name: 'uninstall',
372
- summary: 'Uninstall an app from your org.'
373
- },
374
- ],
375
- },
376
- {
377
- header: 'Colors Commands - Domain: colors',
378
- content: [{
379
- name: 'load',
380
- summary: 'Load colors from a CSV. Headers (name, hex, red, green, blue) are required'
381
- }
382
- // , {name: 'delete', summary: 'Delete all colors.'}
383
- ],
384
- },
385
- {
386
- header: 'Loader Commands - Domain: loader',
387
- content: [{
388
- name: 'uploadAndLoad <File Path> <Config Path>',
389
- summary: 'Upload a csv file and kick off a load job for the uploaded file. The file path must be a reference to a .csv file and the config path must be a reference to a .json or a .yml file.'
390
- },
391
- {
392
- name: 'load <Config Path>',
393
- summary: 'Upload a csv file and kick off a load job for the uploaded file. The config path must be a reference to a .json or a .yml file.'
394
- }
395
- ],
396
- },
397
- {
398
- header: 'Project Commands - Domain: projects',
399
- content: [{
400
- name: 'load <File Path>',
401
- summary: 'Configure a project from a yml file.'
402
- },
403
- {
404
- name: 'list',
405
- summary: 'Get a list of all projects.'
406
- },
407
- {
408
- name: 'export <Project Name>',
409
- summary: 'Export a project.'
410
- }
411
- ],
412
- },
413
- {
414
- header: 'Users Commands - Domain: users',
415
- content: [
416
- {
417
- name: 'export',
418
- summary: 'Export all users in the org.'
419
- },
420
- {
421
- name: 'import',
422
- summary: 'Import all users in the users.yml file.'
423
- }
424
- ],
425
- },
426
- {
427
- header: 'Workflow Template Commands - Domain: workflow-templates',
428
- content: [
429
- {
430
- name: 'deploy',
431
- summary: 'Deploy your workflow. Assumes a workflow.yml file.'
432
- },
433
- {
434
- name: 'delete',
435
- summary: 'Removes the workflows in the workflow.yml file.'
436
- },
437
- {
438
- name: 'list',
439
- summary: 'Lists the workflow templates in the org'
440
- },
441
- ],
442
- },
443
- {
444
- header: 'Workflow Template Definition Commands - Domain: workflow-template-definitions',
445
- content: [{
446
- name: 'install',
447
- summary: 'Install the template definitions of an app to your org'
448
- },
449
- {
450
- name: 'list',
451
- summary: 'Lists the workflow templates in the org'
452
- }
453
- ],
454
- },
455
- {
456
- header: 'Type Commands - Domain: types',
457
- content: [
458
- {
459
- name: 'getAll',
460
- summary: 'Get all OptionSets and Types for your Org.'
461
- },
462
- {
463
- name: 'uploadTypes',
464
- summary: 'Upload Types for your Org. Types are uploaded from types.yml\n'
465
- },
466
- {
467
- name: 'uploadOptionSets',
468
- summary: 'Upload OptionSets for your Org. OptionSets are loaded from .yml files in the option-sets directory.\n'
469
- },
470
- {
471
- name: 'parseOptionSetsLocalFiles <File Paths> <style>',
472
- summary: 'Parse CSV files into OptionSets. Style denotes the format the csv is in. If the csv file has a column for name and label, use "NameAndLabel". If the file has one column for each option set with the rows being the label value use "LabelsInColumn"\n'
473
- },
474
- {
475
- name: 'parseOptionSetsToFolderStructure <File Path>',
476
- summary: 'Parse single yml file into a folder with separate files per option set.\n'
477
- },
478
- {
479
- name: 'parseOptionSetsHierarchyLocalFile <File Path>',
480
- summary: 'Parse CSV file into OptionSetHierarchy.'
481
- },
482
- {
483
- name: 'uploadOptionSetsHierarchyLocalFile <File Path> <name>',
484
- summary: 'upload CSV file into OptionSetHierarchy.'
485
- },
486
- {
487
- name: 'exportOptionSetsHierarchies',
488
- summary: 'export OptionSetHierarchies into CSVs.\n'
489
- },
490
- {
491
- name: 'uploadAll',
492
- summary: 'Upload an extracted archive of types:getAll.'
493
- },
494
- {
495
- name: 'uploadOptionSetsHierarchies',
496
- summary: 'Upload an extracted option set hierarchies.'
497
- },
498
- {
499
- name: 'uploadRuleSets',
500
- summary: 'Upload an extracted rule set.'
501
- },
502
- {
503
- name: 'uploadUsageInfo',
504
- summary: 'Upload extracted usage info.'
505
- },
506
- {
507
- name: 'uploadTypePropertyPolicies',
508
- summary: 'Upload type property policies.'
509
- },
510
- {
511
- name: 'uploadOptionSetsHierarchyLocalFiles <File Paths> <name>',
512
- summary: 'upload CSV files into OptionSetHierarchies.'
513
- },
514
- {
515
- name: 'parseTypesFromLocalFiles <File Paths>',
516
- summary: 'Parse CSV files into Types and OptionSets from local files.\n'
517
- },
518
- {
519
- name: 'parseTypesFromTemplateFromLocalFiles <File Paths>',
520
- summary: 'Parse CSV files into Types and OptionSets from local type template files.\n'
521
- },
522
- {
523
- name: 'parseTypesFromTemplateAndDataFromLocalFiles <File Paths>',
524
- summary: 'Parse CSV files into Types and OptionSets from local type template and data files.\n'
525
- },
526
- {
527
- name: 'parseTypesFromFiles <fileIds>',
528
- summary: 'Parse CSV files into Types and OptionSets from VibeIQ Files.\n File must be .yml\n'
529
- },
530
- {
531
- name: 'mergeTypeProperties <File Path> <TypePaths>',
532
- summary: 'Merge the TypeProperties from an existing org and the TypeProperties passed in. Add to Types via TypePath File must be .yml\n'
533
- },
534
- {
535
- name: 'mergeOptionSets <File Path>',
536
- summary: 'Merge the OptionSets from an existing org and the OptionSets passed in. OptionSets File must be .yml.',
537
- },
538
- ],
539
- },
540
- ];