contensis-cli 1.6.1-beta.2 → 1.6.1-beta.20

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 (144) hide show
  1. package/dist/index.js +58301 -11
  2. package/dist/index.js.map +4 -4
  3. package/dist/shell.js +58040 -52
  4. package/dist/shell.js.map +4 -4
  5. package/esbuild.config.js +8 -13
  6. package/package.json +3 -2
  7. package/src/commands/create.ts +48 -0
  8. package/src/commands/dev.ts +12 -2
  9. package/src/commands/globalOptions.ts +5 -3
  10. package/src/commands/import.ts +46 -5
  11. package/src/commands/push.ts +8 -1
  12. package/src/commands/set.ts +69 -1
  13. package/src/factories/RequestHandlerFactory.ts +19 -8
  14. package/src/localisation/en-GB.ts +22 -4
  15. package/src/mappers/DevRequests-to-RequestHanderCliArgs.ts +25 -17
  16. package/src/models/CliService.d.ts +5 -1
  17. package/src/providers/GitHubCliModuleProvider.ts +8 -8
  18. package/src/providers/HttpProvider.ts +2 -2
  19. package/src/providers/file-provider.ts +3 -0
  20. package/src/services/ContensisCliService.ts +265 -23
  21. package/src/services/ContensisDevService.ts +99 -35
  22. package/src/shell.ts +7 -1
  23. package/src/util/console.printer.ts +52 -0
  24. package/src/util/logger.ts +3 -4
  25. package/src/util/os.ts +5 -3
  26. package/src/version.ts +1 -1
  27. package/dist/commands/connect.js +0 -44
  28. package/dist/commands/connect.js.map +0 -7
  29. package/dist/commands/copy.js +0 -78
  30. package/dist/commands/copy.js.map +0 -7
  31. package/dist/commands/create.js +0 -170
  32. package/dist/commands/create.js.map +0 -7
  33. package/dist/commands/dev.js +0 -78
  34. package/dist/commands/dev.js.map +0 -7
  35. package/dist/commands/diff.js +0 -57
  36. package/dist/commands/diff.js.map +0 -7
  37. package/dist/commands/execute.js +0 -103
  38. package/dist/commands/execute.js.map +0 -7
  39. package/dist/commands/get.js +0 -330
  40. package/dist/commands/get.js.map +0 -7
  41. package/dist/commands/globalOptions.js +0 -252
  42. package/dist/commands/globalOptions.js.map +0 -7
  43. package/dist/commands/import.js +0 -229
  44. package/dist/commands/import.js.map +0 -7
  45. package/dist/commands/index.js +0 -107
  46. package/dist/commands/index.js.map +0 -7
  47. package/dist/commands/list.js +0 -195
  48. package/dist/commands/list.js.map +0 -7
  49. package/dist/commands/login.js +0 -55
  50. package/dist/commands/login.js.map +0 -7
  51. package/dist/commands/push.js +0 -229
  52. package/dist/commands/push.js.map +0 -7
  53. package/dist/commands/remove.js +0 -193
  54. package/dist/commands/remove.js.map +0 -7
  55. package/dist/commands/set.js +0 -180
  56. package/dist/commands/set.js.map +0 -7
  57. package/dist/commands/update.js +0 -70
  58. package/dist/commands/update.js.map +0 -7
  59. package/dist/factories/RequestHandlerFactory.js +0 -221
  60. package/dist/factories/RequestHandlerFactory.js.map +0 -7
  61. package/dist/localisation/en-GB.js +0 -552
  62. package/dist/localisation/en-GB.js.map +0 -7
  63. package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js +0 -56
  64. package/dist/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.js.map +0 -7
  65. package/dist/mappers/DevInit-to-CIWorkflow.js +0 -409
  66. package/dist/mappers/DevInit-to-CIWorkflow.js.map +0 -7
  67. package/dist/mappers/DevInit-to-RolePermissions.js +0 -56
  68. package/dist/mappers/DevInit-to-RolePermissions.js.map +0 -7
  69. package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js +0 -161
  70. package/dist/mappers/DevRequests-to-RequestHanderCliArgs.js.map +0 -7
  71. package/dist/mappers/MixedFileData.js +0 -83
  72. package/dist/mappers/MixedFileData.js.map +0 -7
  73. package/dist/models/AppError.d.js +0 -2
  74. package/dist/models/AppError.d.js.map +0 -7
  75. package/dist/models/Cache.d.js +0 -2
  76. package/dist/models/Cache.d.js.map +0 -7
  77. package/dist/models/CliService.d.js +0 -17
  78. package/dist/models/CliService.d.js.map +0 -7
  79. package/dist/models/DevService.d.js +0 -17
  80. package/dist/models/DevService.d.js.map +0 -7
  81. package/dist/models/JsModules.d.js +0 -2
  82. package/dist/models/JsModules.d.js.map +0 -7
  83. package/dist/providers/CredentialProvider.js +0 -126
  84. package/dist/providers/CredentialProvider.js.map +0 -7
  85. package/dist/providers/GitHubCliModuleProvider.js +0 -115
  86. package/dist/providers/GitHubCliModuleProvider.js.map +0 -7
  87. package/dist/providers/HttpProvider.js +0 -73
  88. package/dist/providers/HttpProvider.js.map +0 -7
  89. package/dist/providers/ManifestProvider.js +0 -50
  90. package/dist/providers/ManifestProvider.js.map +0 -7
  91. package/dist/providers/SessionCacheProvider.js +0 -132
  92. package/dist/providers/SessionCacheProvider.js.map +0 -7
  93. package/dist/providers/file-provider.js +0 -174
  94. package/dist/providers/file-provider.js.map +0 -7
  95. package/dist/services/ContensisAuthService.js +0 -88
  96. package/dist/services/ContensisAuthService.js.map +0 -7
  97. package/dist/services/ContensisCliService.js +0 -2598
  98. package/dist/services/ContensisCliService.js.map +0 -7
  99. package/dist/services/ContensisDevService.js +0 -387
  100. package/dist/services/ContensisDevService.js.map +0 -7
  101. package/dist/services/ContensisRoleService.js +0 -112
  102. package/dist/services/ContensisRoleService.js.map +0 -7
  103. package/dist/util/api-ids.js +0 -110
  104. package/dist/util/api-ids.js.map +0 -7
  105. package/dist/util/assert.js +0 -62
  106. package/dist/util/assert.js.map +0 -7
  107. package/dist/util/console.printer.js +0 -425
  108. package/dist/util/console.printer.js.map +0 -7
  109. package/dist/util/csv.formatter.js +0 -118
  110. package/dist/util/csv.formatter.js.map +0 -7
  111. package/dist/util/debug.js +0 -29
  112. package/dist/util/debug.js.map +0 -7
  113. package/dist/util/diff.js +0 -118
  114. package/dist/util/diff.js.map +0 -7
  115. package/dist/util/dotenv.js +0 -56
  116. package/dist/util/dotenv.js.map +0 -7
  117. package/dist/util/error.js +0 -36
  118. package/dist/util/error.js.map +0 -7
  119. package/dist/util/fetch.js +0 -69
  120. package/dist/util/fetch.js.map +0 -7
  121. package/dist/util/find.js +0 -39
  122. package/dist/util/find.js.map +0 -7
  123. package/dist/util/git.js +0 -145
  124. package/dist/util/git.js.map +0 -7
  125. package/dist/util/gitignore.js +0 -61
  126. package/dist/util/gitignore.js.map +0 -7
  127. package/dist/util/html.formatter.js +0 -70
  128. package/dist/util/html.formatter.js.map +0 -7
  129. package/dist/util/index.js +0 -68
  130. package/dist/util/index.js.map +0 -7
  131. package/dist/util/json.formatter.js +0 -66
  132. package/dist/util/json.formatter.js.map +0 -7
  133. package/dist/util/logger.js +0 -304
  134. package/dist/util/logger.js.map +0 -7
  135. package/dist/util/os.js +0 -46
  136. package/dist/util/os.js.map +0 -7
  137. package/dist/util/timers.js +0 -49
  138. package/dist/util/timers.js.map +0 -7
  139. package/dist/util/xml.formatter.js +0 -62
  140. package/dist/util/xml.formatter.js.map +0 -7
  141. package/dist/util/yaml.js +0 -44
  142. package/dist/util/yaml.js.map +0 -7
  143. package/dist/version.js +0 -29
  144. package/dist/version.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/localisation/en-GB.ts"],
4
- "sourcesContent": ["import {\n BlockActionType,\n BlockRunningStatus,\n MigrateModelsResult,\n MigrateStatus,\n} from 'migratortron';\nimport pl from 'pluralize';\nimport { GitHelper } from '~/util/git';\nimport { Logger } from '~/util/logger';\nimport { winSlash } from '~/util/os';\n\nexport const LogMessages = {\n app: {\n contensis: () => 'Contensis',\n quit: () => `Goodbye \uD83D\uDC4B\\n`,\n startup: (version: string) =>\n `v${version} \u00A9 2001-${new Date().getFullYear()} Zengenti \uD83C\uDDEC\uD83C\uDDE7. \\n - Creators of Contensis and purveyors of other fine software\\n\\n\uD83D\uDC4B Welcome to the contensis-cli\\n`,\n help: () =>\n 'Press [CTRL]+[C] or type \"quit\" to return to your system shell\\nPress [TAB] for suggestions\\n',\n suggestions: () =>\n `\\n${Logger.errorText('>>')} Press [TAB] for suggestions\\n`,\n autocomplete: () => `\\n${Logger.errorText('>>')} Available commands:`,\n unknownError: () => `Something went wrong...`,\n fileOutput: (format = 'json', path?: string) =>\n `Output ${format} file: ${Logger.infoText(path)}\\n`,\n noFileOutput: () => `No output written\\n`,\n },\n command: {\n notKnown: (command: string) => `${command} is not known`,\n },\n envs: {\n found: (num: number) =>\n `Environments store found containing ${pl('environment', num, true)}`,\n notFound: (alias: string) =>\n `Environment ${Logger.highlightText(alias)} was not found in session cache`,\n removed: (alias: string) =>\n `Removed environment ${Logger.highlightText(alias)} from session cache`,\n tip: () =>\n `Connect to a Contensis cloud instance using \"contensis connect {cms alias}\"`,\n },\n connect: {\n command: {\n name: () => 'connect',\n example: () => `Example call:\\n > connect example-dev`,\n },\n args: {\n alias: {\n name: () => '<alias>',\n description: () => 'the Contensis Cloud alias to connect with',\n },\n },\n noEnv: () => `Cannot connect - no environment alias specified`,\n unreachable: (url: string, status: number) =>\n `Cannot reach ${url}${status ? ` - status ${status}` : ''}`,\n connected: (env: string) => `Current environment set to \"${env}\"`,\n help: () =>\n `Connect to a Contensis cloud instance using \"contensis connect {cms alias}\"`,\n projects: () => `Available projects:`,\n noProjects: () => `Cannot retrieve projects list`,\n tip: () =>\n `Introduce yourself with \"login {username}\" or \"login {clientId} -s {secret}\" or by passing credentials as options with your command`,\n },\n login: {\n command: {\n name: () => 'login',\n usage: () => `<user/clientId> [password] [-s <sharedSecret>]`,\n example: () =>\n `Example call:\\n > login myuserid\\n -- or --\\n > login {clientId} -s {sharedSecret}`,\n },\n args: {\n user: {\n name: () => '<user/clientId>',\n description: () => 'the username to login with',\n },\n password: {\n name: () => '[password]',\n description: () =>\n 'the password to use to login with (optional/insecure)',\n },\n secret: {\n name: () => '-s --sharedSecret <sharedSecret>',\n description: () =>\n 'the shared secret to use when logging in with a client id',\n },\n },\n passwordPrompt: (env?: string, userId?: string) =>\n userId\n ? `Enter password for ${userId}@${env}:`\n : `Please enter a password`,\n failed: (env: string, userId: string) =>\n `Unable to login to ${env} as ${userId}`,\n success: (env: string, userId: string) =>\n `User ${userId} connected to ${env} successfully\\n`,\n insecurePassword: () =>\n `Could not connect to local keystore - your password could be stored unencrypted!`,\n noEnv: () => `No environment set, use \"contensis connect {alias}\" first`,\n noUserId: () => `No user id specified`,\n },\n projects: {\n list: () => `Available projects:`,\n noList: () => `Cannot retrieve projects list`,\n set: (projectId: string) =>\n `Current project is set to ${Logger.highlightText(projectId)}`,\n failedSet: (projectId: string) =>\n `Project ${Logger.highlightText(projectId)} not found`,\n tip: () =>\n `You need to set your current working project with \"set project {projectId}\"`,\n created: (env: string, id: string) =>\n `[${env}] Created project ${Logger.highlightText(id)}`,\n failedCreate: (env: string, id: string) =>\n `[${env}] Unable to create project ${Logger.highlightText(id)}`,\n updated: (env: string, id: string) =>\n `[${env}] Updated project ${Logger.highlightText(id)}`,\n failedUpdate: (env: string, id: string) =>\n `[${env}] Unable to update project ${Logger.highlightText(id)}`,\n },\n migrate: {\n commitTip: () => `Add --commit flag to commit the previewed changes`,\n preview: (verb = 'IMPORT') => `\uD83D\uDD0D ${verb} PREVIEW \uD83D\uDD2D`,\n commit: (verb = 'IMPORT') => `COMMITTING ${verb} \u2728\u2604\uFE0F `,\n imported: (\n env: string,\n commit: boolean,\n entities: { [noun: string]: number }\n ) =>\n `${commit ? `Imported` : `Will import`} ${Object.entries(entities)\n .map(\n ([noun, count], i, arr) =>\n `${i > 0 ? (i === arr.length - 1 ? ' and ' : ', ') : ''}${pl(noun, count, true)}`\n )\n .join('')} into ${env} environment`,\n\n models: {\n result: (\n status: keyof MigrateModelsResult['project']['contentTypes']\n ) => {\n switch (status) {\n case 'created':\n case 'updated':\n return Logger.successText;\n case 'errors':\n return Logger.errorText;\n default:\n return Logger.infoText;\n }\n },\n },\n status: (status: MigrateStatus) => {\n switch (status) {\n case 'no change':\n return Logger.successText;\n case 'create':\n case 'two-pass':\n case 'update':\n case 'delete':\n return Logger.warningText;\n case 'error':\n case 'not found':\n return Logger.errorText;\n default:\n return Logger.infoText;\n }\n },\n },\n models: {\n list: (projectId: string) =>\n `Content models in ${Logger.highlightText(projectId)}:`,\n noList: (projectId: string) =>\n `[${projectId}] Cannot retrieve content models`,\n get: (projectId: string, id: string) =>\n `[${projectId}] Content models ${Logger.infoText(`[ ${id} ]`)}`,\n failedGet: (projectId: string, id: string) =>\n `[${projectId}] Unable to get content models ${Logger.highlightText(id)}`,\n },\n nodes: {\n imported: (env: string, commit: boolean, count: number) =>\n LogMessages.migrate.imported(env, commit, { node: count }),\n failedImport: (env: string) => `[${env}] Unable to import nodes`,\n removed: (env: string, commit: boolean, root: string) =>\n `[${env}] ${commit ? `Deleted` : `Will delete`} nodes at ${root}`,\n failedRemove: (env: string) => `[${env}] Unable to delete nodes`,\n notFound: (env: string) => `[${env}] Nodes were not found `,\n commitTip: () => `Add --commit flag to commit the previewed changes`,\n failedGet: (projectId: string) =>\n `[${projectId}] Cannot retrieve nodes from Site view`,\n get: (projectId: string, root: string, depth: number) =>\n `[${projectId}] Site view nodes at: ${Logger.highlightText(root)}${\n depth ? ` to a depth of ${depth}` : ``\n }\\n`,\n noChange: (env: string) => `[${env}] No changes to be made`,\n },\n contenttypes: {\n list: (projectId: string) =>\n `Content types in ${Logger.highlightText(projectId)}:`,\n get: (projectId: string, id: string) =>\n `[${projectId}] Content type ${Logger.highlightText(id)}`,\n failedGet: (projectId: string, id: string) =>\n `[${projectId}] Unable to get content type ${Logger.highlightText(id)}`,\n created: (projectId: string, id: string, status?: string) =>\n `[${projectId}] Content type ${status}d ${Logger.highlightText(id)}`,\n removed: (env: string, id: string, commit: boolean) =>\n `[${env}] ${\n commit ? `Deleted` : `Will delete`\n } content type(s) ${Logger.highlightText(id)}`,\n failedRemove: (env: string, id: string) =>\n `[${env}] Unable to delete content type(s) ${Logger.highlightText(id)}`,\n },\n components: {\n list: (projectId: string) =>\n `Components in ${Logger.highlightText(projectId)}:`,\n get: (projectId: string, id: string) =>\n `[${projectId}] Component ${Logger.highlightText(id)}`,\n failedGet: (projectId: string, id: string) =>\n `[${projectId}] Unable to get component ${Logger.highlightText(id)}`,\n created: (projectId: string, id: string, status?: string) =>\n `[${projectId}] Component ${status}d ${Logger.highlightText(id)}`,\n removed: (env: string, id: string, commit: boolean) =>\n `[${env}] ${\n commit ? `Deleted` : `Will delete`\n } component(s) ${Logger.highlightText(id)}`,\n failedRemove: (env: string, id: string) =>\n `[${env}] Unable to delete component(s) ${Logger.highlightText(id)}`,\n },\n version: {\n set: (env: string, versionStatus: string) =>\n `[${env}] Content version status set to \"${versionStatus}\"`,\n invalid: (versionStatus: string) =>\n `Content version status \"${versionStatus}\" is not valid, allowed values are \"published\" or \"latest\".`,\n noEnv: () =>\n `No Contensis environment set, connect to your Contensis cloud instance using \"contensis connect {cms alias}\"`,\n },\n entries: {\n imported: (\n env: string,\n commit: boolean,\n entries: number,\n nodes = 0,\n tags = 0\n ) =>\n LogMessages.migrate.imported(env, commit, {\n entry: entries,\n node: nodes,\n tag: tags,\n }),\n failedImport: (env: string) => `[${env}] Unable to import entries`,\n update: {\n preview: () => LogMessages.migrate.preview('UPDATE FIELD'),\n commit: () => LogMessages.migrate.commit('FIELD UPDATES'),\n success: (env: string, commit: boolean, entries: number, nodes = 0) =>\n `${commit ? `Updated` : `Will update`} ${pl('entry', entries, true)}${\n nodes > 0 ? ` and ${pl('node', nodes, true)}` : ''\n } in ${env} environment`,\n failed: (env: string) => `[${env}] Unable to update any entries`,\n },\n removed: (env: string, commit: boolean) =>\n `[${env}] ${commit ? `Deleted` : `Will delete`} entries`,\n failedRemove: (env: string) => `[${env}] Unable to delete entries`,\n notFound: (env: string) => `[${env}] Entries were not found`,\n noChange: (env: string) => `[${env}] No changes to be made`,\n },\n keys: {\n list: (env: string) => `[${env}] API keys:`,\n noList: (env: string) => `[${env}] Cannot retrieve API keys`,\n created: (env: string, name: string) =>\n `[${env}] Created API key ${Logger.highlightText(name)}`,\n tip: () =>\n `Assign your new key to a role with \"set role assignments\", or create a new role with \"create role\"`,\n failedCreate: (env: string, name: string) =>\n `[${env}] Unable to create API key ${Logger.highlightText(name)}`,\n failedUpdate: (env: string, name: string) =>\n `[${env}] Unable to update API key ${Logger.highlightText(name)}`,\n removed: (env: string, id: string) =>\n `[${env}] Deleted API key ${Logger.highlightText(id)}`,\n failedRemove: (env: string, id: string) =>\n `[${env}] Unable to delete API key ${Logger.highlightText(id)}`,\n },\n proxies: {\n list: (env: string, projectId: string | undefined) =>\n `[${env}] Retrieved proxies in project ${projectId}:`,\n noList: (env: string, projectId: string | undefined) =>\n `[${env}] Cannot retrieve proxies in project ${projectId}`,\n // noneExist: () => `Create a role with \"create renderer\"`,\n failedGet: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to find proxy ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n created: (env: string, name: string, projectId: string) =>\n `[${env}] Created proxy ${Logger.highlightText(\n name\n )} in project ${projectId}\\n`,\n failedCreate: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to create proxy ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n setPayload: () => `Updating proxy with details\\n`,\n set: () => `Succesfully updated proxy\\n`,\n failedSet: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to update proxy ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n removed: (env: string, id: string, projectId: string) =>\n `[${env}] Deleted proxy ${Logger.highlightText(\n id\n )} in project ${projectId}\\n`,\n failedRemove: (env: string, id: string, projectId: string) =>\n `[${env}] Unable to delete proxy ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n },\n renderers: {\n list: (env: string, projectId: string | undefined) =>\n `[${env}] Retrieved renderers in project ${projectId}:`,\n noList: (env: string, projectId: string | undefined) =>\n `[${env}] Cannot retrieve renderers in project ${projectId}`,\n // noneExist: () => `Create a role with \"create renderer\"`,\n failedGet: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to find renderer ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n created: (env: string, name: string, projectId: string) =>\n `[${env}] Created renderer ${Logger.highlightText(\n name\n )} in project ${projectId}\\n`,\n failedCreate: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to create renderer ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n setPayload: () => `Updating renderer with details\\n`,\n set: () => `Succesfully updated renderer\\n`,\n failedSet: (env: string, name: string, projectId: string) =>\n `[${env}] Unable to update renderer ${Logger.highlightText(\n name\n )} in project ${projectId}`,\n removed: (env: string, id: string, projectId: string) =>\n `[${env}] Deleted renderer ${Logger.highlightText(\n id\n )} in project ${projectId}\\n`,\n failedRemove: (env: string, id: string, projectId: string) =>\n `[${env}] Unable to delete renderer ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n },\n roles: {\n list: (env: string) => `[${env}] Retrieved roles`,\n noList: (env: string) => `[${env}] Cannot retrieve roles`,\n noneExist: () => `Create a role with \"create role\"`,\n failedGet: (env: string, name: string) =>\n `[${env}] Unable to find role ${Logger.highlightText(name)}`,\n created: (env: string, name: string) =>\n `[${env}] Created role ${Logger.highlightText(name)}\\n`,\n tip: () =>\n `Give access to your role with \"set role assignments\", allow your role to do things with \"set role permissions\"`,\n failedCreate: (env: string, name?: string) =>\n `[${env}] Unable to create role ${Logger.highlightText(name)}`,\n setPayload: () => `Updating role with details\\n`,\n set: () => `Succesfully updated role\\n`,\n failedSet: (env: string, name?: string) =>\n `[${env}] Unable to update role ${Logger.highlightText(name)}`,\n removed: (env: string, id: string) =>\n `[${env}] Deleted role ${Logger.highlightText(id)}\\n`,\n failedRemove: (env: string, id: string) =>\n `[${env}] Unable to delete role ${Logger.highlightText(id)}`,\n },\n taggroups: {\n list: (env: string, length: number) =>\n `[${env}] Retrieved ${pl('tag group', length, true)}`,\n noList: (env: string) => `[${env}] Cannot retrieve tag groups`,\n noneExist: () => `Create a tag group with \"create taggroup <name>\"`,\n imported: (env: string, commit: boolean, groups: number, tags: number) =>\n LogMessages.migrate.imported(env, commit, {\n 'tag group': groups,\n tag: tags,\n }),\n failedGet: (env: string, name: string) =>\n `[${env}] Unable to find a tag group ${Logger.highlightText(name)}`,\n created: (env: string, name: string) =>\n `[${env}] Created tag group ${Logger.highlightText(name)}\\n`,\n tip: () =>\n `Give access to your role with \"set role assignments\", allow your role to do things with \"set role permissions\"`,\n failedCreate: (env: string, name?: string) =>\n `[${env}] Unable to create ${name ? `tag group ${Logger.highlightText(name)}` : 'tag groups'}`,\n removed: (env: string, id: string, commit: boolean) =>\n `[${env}] ${\n commit ? `Deleted` : `Will delete`\n } tag group ${Logger.highlightText(id)}\\n`,\n failedRemove: (env: string, id: string) =>\n `[${env}] Unable to delete tag group ${Logger.highlightText(id)}`,\n },\n tags: {\n list: (env: string, length: number) =>\n `[${env}] Retrieved ${pl('tag', length, true)}`,\n noList: (env: string) => `[${env}] Cannot retrieve tags`,\n noneExist: () =>\n `Create a tag with \"create tag in <groupId> <tag label(s)...>\"`,\n imported: (env: string, commit: boolean, tags: number) =>\n LogMessages.migrate.imported(env, commit, { tag: tags }),\n failedGet: (env: string) => `[${env}] Unable to find tags`,\n created: (env: string, name: string) =>\n `[${env}] Created tag ${Logger.highlightText(name)}\\n`,\n failedCreate: (env: string, name?: string) =>\n `[${env}] Unable to create ${name ? `tag ${Logger.highlightText(name)}` : 'tags'}`,\n removed: (env: string, length: number, commit: boolean) =>\n `[${env}] ${\n !length\n ? 'No tags to delete'\n : `${commit ? `Deleted` : `Will delete`} ${pl('tag', length, true)}\\n`\n }`,\n failedRemove: (env: string, length: number) =>\n `[${env}] Unable to delete tags with ${pl('error', length)}`,\n noChange: (env: string) => `[${env}] No changes to be made`,\n },\n blocks: {\n runningStatus: (status: BlockRunningStatus | 'broken') => {\n switch (status) {\n case 'available':\n return Logger.successText(status);\n case 'pending':\n case 'starting':\n case 'stopped':\n return Logger.warningText(status);\n case 'degraded':\n case 'faulted':\n case 'broken':\n return Logger.errorText(status);\n default:\n return Logger.infoText(status);\n }\n },\n get: (\n id: string,\n branch: string,\n version: string,\n env: string,\n projectId?: string\n ) =>\n `[${env}] ${\n version && version !== 'latest'\n ? `Found v${version}`\n : 'Latest block versions'\n } for ${Logger.infoText(`${branch}/`)}${Logger.highlightText(\n id\n )} in project ${projectId}\\n`,\n noGet: (\n id: string,\n branch: string,\n version: string,\n env: string,\n projectId?: string\n ) =>\n `[${env}] Did not find ${\n version ? `v${version}` : 'any block versions'\n } for ${Logger.highlightText(id)} in branch ${Logger.infoText(\n branch\n )} in ${Logger.infoText(projectId)} project`,\n noGetTip: () =>\n `Check the available blocks and branches in this project by running \"list blocks\"`,\n list: (env: string, projectId?: string) =>\n `[${env}] Blocks in project ${projectId}\\n`,\n noList: (env: string, projectId?: string) =>\n `[${env}] Cannot retrieve blocks in project ${projectId}`,\n getLogs: (id: string, branch: string, env: string, projectId?: string) =>\n `[${env}] Requesting logs from block ${Logger.highlightText(\n id\n )} in branch ${branch} in project ${projectId}`,\n failedGetLogs: (id: string, env: string, projectId?: string) =>\n `[${env}] Unable to fetch block logs for ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n tryPush: (id: string, branch: string, env: string, projectId?: string) =>\n `[${env}] Request to push block ${Logger.highlightText(\n id\n )} in branch ${branch} in project ${projectId}`,\n pushed: (id: string, branch: string, env: string, projectId?: string) =>\n `[${env}] Pushed block ${Logger.highlightText(\n id\n )} in branch ${branch} in project ${projectId}`,\n failedPush: (id: string, env: string, projectId?: string) =>\n `[${env}] Unable to push block ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n failedParsingVersion: () =>\n `Did not find a \"version.versionNo\" in response`,\n actionComplete: (\n action: BlockActionType,\n id: string,\n env: string,\n projectId?: string\n ) =>\n `[${env}] Action ${Logger.highlightText(\n action\n )} on ${Logger.highlightText(\n id\n )} in project ${projectId} requested successfully`,\n actionFailed: (\n action: BlockActionType,\n id: string,\n env: string,\n projectId?: string\n ) =>\n `[${env}] Problem executing ${action} on block ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n deleted: (id: string, env: string, projectId?: string) =>\n `[${env}] Deleted block ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n failedDelete: (id: string, env: string, projectId?: string) =>\n `[${env}] Unable to delete block ${Logger.highlightText(\n id\n )} in project ${projectId}`,\n stopFollow: (id: string, env: string, projectId?: string) =>\n `[${env}]\\n\\n \uD83D\uDC4C stop fetching new ${Logger.highlightText(\n id\n )} logs in project ${projectId}`,\n timeoutFollow: (id: string, env: string, projectId?: string) =>\n `[${env}]\\n\\n \uD83E\uDD0F pausing fetching new ${Logger.highlightText(\n id\n )} logs in project ${projectId} due to too many requests`,\n },\n webhooks: {\n list: (env: string) => `[${env}] Webhook subscriptions:`,\n noList: (env: string) => `[${env}] Cannot retrieve webhook subscriptions`,\n noneExist: () => `No webhook subscriptions exist`,\n created: (env: string, name: string) =>\n `[${env}] Created Webhook subscription ${Logger.highlightText(name)}`,\n failedCreate: (env: string, name: string) =>\n `[${env}] Unable to create Webhook subscription ${Logger.highlightText(\n name\n )}`,\n deleted: (env: string, id: string) =>\n `[${env}] Deleted Webhook subscription ${Logger.highlightText(id)}`,\n failedDelete: (env: string, id: string) =>\n `[${env}] Unable to delete Webhook subscription ${Logger.highlightText(\n id\n )}`,\n },\n workflows: {\n list: (env: string) => `[${env}] Retrieved workflows`,\n noList: (env: string) => `[${env}] Cannot retrieve workflows`,\n noneExist: () => `No workflows found`,\n failedGet: (env: string, name: string) =>\n `[${env}] Unable to find workflow ${Logger.highlightText(name)}`,\n },\n devinit: {\n intro: () => `Contensis developer environment initialisation`,\n //`This will initialise your local working directory to develop with the current connected Contensis project`,\n projectDetails: (\n name: string,\n env: string,\n projectId: string,\n blockId: string,\n git: GitHelper\n ) =>\n `\n Project: ${Logger.standardText(name)}\n - Home: ${Logger.standardText(git.gitcwd())}\n - Repository: ${Logger.standardText(git.home)} \n - Block id: ${Logger.highlightText(blockId)}\n \n Connect to Contensis instance: ${Logger.standardText(env)}\n - Project id: ${Logger.standardText(projectId)}\n `,\n developmentKey: (name: string, existing: boolean) =>\n ` - ${\n !existing ? 'Create development API key' : 'Development API key found'\n }: ${Logger[!existing ? 'highlightText' : 'standardText'](name)}`,\n deploymentKey: (name: string, existing: boolean) =>\n ` - ${\n !existing ? 'Create deployment API key' : 'Deployment API key found'\n }: ${Logger[!existing ? 'highlightText' : 'standardText'](name)}`,\n ciIntro: (git: GitHelper, location: 'git' | 'env') =>\n `We will create API keys with permissions to use this project with Contensis, and add a job to your CI that will deploy a container build.\n ${\n location === 'git'\n ? `We will ask you to add secrets/variables to your git repository to give your workflow permission to push a Block to Contensis.\n ${Logger.infoText(`You could visit ${git.secretsUri} to check that you can see repository settings, \n a page not found generally indicates you need to ask the repo owner for permission to add repository secrets, \n or ask the repo owner to add these secrets for you.`)}`\n : ''\n }`,\n ciDetails: (filename: string) =>\n `Add push-block job to CI file: ${Logger.highlightText(filename)}\\n`,\n ciMultipleChoices: () =>\n `Multiple GitHub workflow files found\\n${Logger.infoText(\n `Tell us which GitHub workflow builds a container image after each push:`\n )}`,\n ciMultipleBuildJobChoices: () =>\n `Multiple build jobs found in workflow\\n${Logger.infoText(\n `Choose the build job that produces a fresh container image to push to a block:`\n )}`,\n ciMultipleJobChoices: () =>\n `Other jobs found in workflow\\n${Logger.infoText(\n `Choose the job that produces a fresh container image we can push to a block:`\n )}`,\n ciMultipleAppImageVarChoices: () =>\n `Do one of these variables point to your tagged app image?\\n${Logger.infoText(\n `we have included a default choice - ensure your build image is tagged exactly the same as this`\n )}`,\n ciEnterOwnAppImagePrompt: (git: GitHelper) =>\n `Tell us the registry uri your app image is tagged and pushed with (\u23CE accept default) \\n${Logger.infoText(\n `Tip: ${\n git.type === 'github'\n ? `GitHub context variables available\\nhttps://docs.github.com/en/actions/learn-github-actions/variables#using-contexts-to-access-variable-values`\n : `GitLab CI/CD variables available\\nhttps://docs.gitlab.com/ee/ci/variables/`\n }`\n )}\\n`,\n confirm: () =>\n `Confirm these details are correct so we can make changes to your project`,\n createDevKey: (keyName: string, existing: boolean) =>\n `${\n !existing ? 'Created' : 'Checked permissions for'\n } development API key ${Logger.standardText(keyName)}`,\n createDeployKey: (keyName: string, existing: boolean) =>\n `${\n !existing ? 'Created' : 'Checked permissions for'\n } deployment API key ${Logger.standardText(keyName)}`,\n createKeyFail: (keyName: string, existing: boolean) =>\n `Failed to ${\n !existing ? 'create' : 'update'\n } API key ${Logger.highlightText(keyName)}`,\n writeEnvFile: () => `Written .env file to project home directory`,\n useEnvFileTip: () =>\n `You should alter existing project code that connects a Contensis client to use the variables from this file`,\n writeCiFile: (ciFilePath: string) =>\n `Updated CI file ${Logger.standardText(winSlash(ciFilePath))}`,\n ciFileNoChanges: (ciFilePath: string) =>\n `No updates needed for CI file ${Logger.standardText(\n winSlash(ciFilePath)\n )}`,\n ciBlockTip: (blockId: string, env: string, projectId: string) =>\n `A job is included to deploy your built container image to ${Logger.standardText(\n projectId\n )} at ${Logger.standardText(env)} in a block called ${Logger.standardText(\n blockId\n )}`,\n addGitSecretsIntro: () =>\n `We have created an API key that allows you to deploy your app image to a Contensis Block but we need you to add these details to your GitLab repository.`,\n addGitSecretsHelp: (git: GitHelper, id?: string, secret?: string) =>\n `Add secrets or variables in your repository's settings page\\n\\nGo to ${Logger.highlightText(\n git.secretsUri\n )}\\n\\n${\n git.type === 'github'\n ? `Add a \"New repository secret\"`\n : `Expand \"Variables\" and hit \"Add variable\"`\n }\\n\\n ${\n git.type === 'github' ? `Secret name:` : `Key:`\n } ${Logger.highlightText(`CONTENSIS_CLIENT_ID`)}\\n ${\n git.type === 'github' ? `Secret:` : `Value:`\n } ${Logger.standardText(\n id\n )}\\n\\n ${`Add one more secret/variable to the repository`}\\n\\n ${\n git.type === 'github' ? `Secret name:` : `Key:`\n } ${Logger.highlightText(`CONTENSIS_SHARED_SECRET`)}\\n ${\n git.type === 'github' ? `Secret:` : `Value:`\n } ${Logger.standardText(secret)}`,\n accessTokenFetch: () =>\n `Please wait, fetching Delivery API access token \u23F3`,\n accessTokenSuccess: (token: string) =>\n `Successfully fetched Delivery API token\\n ${Logger.infoText(token)}`,\n accessTokenFailed: () =>\n `Something went wrong! If the problem persists, please contact our support team \uD83D\uDEDF`,\n accessTokenPermission: () =>\n `We need permission to fetch your Delivery API token, please try again \u26A0\uFE0F`,\n clientDetailsLocation: () =>\n `Which option would you like to use for storing your client ID and secret`,\n clientDetailsInGit: (git: GitHelper) =>\n `${\n git.type === 'github' ? 'GitHub' : 'GitLab'\n } variables (recommended for public repositories)`,\n clientDetailsInEnv: () =>\n `Env variables (recommended for private repositories)`,\n success: () => `Contensis developer environment initialisation complete`,\n partialSuccess: () =>\n `Contensis developer environment initialisation completed with errors`,\n failed: () => `Contensis developer environment initialisation failed`,\n dryRun: () =>\n `Contensis developer environment initialisation dry run completed`,\n dryRunKeyMessage: (dryRun: boolean) =>\n dryRun ? '<< not created: dry-run >>' : undefined,\n noChanges: () =>\n `No changes were made to your project, run the command again without the ${Logger.highlightText(\n '--dry-run'\n )} flag to update your project with these changes`,\n startProjectTip: () =>\n `Start up your project in the normal way for development`,\n blockIdQuestion: () =>\n `Please enter your block id, this should be unquie and in kebab case e.g ${Logger.highlightText(\n 'my-awesome-website'\n )}`,\n },\n devrequests: {\n install: {\n notFound: (repo: string) =>\n `Could not find a release in ${repo} repo - please check github`,\n download: (repo: string, version: string) => `Found release ${version}`,\n downloading: (repo: string, version: string) =>\n `Downloading ${repo} ${version}`,\n downloadFail: (repo: string, version: string) =>\n `Problem downloading release ${version} from ${repo}`,\n downloaded: (repo: string, version: string) =>\n `Downloaded ${repo} ${version}`,\n applyUpdate: (version: string, existing: string) =>\n `Use updated version ${version} ${Logger.infoText(\n `(replaces ${existing})`\n )}?`,\n },\n launch: () => `Launching request handler for local development`,\n overrideBlock: () => `Which block will you be running?`,\n overrideUri: () => `How to access your development site`,\n spawn: () =>\n `If you see a firewall popup requesting network access, it is safe to approve`,\n exited: (code: number | null) =>\n `Request handler exited with code ${code}\\n`,\n errored: (error: Error) =>\n `Could not launch request handler due to error \\n${error}`,\n },\n};\n"],
5
- "mappings": "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",
6
- "names": ["pl"]
7
- }
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ContensisCliService_to_RequestHanderSiteConfigYaml_exports = {};
20
- __export(ContensisCliService_to_RequestHanderSiteConfigYaml_exports, {
21
- mapSiteConfigYaml: () => mapSiteConfigYaml
22
- });
23
- module.exports = __toCommonJS(ContensisCliService_to_RequestHanderSiteConfigYaml_exports);
24
- const mapSiteConfigYaml = async (cli) => {
25
- var _a, _b;
26
- const credentials = await cli.GetCredentials(cli.env.lastUserId);
27
- const blocks = [];
28
- const blocksRaw = await cli.PrintBlocks();
29
- for (const block of blocksRaw || []) {
30
- const versions = await cli.PrintBlockVersions(
31
- block.id,
32
- "default",
33
- "latest"
34
- );
35
- if (versions == null ? void 0 : versions[0]) {
36
- blocks.push({
37
- id: versions[0].id,
38
- baseUri: versions[0].previewUrl
39
- });
40
- }
41
- }
42
- const siteConfig = {
43
- alias: cli.currentEnv,
44
- projectId: cli.currentProject,
45
- accessToken: "",
46
- clientId: ((_a = credentials == null ? void 0 : credentials.current) == null ? void 0 : _a.account) || "",
47
- sharedSecret: ((_b = credentials == null ? void 0 : credentials.current) == null ? void 0 : _b.password) || "",
48
- blocks
49
- };
50
- return siteConfig;
51
- };
52
- // Annotate the CommonJS export names for ESM import in node:
53
- 0 && (module.exports = {
54
- mapSiteConfigYaml
55
- });
56
- //# sourceMappingURL=ContensisCliService-to-RequestHanderSiteConfigYaml.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/mappers/ContensisCliService-to-RequestHanderSiteConfigYaml.ts"],
4
- "sourcesContent": ["import ContensisCli from '~/services/ContensisCliService';\n\ninterface ISiteConfigYaml {\n alias: string;\n projectId: string;\n accessToken: string;\n clientId: string;\n sharedSecret: string;\n blocks: {\n id: string;\n baseUri: string;\n }[];\n}\n\nexport const mapSiteConfigYaml = async (cli: ContensisCli) => {\n const credentials = await cli.GetCredentials(cli.env.lastUserId);\n\n const blocks = [];\n const blocksRaw = await cli.PrintBlocks();\n\n for (const block of blocksRaw || []) {\n const versions = await cli.PrintBlockVersions(\n block.id,\n 'default',\n 'latest'\n );\n if (versions?.[0]) {\n blocks.push({\n id: versions[0].id,\n baseUri: versions[0].previewUrl,\n });\n }\n }\n\n const siteConfig: ISiteConfigYaml = {\n alias: cli.currentEnv,\n projectId: cli.currentProject,\n accessToken: '',\n clientId: credentials?.current?.account || '',\n sharedSecret: credentials?.current?.password || '',\n blocks,\n };\n return siteConfig;\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAcO,MAAM,oBAAoB,OAAO,QAAsB;AAd9D;AAeE,QAAM,cAAc,MAAM,IAAI,eAAe,IAAI,IAAI,UAAU;AAE/D,QAAM,SAAS,CAAC;AAChB,QAAM,YAAY,MAAM,IAAI,YAAY;AAExC,aAAW,SAAS,aAAa,CAAC,GAAG;AACnC,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AACA,QAAI,qCAAW,IAAI;AACjB,aAAO,KAAK;AAAA,QACV,IAAI,SAAS,CAAC,EAAE;AAAA,QAChB,SAAS,SAAS,CAAC,EAAE;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,aAA8B;AAAA,IAClC,OAAO,IAAI;AAAA,IACX,WAAW,IAAI;AAAA,IACf,aAAa;AAAA,IACb,YAAU,gDAAa,YAAb,mBAAsB,YAAW;AAAA,IAC3C,gBAAc,gDAAa,YAAb,mBAAsB,aAAY;AAAA,IAChD;AAAA,EACF;AACA,SAAO;AACT;",
6
- "names": []
7
- }
@@ -1,409 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var DevInit_to_CIWorkflow_exports = {};
30
- __export(DevInit_to_CIWorkflow_exports, {
31
- mapCIWorkflowContent: () => mapCIWorkflowContent
32
- });
33
- module.exports = __toCommonJS(DevInit_to_CIWorkflow_exports);
34
- var import_inquirer = __toESM(require("inquirer"));
35
- var import_jsonpath_plus = require("jsonpath-plus");
36
- var import_file_provider = require("../providers/file-provider");
37
- var import_diff = require("../util/diff");
38
- var import_logger = require("../util/logger");
39
- var import_yaml2 = require("../util/yaml");
40
- const mapCIWorkflowContent = async (cli, loc) => {
41
- const workflowFile = (0, import_file_provider.readFile)(cli.git.ciFilePath);
42
- if (!workflowFile) return void 0;
43
- const workflowDoc = (0, import_yaml2.parseYamlDocument)(workflowFile);
44
- const workflowJS = workflowDoc.toJS();
45
- if (cli.git.type === "github") {
46
- const newWorkflow = await mapGitHubActionCIWorkflowContent(
47
- cli,
48
- workflowDoc,
49
- workflowJS,
50
- loc
51
- );
52
- return {
53
- existingWorkflow: workflowFile,
54
- newWorkflow,
55
- diff: (0, import_diff.diffFileContent)(workflowFile, newWorkflow)
56
- };
57
- } else if (cli.git.type === "gitlab") {
58
- const newWorkflow = await mapGitLabCIWorkflowContent(
59
- cli,
60
- workflowDoc,
61
- workflowJS,
62
- loc
63
- );
64
- return {
65
- existingWorkflow: workflowFile,
66
- newWorkflow,
67
- diff: (0, import_diff.diffFileContent)(workflowFile, newWorkflow)
68
- };
69
- }
70
- };
71
- const findExistingJobSteps = (path, json, resultType) => {
72
- const existingJobStep = (0, import_jsonpath_plus.JSONPath)({
73
- path,
74
- json,
75
- resultType
76
- });
77
- return existingJobStep;
78
- };
79
- const findPath = (path) => typeof path === "string" && path.includes(".") ? path.split(".").map((p) => Number(p) || Number(p) !== 0 ? p : Number(p)) : path;
80
- const setWorkflowElement = (workflowDoc, path, value) => {
81
- if (workflowDoc.hasIn(findPath(path))) {
82
- workflowDoc.setIn(findPath(path), value);
83
- } else {
84
- workflowDoc.addIn(findPath(path), value);
85
- }
86
- };
87
- const mapGitLabCIWorkflowContent = async (cli, workflowDoc, workflowJS, loc) => {
88
- const addGitLabJobStage = {
89
- stage: "push-block",
90
- variables: {
91
- block_id: cli.blockId,
92
- alias: cli.currentEnv,
93
- project_id: cli.currentProject,
94
- client_id: loc === "env" ? cli.deployCredentials.clientId : "$CONTENSIS_CLIENT_ID",
95
- shared_secret: loc === "env" ? cli.deployCredentials.clientSecret : "$CONTENSIS_SHARED_SECRET"
96
- }
97
- };
98
- if (loc === "git") {
99
- workflowDoc.deleteIn(findPath(`variables.CONTENSIS_CLIENT_ID`));
100
- workflowDoc.deleteIn(findPath(`variables.CONTENSIS_SHARED_SECRET`));
101
- } else {
102
- setWorkflowElement(
103
- workflowDoc,
104
- `variables.CONTENSIS_CLIENT_ID`,
105
- cli.deployCredentials.clientId || cli.messages.devinit.dryRunKeyMessage(!!cli.command.options.dryRun)
106
- );
107
- setWorkflowElement(
108
- workflowDoc,
109
- `variables.CONTENSIS_CLIENT_SECRET`,
110
- cli.deployCredentials.clientSecret || cli.messages.devinit.dryRunKeyMessage(!!cli.command.options.dryRun)
111
- );
112
- }
113
- const addAppImageUri = async () => {
114
- const appImageUri = await determineAppImageUri(
115
- cli,
116
- Object.entries(workflowJS.variables || {}),
117
- "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME/app:build-$CI_PIPELINE_IID"
118
- );
119
- if (appImageUri.addVar)
120
- setWorkflowElement(
121
- workflowDoc,
122
- `variables.${appImageUri.var}`,
123
- appImageUri.uri
124
- );
125
- if (appImageUri.var)
126
- addGitLabJobStage.variables["image_uri"] = `$${appImageUri.var}`;
127
- };
128
- const existingJobStep = findExistingJobSteps(
129
- '$..[?(@property === "stage" && @.match(/^push-block/i))]^',
130
- workflowJS,
131
- "all"
132
- );
133
- if (existingJobStep.length) {
134
- const step = existingJobStep[0];
135
- const stepPath = step.path.replace("$[", "").replaceAll("][", ".").replace("]", "").replaceAll("'", "");
136
- cli.log.info(
137
- `Found existing Job step:
138
- ${stepPath}
139
- stage: ${step.value.stage}
140
- `
141
- );
142
- setWorkflowElement(
143
- workflowDoc,
144
- `${stepPath}.variables.alias`,
145
- cli.currentEnv
146
- );
147
- setWorkflowElement(
148
- workflowDoc,
149
- `${stepPath}.variables.project_id`,
150
- cli.currentProject
151
- );
152
- setWorkflowElement(
153
- workflowDoc,
154
- `${stepPath}.variables.block_id`,
155
- cli.blockId
156
- );
157
- setWorkflowElement(
158
- workflowDoc,
159
- `${stepPath}.variables.client_id`,
160
- "$CONTENSIS_CLIENT_ID"
161
- );
162
- setWorkflowElement(
163
- workflowDoc,
164
- `${stepPath}.variables.shared_secret`,
165
- "$CONTENSIS_SHARED_SECRET"
166
- );
167
- } else {
168
- await addAppImageUri();
169
- workflowDoc.addIn(["stages"], "push-block");
170
- workflowDoc.addIn([], {
171
- key: "push-to-contensis",
172
- value: addGitLabJobStage
173
- });
174
- setWorkflowElement(
175
- workflowDoc,
176
- `include`,
177
- "https://gitlab.zengenti.com/ops/contensis-ci/-/raw/main/push-block.yml"
178
- );
179
- }
180
- cli.log.debug(`New file content to write
181
-
182
- ${workflowDoc}`);
183
- const newWorkflow = workflowDoc.toString({ lineWidth: 0 });
184
- return newWorkflow;
185
- };
186
- const mapGitHubActionCIWorkflowContent = async (cli, workflowDoc, workflowJS, loc) => {
187
- const addGitHubActionJobStep = {
188
- name: "Push block to Contensis",
189
- id: "push-block",
190
- uses: "contensis/block-push@v1",
191
- with: {
192
- "block-id": cli.blockId,
193
- // 'image-uri': '${{ steps.build.outputs.image-uri }}',
194
- alias: cli.currentEnv,
195
- "project-id": cli.currentProject,
196
- "client-id": loc === "env" ? "${{ env.CONTENSIS_CLIENT_ID }}" : "${{ secrets.CONTENSIS_CLIENT_ID }}",
197
- "shared-secret": loc === "env" ? "${{ env.CONTENSIS_SHARED_SECRET }}" : "${{ secrets.CONTENSIS_SHARED_SECRET }}"
198
- }
199
- };
200
- const addAppImageUri = async () => {
201
- const appImageUri = await determineAppImageUri(
202
- cli,
203
- Object.entries(workflowJS.env || {}),
204
- "ghcr.io/${{ github.repository }}/${{ github.ref_name }}/app"
205
- );
206
- if (appImageUri.addVar)
207
- setWorkflowElement(
208
- workflowDoc,
209
- `env.${appImageUri.var}`,
210
- appImageUri.uri
211
- );
212
- if (appImageUri.var)
213
- addGitHubActionJobStep.with["image-uri"] = `\${{ env.${appImageUri.var} }}:build-\${{ github.run_number }}`;
214
- };
215
- const existingJobStep = findExistingJobSteps(
216
- '$.jobs..steps.*[?(@property === "uses" && @.match(/^contensis\\/block-push/i))]^',
217
- workflowJS,
218
- "all"
219
- );
220
- if (loc === "git") {
221
- workflowDoc.deleteIn(findPath(`env.CONTENSIS_CLIENT_ID`));
222
- workflowDoc.deleteIn(findPath(`env.CONTENSIS_SHARED_SECRET`));
223
- } else {
224
- setWorkflowElement(
225
- workflowDoc,
226
- `env.CONTENSIS_CLIENT_ID`,
227
- cli.deployCredentials.clientId
228
- );
229
- setWorkflowElement(
230
- workflowDoc,
231
- "env.CONTENSIS_SHARED_SECRET",
232
- cli.deployCredentials.clientSecret
233
- );
234
- }
235
- if (existingJobStep.length) {
236
- const step = existingJobStep[0];
237
- const stepPath = step.path.replace("$[", "").replaceAll("][", ".").replace("]", "").replaceAll("'", "");
238
- cli.log.info(
239
- `Found existing Job step: ${stepPath}
240
- - name: ${step.value.name}
241
- id: ${step.value.id}
242
- `
243
- );
244
- setWorkflowElement(workflowDoc, `${stepPath}.with.alias`, cli.currentEnv);
245
- setWorkflowElement(
246
- workflowDoc,
247
- `${stepPath}.with.project-id`,
248
- cli.currentProject
249
- );
250
- setWorkflowElement(workflowDoc, `${stepPath}.with.block-id`, cli.blockId);
251
- setWorkflowElement(
252
- workflowDoc,
253
- `${stepPath}.with.client-id`,
254
- loc === "env" ? "${{ env.CONTENSIS_CLIENT_ID }}" : "${{ secrets.CONTENSIS_CLIENT_ID }}"
255
- );
256
- setWorkflowElement(
257
- workflowDoc,
258
- `${stepPath}.with.shared-secret`,
259
- loc === "env" ? "${{ env.CONTENSIS_SHARED_SECRET }}" : "${{ secrets.CONTENSIS_SHARED_SECRET }}"
260
- );
261
- } else {
262
- const existingBuildJobStep = findExistingJobSteps(
263
- "$.jobs[?(@property.match(/build/i))]",
264
- workflowJS,
265
- "all"
266
- );
267
- let needs;
268
- if (existingBuildJobStep.length > 1) {
269
- const choices = existingBuildJobStep.map((s) => s.parentProperty);
270
- choices.push(new import_inquirer.default.Separator());
271
- choices.push("none");
272
- if (choices.includes("build-app")) needs = "build-app";
273
- else {
274
- ({ needs } = await import_inquirer.default.prompt([
275
- {
276
- type: "list",
277
- prefix: "\u231B",
278
- message: cli.messages.devinit.ciMultipleBuildJobChoices(),
279
- name: "needs",
280
- choices,
281
- default: choices.find(
282
- (s) => typeof s === "string" && s.includes("docker")
283
- )
284
- }
285
- ]));
286
- }
287
- cli.log.raw("");
288
- } else if (existingBuildJobStep.length === 1)
289
- needs = existingBuildJobStep[0].parentProperty;
290
- if (existingBuildJobStep.length === 0 || needs === "none") {
291
- const choices = Object.keys(workflowJS.jobs);
292
- choices.push(new import_inquirer.default.Separator());
293
- choices.push("none");
294
- ({ needs } = await import_inquirer.default.prompt([
295
- {
296
- type: "list",
297
- prefix: "\u231B",
298
- message: cli.messages.devinit.ciMultipleJobChoices(),
299
- name: "needs",
300
- choices,
301
- default: choices.find(
302
- (j) => typeof j === "string" && j.includes("docker")
303
- )
304
- }
305
- ]));
306
- if (needs === "none") needs = void 0;
307
- cli.log.raw("");
308
- }
309
- await addAppImageUri();
310
- const newJob = {
311
- name: "Push block to Contensis",
312
- "runs-on": "ubuntu-latest",
313
- needs,
314
- steps: [addGitHubActionJobStep]
315
- };
316
- workflowDoc.addIn(["jobs"], {
317
- key: "deploy",
318
- value: newJob
319
- });
320
- }
321
- const workflowIsValid = (0, import_yaml2.validateWorkflowYaml)(workflowDoc.toString());
322
- if (workflowIsValid === true) {
323
- cli.log.success(`GitHub workflow YAML is valid`);
324
- cli.log.debug(`New file content to write
325
-
326
- ${workflowDoc}`);
327
- } else if (Array.isArray(workflowIsValid)) {
328
- (0, import_logger.logError)(
329
- [
330
- ...workflowIsValid.map(
331
- (res) => new Error(`${res.code}: ${res.detail || res.title}`)
332
- ),
333
- workflowDoc.toString()
334
- ],
335
- `GitHub workflow YAML did not pass validation check`
336
- );
337
- }
338
- const newWorkflow = workflowDoc.toString({ lineWidth: 0 });
339
- return newWorkflow;
340
- };
341
- const determineAppImageUri = async (cli, vars, defaultUri) => {
342
- const imageVars = vars.filter(
343
- ([varname]) => varname.toLowerCase().includes("image")
344
- );
345
- const appImageVars = imageVars.filter(
346
- ([varname, value]) => !varname.toLowerCase().includes("builder_") && (varname.toLowerCase().includes("app_") || varname.toLowerCase().includes("build_") || (value == null ? void 0 : value.toLowerCase().includes("/app")))
347
- );
348
- const appImageUriGuess = appImageVars == null ? void 0 : appImageVars[0];
349
- let appImageUri;
350
- let appImageVar;
351
- if (appImageUriGuess) {
352
- cli.log.success(
353
- `Found variable ${cli.log.standardText(
354
- appImageUriGuess[0]
355
- )} we'll use for pulling the block image from: ${cli.log.infoText(
356
- appImageUriGuess[1]
357
- )}`
358
- );
359
- appImageVar = appImageUriGuess[0];
360
- } else {
361
- const choices = vars.map((v) => v[0]);
362
- const enterOwnMsg = "enter my own / use default";
363
- choices.push(new import_inquirer.default.Separator());
364
- choices.push(enterOwnMsg);
365
- choices.push(defaultUri);
366
- ({ appImageVar, appImageUri } = await import_inquirer.default.prompt([
367
- // First question determines if an existing env variable
368
- // already containes the tagged app image uri
369
- {
370
- type: "list",
371
- prefix: "\u{1F433}",
372
- message: cli.messages.devinit.ciMultipleAppImageVarChoices(),
373
- name: "appImageVar",
374
- choices,
375
- default: choices.find(
376
- (v) => typeof v === "string" && v.toLowerCase().includes("image")
377
- )
378
- },
379
- // Subsequent prompt allows input of an image-uri if needed
380
- {
381
- type: "input",
382
- when(answers) {
383
- return [enterOwnMsg, defaultUri].includes(answers.appImageVar);
384
- },
385
- prefix: `
386
-
387
- \u{1F517}`,
388
- message: cli.messages.devinit.ciEnterOwnAppImagePrompt(cli.git),
389
- name: "appImageUri",
390
- default: defaultUri
391
- }
392
- ]));
393
- cli.log.raw("");
394
- if ([enterOwnMsg, defaultUri].includes(appImageVar || ""))
395
- appImageVar = void 0;
396
- }
397
- if (appImageVar)
398
- appImageUri = cli.git.type === "github" ? `\${{ env.${appImageVar} }}` : `$${appImageVar}`;
399
- return {
400
- addVar: !appImageVar,
401
- uri: appImageUri,
402
- var: appImageVar || "BUILD_IMAGE"
403
- };
404
- };
405
- // Annotate the CommonJS export names for ESM import in node:
406
- 0 && (module.exports = {
407
- mapCIWorkflowContent
408
- });
409
- //# sourceMappingURL=DevInit-to-CIWorkflow.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/mappers/DevInit-to-CIWorkflow.ts"],
4
- "sourcesContent": ["import inquirer from 'inquirer';\nimport { JSONPath, JSONPathOptions } from 'jsonpath-plus';\nimport { Document } from 'yaml';\nimport {\n GitHubActionPushBlockJob,\n GitHubActionPushBlockJobStep,\n GitLabPushBlockJobStage,\n} from '~/models/DevService';\nimport { readFile } from '~/providers/file-provider';\nimport ContensisDev from '~/services/ContensisDevService';\nimport { diffFileContent } from '~/util/diff';\nimport { logError } from '~/util/logger';\nimport { normaliseLineEndings } from '~/util/os';\nimport { parseYamlDocument, validateWorkflowYaml } from '~/util/yaml';\n\ntype MappedWorkflowOutput = {\n existingWorkflow: string;\n newWorkflow: string;\n diff: string;\n};\n\nexport const mapCIWorkflowContent = async (\n cli: ContensisDev,\n loc: 'git' | 'env'\n): Promise<MappedWorkflowOutput | undefined> => {\n // get existing workflow file\n const workflowFile = readFile(cli.git.ciFilePath);\n if (!workflowFile) return undefined;\n\n // parse yaml to js\n const workflowDoc = parseYamlDocument(workflowFile);\n const workflowJS = workflowDoc.toJS();\n\n if (cli.git.type === 'github') {\n const newWorkflow = await mapGitHubActionCIWorkflowContent(\n cli,\n workflowDoc,\n workflowJS,\n loc\n );\n return {\n existingWorkflow: workflowFile,\n newWorkflow,\n diff: diffFileContent(workflowFile, newWorkflow),\n };\n } else if (cli.git.type === 'gitlab') {\n const newWorkflow = await mapGitLabCIWorkflowContent(\n cli,\n workflowDoc,\n workflowJS,\n loc\n );\n return {\n existingWorkflow: workflowFile,\n newWorkflow,\n diff: diffFileContent(workflowFile, newWorkflow),\n };\n }\n};\n\nconst findExistingJobSteps = (\n path: string,\n json: any,\n resultType: JSONPathOptions['resultType']\n) => {\n const existingJobStep = JSONPath({\n path,\n json,\n resultType: resultType,\n });\n\n return existingJobStep;\n};\n\nconst findPath = (path: string | any[]) =>\n typeof path === 'string' && path.includes('.')\n ? path.split('.').map(p => (Number(p) || Number(p) !== 0 ? p : Number(p)))\n : path;\n\nconst setWorkflowElement = (\n workflowDoc: Document,\n path: string | any[],\n value: any\n) => {\n if (workflowDoc.hasIn(findPath(path))) {\n workflowDoc.setIn(findPath(path), value);\n } else {\n workflowDoc.addIn(findPath(path), value);\n }\n};\n\nconst mapGitLabCIWorkflowContent = async (\n cli: ContensisDev,\n workflowDoc: Document,\n workflowJS: any,\n loc: 'env' | 'git'\n) => {\n const addGitLabJobStage: GitLabPushBlockJobStage = {\n stage: 'push-block',\n variables: {\n block_id: cli.blockId,\n alias: cli.currentEnv,\n project_id: cli.currentProject,\n client_id:\n loc === 'env' ? cli.deployCredentials.clientId : '$CONTENSIS_CLIENT_ID',\n shared_secret:\n loc === 'env'\n ? cli.deployCredentials.clientSecret\n : '$CONTENSIS_SHARED_SECRET',\n },\n };\n\n if (loc === 'git') {\n // remove env vars from yml if we choose git\n workflowDoc.deleteIn(findPath(`variables.CONTENSIS_CLIENT_ID`));\n workflowDoc.deleteIn(findPath(`variables.CONTENSIS_SHARED_SECRET`));\n } else {\n setWorkflowElement(\n workflowDoc,\n `variables.CONTENSIS_CLIENT_ID`,\n cli.deployCredentials.clientId ||\n cli.messages.devinit.dryRunKeyMessage(!!cli.command.options.dryRun)\n );\n setWorkflowElement(\n workflowDoc,\n `variables.CONTENSIS_CLIENT_SECRET`,\n cli.deployCredentials.clientSecret ||\n cli.messages.devinit.dryRunKeyMessage(!!cli.command.options.dryRun)\n );\n }\n\n const addAppImageUri = async () => {\n // Look in document level \"variables\"\n const appImageUri = await determineAppImageUri(\n cli,\n Object.entries(workflowJS.variables || {}),\n '$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME/app:build-$CI_PIPELINE_IID'\n );\n\n if (appImageUri.addVar)\n setWorkflowElement(\n workflowDoc,\n `variables.${appImageUri.var}`,\n appImageUri.uri\n );\n\n if (appImageUri.var)\n addGitLabJobStage.variables['image_uri'] = `\\$${appImageUri.var}`;\n };\n\n // look for line in job\n // jobname[stage: push-block]\n const existingJobStep = findExistingJobSteps(\n '$..[?(@property === \"stage\" && @.match(/^push-block/i))]^',\n workflowJS,\n 'all'\n );\n\n // update job step\n if (existingJobStep.length) {\n // cli.log.json(existingJobStep);\n\n // The [0] index means we're only looking at updating the first instance in the file\n const step = existingJobStep[0];\n\n // Path looks like this \"$['job_name']\"\n // We want it to look like this \"job_name\"\n const stepPath = step.path\n .replace('$[', '')\n .replaceAll('][', '.')\n .replace(']', '')\n .replaceAll(\"'\", '');\n\n cli.log.info(\n `Found existing Job step:\n ${stepPath}\n stage: ${step.value.stage}\\n`\n );\n\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.variables.alias`,\n cli.currentEnv\n );\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.variables.project_id`,\n cli.currentProject\n );\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.variables.block_id`,\n cli.blockId\n );\n\n // This is likely not needed when updating an existing push-block job step\n // we are assuming this is a forked/copied workflow with an already working image-uri reference\n // await addAppImageUri();\n\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.variables.client_id`,\n '$CONTENSIS_CLIENT_ID'\n );\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.variables.shared_secret`,\n '$CONTENSIS_SHARED_SECRET'\n );\n } else {\n // create job with push step\n\n // Does a series of checks and prompts to determine the correct image-uri\n // for the app container build\n await addAppImageUri();\n\n // Add the new \"job\" to the Yaml Document\n workflowDoc.addIn(['stages'], 'push-block');\n workflowDoc.addIn([], {\n key: 'push-to-contensis',\n value: addGitLabJobStage,\n });\n setWorkflowElement(\n workflowDoc,\n `include`,\n 'https://gitlab.zengenti.com/ops/contensis-ci/-/raw/main/push-block.yml'\n );\n }\n\n cli.log.debug(`New file content to write\\n\\n${workflowDoc}`);\n\n const newWorkflow = workflowDoc.toString({ lineWidth: 0 });\n return newWorkflow;\n};\n\nconst mapGitHubActionCIWorkflowContent = async (\n cli: ContensisDev,\n workflowDoc: Document,\n workflowJS: any,\n loc: 'git' | 'env'\n) => {\n const addGitHubActionJobStep: GitHubActionPushBlockJobStep = {\n name: 'Push block to Contensis',\n id: 'push-block',\n uses: 'contensis/block-push@v1',\n with: {\n 'block-id': cli.blockId,\n // 'image-uri': '${{ steps.build.outputs.image-uri }}',\n alias: cli.currentEnv,\n 'project-id': cli.currentProject,\n 'client-id':\n loc === 'env'\n ? '${{ env.CONTENSIS_CLIENT_ID }}'\n : '${{ secrets.CONTENSIS_CLIENT_ID }}',\n 'shared-secret':\n loc === 'env'\n ? '${{ env.CONTENSIS_SHARED_SECRET }}'\n : '${{ secrets.CONTENSIS_SHARED_SECRET }}',\n },\n };\n\n const addAppImageUri = async () => {\n // Look in document level \"env\" vars\n const appImageUri = await determineAppImageUri(\n cli,\n Object.entries(workflowJS.env || {}),\n 'ghcr.io/${{ github.repository }}/${{ github.ref_name }}/app'\n );\n\n if (appImageUri.addVar)\n setWorkflowElement(\n workflowDoc,\n `env.${appImageUri.var}`,\n appImageUri.uri\n );\n // workflowDoc.addIn(['env'], { [appImageUri.var]: appImageUri.uri });\n\n if (appImageUri.var)\n addGitHubActionJobStep.with[\n 'image-uri'\n ] = `\\${{ env.${appImageUri.var} }}:build-\\${{ github.run_number }}`;\n };\n\n // look for line in job\n // jobs.x.steps[uses: contensis/block-push]\n const existingJobStep = findExistingJobSteps(\n '$.jobs..steps.*[?(@property === \"uses\" && @.match(/^contensis\\\\/block-push/i))]^',\n workflowJS,\n 'all'\n );\n\n if (loc === 'git') {\n // remove env vars from yml if we choose git\n workflowDoc.deleteIn(findPath(`env.CONTENSIS_CLIENT_ID`));\n workflowDoc.deleteIn(findPath(`env.CONTENSIS_SHARED_SECRET`));\n } else {\n // update 'env' and store client id and secret\n setWorkflowElement(\n workflowDoc,\n `env.CONTENSIS_CLIENT_ID`,\n cli.deployCredentials.clientId\n );\n setWorkflowElement(\n workflowDoc,\n 'env.CONTENSIS_SHARED_SECRET',\n cli.deployCredentials.clientSecret\n );\n }\n\n // update job step\n if (existingJobStep.length) {\n //cli.log.json(existingJobStep);\n\n // The [0] index means we're only looking at updating the first instance in the file\n const step = existingJobStep[0];\n\n // Path looks like this \"$['jobs']['build']['steps'][3]\"\n // We want it to look like this \"jobs.build.steps.3\"\n const stepPath = step.path\n .replace('$[', '')\n .replaceAll('][', '.')\n .replace(']', '')\n .replaceAll(\"'\", '');\n\n cli.log.info(\n `Found existing Job step: ${stepPath}\n - name: ${step.value.name}\n id: ${step.value.id}\\n`\n );\n\n setWorkflowElement(workflowDoc, `${stepPath}.with.alias`, cli.currentEnv);\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.with.project-id`,\n cli.currentProject\n );\n setWorkflowElement(workflowDoc, `${stepPath}.with.block-id`, cli.blockId);\n\n // This is likely not needed when updating an existing push-block job step\n // we are assuming this is a forked/copied workflow with an already working image-uri reference\n // await addAppImageUri();\n\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.with.client-id`,\n loc === 'env'\n ? '${{ env.CONTENSIS_CLIENT_ID }}'\n : '${{ secrets.CONTENSIS_CLIENT_ID }}'\n );\n setWorkflowElement(\n workflowDoc,\n `${stepPath}.with.shared-secret`,\n loc === 'env'\n ? '${{ env.CONTENSIS_SHARED_SECRET }}'\n : '${{ secrets.CONTENSIS_SHARED_SECRET }}'\n );\n } else {\n // create job with push step\n\n // is there already a job with a property name containing \"build\"?\n const existingBuildJobStep = findExistingJobSteps(\n '$.jobs[?(@property.match(/build/i))]',\n workflowJS,\n 'all'\n ) as JSONPathOptions[]; // This isn't the correct type for this object\n\n let needs: string | undefined;\n // There are multiple jobs called *build*\n if (existingBuildJobStep.length > 1) {\n // prompt which build job we should depend on before pushing the block\n const choices = existingBuildJobStep.map(s => s.parentProperty);\n choices.push(new inquirer.Separator() as any);\n choices.push('none');\n if (choices.includes('build-app')) needs = 'build-app';\n else {\n ({ needs } = await inquirer.prompt([\n {\n type: 'list',\n prefix: '\u231B',\n message: cli.messages.devinit.ciMultipleBuildJobChoices(),\n name: 'needs',\n choices,\n default: choices.find(\n s => typeof s === 'string' && s.includes('docker')\n ),\n },\n ]));\n }\n\n cli.log.raw('');\n } else if (existingBuildJobStep.length === 1)\n // Exactly one job step found containing a property name of *build*\n // we'll assume that is the one the push-block job depends on\n needs = existingBuildJobStep[0].parentProperty;\n\n if (existingBuildJobStep.length === 0 || needs === 'none') {\n // No existing build step found or chosen, offer all job steps in prompt\n const choices = Object.keys(workflowJS.jobs);\n choices.push(new inquirer.Separator() as any);\n choices.push('none');\n\n ({ needs } = await inquirer.prompt([\n {\n type: 'list',\n prefix: '\u231B',\n message: cli.messages.devinit.ciMultipleJobChoices(),\n name: 'needs',\n choices,\n default: choices.find(\n j => typeof j === 'string' && j.includes('docker')\n ),\n },\n ]));\n if (needs === 'none') needs = undefined;\n cli.log.raw('');\n }\n\n // Does a series of checks and prompts to determine the correct image-uri\n // for the app container build\n await addAppImageUri();\n\n const newJob: GitHubActionPushBlockJob = {\n name: 'Push block to Contensis',\n 'runs-on': 'ubuntu-latest',\n needs,\n steps: [addGitHubActionJobStep],\n };\n\n // Add the new \"job\" to the Yaml Document\n workflowDoc.addIn(['jobs'], {\n key: 'deploy',\n value: newJob,\n });\n }\n\n // Workflow validation provided by @action-validator/core package\n const workflowIsValid = validateWorkflowYaml(workflowDoc.toString());\n\n // We could expand validation to check for having a build step to wait for\n // or if a valid image-uri attribute is set\n if (workflowIsValid === true) {\n cli.log.success(`GitHub workflow YAML is valid`);\n cli.log.debug(`New file content to write\\n\\n${workflowDoc}`);\n } else if (Array.isArray(workflowIsValid)) {\n // Errors\n logError(\n [\n ...workflowIsValid.map(\n res => new Error(`${res.code}: ${res.detail || res.title}`)\n ),\n workflowDoc.toString(),\n ],\n `GitHub workflow YAML did not pass validation check`\n );\n }\n\n const newWorkflow = workflowDoc.toString({ lineWidth: 0 });\n return newWorkflow;\n};\n\nconst determineAppImageUri = async (\n cli: ContensisDev,\n vars: [string, string][],\n defaultUri: string\n) => {\n // Determine container image-uri via variables and/or prompts\n\n // Find vars including the word \"image\"\n const imageVars = vars.filter(([varname]) =>\n varname.toLowerCase().includes('image')\n );\n // Find vars named \"image\" that include the word \"app\"\n const appImageVars = imageVars.filter(\n ([varname, value]) =>\n !varname.toLowerCase().includes('builder_') &&\n (varname.toLowerCase().includes('app_') ||\n varname.toLowerCase().includes('build_') ||\n value?.toLowerCase().includes('/app'))\n );\n\n const appImageUriGuess = appImageVars?.[0];\n\n let appImageUri: string | undefined;\n let appImageVar: string | undefined;\n\n if (appImageUriGuess) {\n cli.log.success(\n `Found variable ${cli.log.standardText(\n appImageUriGuess[0]\n )} we'll use for pulling the block image from: ${cli.log.infoText(\n appImageUriGuess[1]\n )}`\n );\n appImageVar = appImageUriGuess[0];\n } else {\n // Could not find a suitable var to use for block image-uri\n // prompt for an app image uri\n const choices = vars.map(v => v[0]);\n const enterOwnMsg = 'enter my own / use default';\n\n choices.push(new inquirer.Separator() as any);\n choices.push(enterOwnMsg);\n choices.push(defaultUri);\n\n ({ appImageVar, appImageUri } = await inquirer.prompt([\n // First question determines if an existing env variable\n // already containes the tagged app image uri\n {\n type: 'list',\n prefix: '\uD83D\uDC33',\n message: cli.messages.devinit.ciMultipleAppImageVarChoices(),\n name: 'appImageVar',\n choices,\n default: choices.find(\n v => typeof v === 'string' && v.toLowerCase().includes('image')\n ),\n },\n // Subsequent prompt allows input of an image-uri if needed\n {\n type: 'input',\n when(answers) {\n return [enterOwnMsg, defaultUri].includes(answers.appImageVar);\n },\n prefix: `\\n \\n\uD83D\uDD17`,\n message: cli.messages.devinit.ciEnterOwnAppImagePrompt(cli.git),\n name: 'appImageUri',\n default: defaultUri,\n },\n ]));\n cli.log.raw('');\n\n // this indicates a uri has been added and we will add a new var\n // to the workflow to encourage users to update the docker tag part\n // of their build workflow to use the same var as the push-block job/step\n if ([enterOwnMsg, defaultUri].includes(appImageVar || ''))\n appImageVar = undefined;\n }\n\n if (appImageVar)\n appImageUri =\n cli.git.type === 'github'\n ? `\\${{ env.${appImageVar} }}`\n : `\\$${appImageVar}`;\n\n // TODO: prompt further for image tag\n\n return {\n addVar: !appImageVar,\n uri: appImageUri,\n var: appImageVar || 'BUILD_IMAGE',\n };\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AACrB,2BAA0C;AAO1C,2BAAyB;AAEzB,kBAAgC;AAChC,oBAAyB;AAEzB,IAAAA,eAAwD;AAQjD,MAAM,uBAAuB,OAClC,KACA,QAC8C;AAE9C,QAAM,mBAAe,+BAAS,IAAI,IAAI,UAAU;AAChD,MAAI,CAAC,aAAc,QAAO;AAG1B,QAAM,kBAAc,gCAAkB,YAAY;AAClD,QAAM,aAAa,YAAY,KAAK;AAEpC,MAAI,IAAI,IAAI,SAAS,UAAU;AAC7B,UAAM,cAAc,MAAM;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,MACL,kBAAkB;AAAA,MAClB;AAAA,MACA,UAAM,6BAAgB,cAAc,WAAW;AAAA,IACjD;AAAA,EACF,WAAW,IAAI,IAAI,SAAS,UAAU;AACpC,UAAM,cAAc,MAAM;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,MACL,kBAAkB;AAAA,MAClB;AAAA,MACA,UAAM,6BAAgB,cAAc,WAAW;AAAA,IACjD;AAAA,EACF;AACF;AAEA,MAAM,uBAAuB,CAC3B,MACA,MACA,eACG;AACH,QAAM,sBAAkB,+BAAS;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,MAAM,WAAW,CAAC,SAChB,OAAO,SAAS,YAAY,KAAK,SAAS,GAAG,IACzC,KAAK,MAAM,GAAG,EAAE,IAAI,OAAM,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,OAAO,CAAC,CAAE,IACvE;AAEN,MAAM,qBAAqB,CACzB,aACA,MACA,UACG;AACH,MAAI,YAAY,MAAM,SAAS,IAAI,CAAC,GAAG;AACrC,gBAAY,MAAM,SAAS,IAAI,GAAG,KAAK;AAAA,EACzC,OAAO;AACL,gBAAY,MAAM,SAAS,IAAI,GAAG,KAAK;AAAA,EACzC;AACF;AAEA,MAAM,6BAA6B,OACjC,KACA,aACA,YACA,QACG;AACH,QAAM,oBAA6C;AAAA,IACjD,OAAO;AAAA,IACP,WAAW;AAAA,MACT,UAAU,IAAI;AAAA,MACd,OAAO,IAAI;AAAA,MACX,YAAY,IAAI;AAAA,MAChB,WACE,QAAQ,QAAQ,IAAI,kBAAkB,WAAW;AAAA,MACnD,eACE,QAAQ,QACJ,IAAI,kBAAkB,eACtB;AAAA,IACR;AAAA,EACF;AAEA,MAAI,QAAQ,OAAO;AAEjB,gBAAY,SAAS,SAAS,+BAA+B,CAAC;AAC9D,gBAAY,SAAS,SAAS,mCAAmC,CAAC;AAAA,EACpE,OAAO;AACL;AAAA,MACE;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB,YACpB,IAAI,SAAS,QAAQ,iBAAiB,CAAC,CAAC,IAAI,QAAQ,QAAQ,MAAM;AAAA,IACtE;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB,gBACpB,IAAI,SAAS,QAAQ,iBAAiB,CAAC,CAAC,IAAI,QAAQ,QAAQ,MAAM;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,iBAAiB,YAAY;AAEjC,UAAM,cAAc,MAAM;AAAA,MACxB;AAAA,MACA,OAAO,QAAQ,WAAW,aAAa,CAAC,CAAC;AAAA,MACzC;AAAA,IACF;AAEA,QAAI,YAAY;AACd;AAAA,QACE;AAAA,QACA,aAAa,YAAY,GAAG;AAAA,QAC5B,YAAY;AAAA,MACd;AAEF,QAAI,YAAY;AACd,wBAAkB,UAAU,WAAW,IAAI,IAAK,YAAY,GAAG;AAAA,EACnE;AAIA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAGA,MAAI,gBAAgB,QAAQ;AAI1B,UAAM,OAAO,gBAAgB,CAAC;AAI9B,UAAM,WAAW,KAAK,KACnB,QAAQ,MAAM,EAAE,EAChB,WAAW,MAAM,GAAG,EACpB,QAAQ,KAAK,EAAE,EACf,WAAW,KAAK,EAAE;AAErB,QAAI,IAAI;AAAA,MACN;AAAA,YACM,QAAQ;AAAA,qBACC,KAAK,MAAM,KAAK;AAAA;AAAA,IACjC;AAEA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,IAAI;AAAA,IACN;AACA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,IAAI;AAAA,IACN;AACA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,IAAI;AAAA,IACN;AAMA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX;AAAA,IACF;AACA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX;AAAA,IACF;AAAA,EACF,OAAO;AAKL,UAAM,eAAe;AAGrB,gBAAY,MAAM,CAAC,QAAQ,GAAG,YAAY;AAC1C,gBAAY,MAAM,CAAC,GAAG;AAAA,MACpB,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC;AACD;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI,MAAM;AAAA;AAAA,EAAgC,WAAW,EAAE;AAE3D,QAAM,cAAc,YAAY,SAAS,EAAE,WAAW,EAAE,CAAC;AACzD,SAAO;AACT;AAEA,MAAM,mCAAmC,OACvC,KACA,aACA,YACA,QACG;AACH,QAAM,yBAAuD;AAAA,IAC3D,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,YAAY,IAAI;AAAA;AAAA,MAEhB,OAAO,IAAI;AAAA,MACX,cAAc,IAAI;AAAA,MAClB,aACE,QAAQ,QACJ,mCACA;AAAA,MACN,iBACE,QAAQ,QACJ,uCACA;AAAA,IACR;AAAA,EACF;AAEA,QAAM,iBAAiB,YAAY;AAEjC,UAAM,cAAc,MAAM;AAAA,MACxB;AAAA,MACA,OAAO,QAAQ,WAAW,OAAO,CAAC,CAAC;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,YAAY;AACd;AAAA,QACE;AAAA,QACA,OAAO,YAAY,GAAG;AAAA,QACtB,YAAY;AAAA,MACd;AAGF,QAAI,YAAY;AACd,6BAAuB,KACrB,WACF,IAAI,YAAY,YAAY,GAAG;AAAA,EACnC;AAIA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,MAAI,QAAQ,OAAO;AAEjB,gBAAY,SAAS,SAAS,yBAAyB,CAAC;AACxD,gBAAY,SAAS,SAAS,6BAA6B,CAAC;AAAA,EAC9D,OAAO;AAEL;AAAA,MACE;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB;AAAA,IACxB;AACA;AAAA,MACE;AAAA,MACA;AAAA,MACA,IAAI,kBAAkB;AAAA,IACxB;AAAA,EACF;AAGA,MAAI,gBAAgB,QAAQ;AAI1B,UAAM,OAAO,gBAAgB,CAAC;AAI9B,UAAM,WAAW,KAAK,KACnB,QAAQ,MAAM,EAAE,EAChB,WAAW,MAAM,GAAG,EACpB,QAAQ,KAAK,EAAE,EACf,WAAW,KAAK,EAAE;AAErB,QAAI,IAAI;AAAA,MACN,4BAA4B,QAAQ;AAAA,oBACtB,KAAK,MAAM,IAAI;AAAA,kBACjB,KAAK,MAAM,EAAE;AAAA;AAAA,IAC3B;AAEA,uBAAmB,aAAa,GAAG,QAAQ,eAAe,IAAI,UAAU;AACxE;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,IAAI;AAAA,IACN;AACA,uBAAmB,aAAa,GAAG,QAAQ,kBAAkB,IAAI,OAAO;AAMxE;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,QAAQ,QACJ,mCACA;AAAA,IACN;AACA;AAAA,MACE;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,QAAQ,QACJ,uCACA;AAAA,IACN;AAAA,EACF,OAAO;AAIL,UAAM,uBAAuB;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI;AAEJ,QAAI,qBAAqB,SAAS,GAAG;AAEnC,YAAM,UAAU,qBAAqB,IAAI,OAAK,EAAE,cAAc;AAC9D,cAAQ,KAAK,IAAI,gBAAAC,QAAS,UAAU,CAAQ;AAC5C,cAAQ,KAAK,MAAM;AACnB,UAAI,QAAQ,SAAS,WAAW,EAAG,SAAQ;AAAA,WACtC;AACH,SAAC,EAAE,MAAM,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA,UACjC;AAAA,YACE,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,SAAS,IAAI,SAAS,QAAQ,0BAA0B;AAAA,YACxD,MAAM;AAAA,YACN;AAAA,YACA,SAAS,QAAQ;AAAA,cACf,OAAK,OAAO,MAAM,YAAY,EAAE,SAAS,QAAQ;AAAA,YACnD;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAEA,UAAI,IAAI,IAAI,EAAE;AAAA,IAChB,WAAW,qBAAqB,WAAW;AAGzC,cAAQ,qBAAqB,CAAC,EAAE;AAElC,QAAI,qBAAqB,WAAW,KAAK,UAAU,QAAQ;AAEzD,YAAM,UAAU,OAAO,KAAK,WAAW,IAAI;AAC3C,cAAQ,KAAK,IAAI,gBAAAA,QAAS,UAAU,CAAQ;AAC5C,cAAQ,KAAK,MAAM;AAEnB,OAAC,EAAE,MAAM,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA,QACjC;AAAA,UACE,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,IAAI,SAAS,QAAQ,qBAAqB;AAAA,UACnD,MAAM;AAAA,UACN;AAAA,UACA,SAAS,QAAQ;AAAA,YACf,OAAK,OAAO,MAAM,YAAY,EAAE,SAAS,QAAQ;AAAA,UACnD;AAAA,QACF;AAAA,MACF,CAAC;AACD,UAAI,UAAU,OAAQ,SAAQ;AAC9B,UAAI,IAAI,IAAI,EAAE;AAAA,IAChB;AAIA,UAAM,eAAe;AAErB,UAAM,SAAmC;AAAA,MACvC,MAAM;AAAA,MACN,WAAW;AAAA,MACX;AAAA,MACA,OAAO,CAAC,sBAAsB;AAAA,IAChC;AAGA,gBAAY,MAAM,CAAC,MAAM,GAAG;AAAA,MAC1B,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAGA,QAAM,sBAAkB,mCAAqB,YAAY,SAAS,CAAC;AAInE,MAAI,oBAAoB,MAAM;AAC5B,QAAI,IAAI,QAAQ,+BAA+B;AAC/C,QAAI,IAAI,MAAM;AAAA;AAAA,EAAgC,WAAW,EAAE;AAAA,EAC7D,WAAW,MAAM,QAAQ,eAAe,GAAG;AAEzC;AAAA,MACE;AAAA,QACE,GAAG,gBAAgB;AAAA,UACjB,SAAO,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE;AAAA,QAC5D;AAAA,QACA,YAAY,SAAS;AAAA,MACvB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,YAAY,SAAS,EAAE,WAAW,EAAE,CAAC;AACzD,SAAO;AACT;AAEA,MAAM,uBAAuB,OAC3B,KACA,MACA,eACG;AAIH,QAAM,YAAY,KAAK;AAAA,IAAO,CAAC,CAAC,OAAO,MACrC,QAAQ,YAAY,EAAE,SAAS,OAAO;AAAA,EACxC;AAEA,QAAM,eAAe,UAAU;AAAA,IAC7B,CAAC,CAAC,SAAS,KAAK,MACd,CAAC,QAAQ,YAAY,EAAE,SAAS,UAAU,MACzC,QAAQ,YAAY,EAAE,SAAS,MAAM,KACpC,QAAQ,YAAY,EAAE,SAAS,QAAQ,MACvC,+BAAO,cAAc,SAAS;AAAA,EACpC;AAEA,QAAM,mBAAmB,6CAAe;AAExC,MAAI;AACJ,MAAI;AAEJ,MAAI,kBAAkB;AACpB,QAAI,IAAI;AAAA,MACN,kBAAkB,IAAI,IAAI;AAAA,QACxB,iBAAiB,CAAC;AAAA,MACpB,CAAC,gDAAgD,IAAI,IAAI;AAAA,QACvD,iBAAiB,CAAC;AAAA,MACpB,CAAC;AAAA,IACH;AACA,kBAAc,iBAAiB,CAAC;AAAA,EAClC,OAAO;AAGL,UAAM,UAAU,KAAK,IAAI,OAAK,EAAE,CAAC,CAAC;AAClC,UAAM,cAAc;AAEpB,YAAQ,KAAK,IAAI,gBAAAA,QAAS,UAAU,CAAQ;AAC5C,YAAQ,KAAK,WAAW;AACxB,YAAQ,KAAK,UAAU;AAEvB,KAAC,EAAE,aAAa,YAAY,IAAI,MAAM,gBAAAA,QAAS,OAAO;AAAA;AAAA;AAAA,MAGpD;AAAA,QACE,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,IAAI,SAAS,QAAQ,6BAA6B;AAAA,QAC3D,MAAM;AAAA,QACN;AAAA,QACA,SAAS,QAAQ;AAAA,UACf,OAAK,OAAO,MAAM,YAAY,EAAE,YAAY,EAAE,SAAS,OAAO;AAAA,QAChE;AAAA,MACF;AAAA;AAAA,MAEA;AAAA,QACE,MAAM;AAAA,QACN,KAAK,SAAS;AACZ,iBAAO,CAAC,aAAa,UAAU,EAAE,SAAS,QAAQ,WAAW;AAAA,QAC/D;AAAA,QACA,QAAQ;AAAA;AAAA;AAAA,QACR,SAAS,IAAI,SAAS,QAAQ,yBAAyB,IAAI,GAAG;AAAA,QAC9D,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,QAAI,IAAI,IAAI,EAAE;AAKd,QAAI,CAAC,aAAa,UAAU,EAAE,SAAS,eAAe,EAAE;AACtD,oBAAc;AAAA,EAClB;AAEA,MAAI;AACF,kBACE,IAAI,IAAI,SAAS,WACb,YAAY,WAAW,QACvB,IAAK,WAAW;AAIxB,SAAO;AAAA,IACL,QAAQ,CAAC;AAAA,IACT,KAAK;AAAA,IACL,KAAK,eAAe;AAAA,EACtB;AACF;",
6
- "names": ["import_yaml", "inquirer"]
7
- }