From e0ce71278bec48e211b9870a2980339349e37fe4 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 09:42:36 +0200 Subject: [PATCH 01/10] TA-3012: Create package diff command --- src/api/diff-api.ts | 23 +++ src/commands/config.command.ts | 5 + src/content-cli-config.ts | 17 ++ src/interfaces/diff-package.transport.ts | 18 ++ src/services/package-manager/diff-service.ts | 73 ++++++++ tests/config/config-diff.spec.ts | 178 +++++++++++++++++++ tsconfig.json | 2 +- 7 files changed, 315 insertions(+), 1 deletion(-) create mode 100644 src/api/diff-api.ts create mode 100644 src/interfaces/diff-package.transport.ts create mode 100644 src/services/package-manager/diff-service.ts create mode 100644 tests/config/config-diff.spec.ts diff --git a/src/api/diff-api.ts b/src/api/diff-api.ts new file mode 100644 index 0000000..d11e399 --- /dev/null +++ b/src/api/diff-api.ts @@ -0,0 +1,23 @@ +import {PackageDiffTransport} from "../interfaces/diff-package.transport"; +import {httpClientV2} from "../services/http-client-service.v2"; +import * as FormData from "form-data"; + +class DiffApi { + public static readonly INSTANCE = new DiffApi(); + + public async diffPackages(data: FormData): Promise { + return httpClientV2.postFile( + "/package-manager/api/core/packages/diff/configuration", + data + ); + } + + public async hasChanges(data: FormData): Promise { + return httpClientV2.postFile( + "/package-manager/api/core/packages/diff/configuration/has-changes", + data + ); + } +} + +export const diffApi = DiffApi.INSTANCE; \ No newline at end of file diff --git a/src/commands/config.command.ts b/src/commands/config.command.ts index 7f72fd3..f2ad14e 100644 --- a/src/commands/config.command.ts +++ b/src/commands/config.command.ts @@ -1,5 +1,6 @@ import {batchImportExportService} from "../services/package-manager/batch-import-export-service"; import {variableService} from "../services/package-manager/variable-service"; +import {diffService} from "../services/package-manager/diff-service"; export class ConfigCommand { @@ -26,4 +27,8 @@ export class ConfigCommand { public batchImportPackages(file: string, overwrite: boolean): Promise { return batchImportExportService.batchImportPackages(file, overwrite); } + + public diffPackages(file: string, hasChanges: boolean, jsonResponse: boolean): Promise { + return diffService.diffPackages(file, hasChanges, jsonResponse); + } } \ No newline at end of file diff --git a/src/content-cli-config.ts b/src/content-cli-config.ts index aba0fc2..748bd69 100644 --- a/src/content-cli-config.ts +++ b/src/content-cli-config.ts @@ -70,6 +70,22 @@ export class Config { return program; } + + public static diff(program: CommanderStatic): CommanderStatic { + program + .command("diff") + .description("Command to diff configs of packages") + .option("-p, --profile ", "Profile of the team/realm which you want to use to diff the packages with") + .option("--hasChanges", "Flag to return only the information if the package has changes without the actual changes") + .option("--json", "Return the response as a JSON file") + .requiredOption("-f --file ", "Exported packages file (relative path)") + .action(async cmd => { + await new ConfigCommand().diffPackages(cmd.file, cmd.hasChanges, cmd.json); + process.exit(); + }); + + return program; + } } const loadAllCommands = () => { @@ -77,6 +93,7 @@ const loadAllCommands = () => { Config.listVariables(commander); Config.export(commander); Config.import(commander); + Config.diff(commander) commander.parse(process.argv); }; diff --git a/src/interfaces/diff-package.transport.ts b/src/interfaces/diff-package.transport.ts new file mode 100644 index 0000000..54ca495 --- /dev/null +++ b/src/interfaces/diff-package.transport.ts @@ -0,0 +1,18 @@ +export interface ConfigurationChangeTransport { + op: string; + path: string; + from: string; + value: object; +} + +export interface NodeDiffTransport { + nodeKey: string; + changes: ConfigurationChangeTransport[]; +} + +export interface PackageDiffTransport { + packageKey: string; + hasChanges: boolean + packageChanges: ConfigurationChangeTransport[]; + nodesWithChanges: NodeDiffTransport[]; +} \ No newline at end of file diff --git a/src/services/package-manager/diff-service.ts b/src/services/package-manager/diff-service.ts new file mode 100644 index 0000000..160054b --- /dev/null +++ b/src/services/package-manager/diff-service.ts @@ -0,0 +1,73 @@ +import * as AmdZip from "adm-zip"; +import {Readable} from "stream"; +import * as FormData from "form-data"; +import {diffApi} from "../../api/diff-api"; +import {FileService, fileService} from "../file-service"; +import {logger} from "../../util/logger"; +import {PackageDiffTransport} from "../../interfaces/diff-package.transport"; +import {v4 as uuidv4} from "uuid"; + +class DiffService { + + public async diffPackages(file: string, hasChanges: boolean, jsonResponse: boolean): Promise { + if (hasChanges) { + await this.hasChanges(file, jsonResponse); + } else { + await this.diffPackagesAndReturnDiff(file, jsonResponse); + } + } + + private async hasChanges(file: string, jsonResponse: boolean): Promise { + const packages = new AmdZip(file); + const formData = this.buildBodyForDiff(packages); + const returnedHasChangesData = await diffApi.hasChanges(formData); + + if (jsonResponse) { + this.exportListOfPackageDiffs(returnedHasChangesData); + } else { + logger.info(this.buildStringResponse(returnedHasChangesData)); + } + } + + private async diffPackagesAndReturnDiff(file: string, jsonResponse: boolean): Promise { + const packages = new AmdZip(file); + const formData = this.buildBodyForDiff(packages); + const returnedHasChangesData = await diffApi.diffPackages(formData); + + if (jsonResponse) { + this.exportListOfPackageDiffs(returnedHasChangesData); + } else { + logger.info( this.buildStringResponse(returnedHasChangesData)); + } + } + + private buildBodyForDiff(packages: AmdZip): FormData { + const formData = new FormData(); + const readableStream = this.getReadableStream(packages); + + formData.append("file", readableStream, {filename: "packages.zip"}); + + return formData; + } + + private getReadableStream(packages: AmdZip): Readable { + return new Readable({ + read(): void { + this.push(packages.toBuffer()); + this.push(null); + } + }); + } + + private exportListOfPackageDiffs(packageDiffs: PackageDiffTransport[]): void { + const filename = uuidv4() + ".json"; + fileService.writeToFileWithGivenName(JSON.stringify(packageDiffs), filename); + logger.info(FileService.fileDownloadedMessage + filename); + } + + private buildStringResponse(packageDiffs: PackageDiffTransport[]): string { + return "\n" + JSON.stringify(packageDiffs, null, 2); + } +} + +export const diffService = new DiffService(); \ No newline at end of file diff --git a/tests/config/config-diff.spec.ts b/tests/config/config-diff.spec.ts new file mode 100644 index 0000000..55b945a --- /dev/null +++ b/tests/config/config-diff.spec.ts @@ -0,0 +1,178 @@ +import {PackageManifestTransport} from "../../src/interfaces/package-export-transport"; +import {ConfigUtils} from "../utls/config-utils"; +import * as path from "path"; +import {stringify} from "../../src/util/yaml"; +import {mockCreateReadStream, mockExistsSync, mockReadFileSync} from "../utls/fs-mock-utils"; +import { + PackageDiffTransport +} from "../../src/interfaces/diff-package.transport"; +import {mockAxiosPost} from "../utls/http-requests-mock"; +import {ConfigCommand} from "../../src/commands/config.command"; +import { mockWriteFileSync, mockWriteSync, testTransport } from "../jest.setup"; +import { FileService } from "../../src/services/file-service"; + +describe("Config diff", () => { + + beforeEach(() => { + mockExistsSync(); + }); + + it("Should show on terminal if packages have changes with hasChanges set to true and jsonResponse false", async () => { + const manifest: PackageManifestTransport[] = []; + manifest.push(ConfigUtils.buildManifestForKeyAndFlavor("package-key", "STUDIO")); + + const firstPackageNode = ConfigUtils.buildPackageNode("package-key", stringify({metadata: {description: "test"}, variables: [], dependencies: []})); + const firstChildNode = ConfigUtils.buildChildNode("key-1", "package-key", "TEST"); + const firstPackageZip = ConfigUtils.buildExportPackageZip(firstPackageNode, [firstChildNode], "1.0.0"); + const exportedPackagesZip = ConfigUtils.buildBatchExportZip(manifest, [firstPackageZip]); + + mockReadFileSync(exportedPackagesZip.toBuffer()); + mockCreateReadStream(exportedPackagesZip.toBuffer()); + + const diffResponse: PackageDiffTransport[] = [{ + packageKey: "package-key", + hasChanges: true, + packageChanges: [], + nodesWithChanges: [] + }]; + + const expectedMessage: string = " \n" + + "\"[{\\\"packageKey\\\":\\\"package-key\\\",\\\"hasChanges\\\":true,\\\"packageChanges\\\":[],\\\"nodesWithChanges\\\":[]}]\""; + + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration/has-changes", JSON.stringify(diffResponse)); + + await new ConfigCommand().diffPackages("./packages.zip", true, false); + + expect(testTransport.logMessages.length).toBe(1); + expect(testTransport.logMessages[0].message).toBe( + expectedMessage + ); + }); + + it("Should show diff on terminal with hasChanges set to false and jsonResponse false", async () => { + const manifest: PackageManifestTransport[] = []; + manifest.push(ConfigUtils.buildManifestForKeyAndFlavor("package-key", "STUDIO")); + + const firstPackageNode = ConfigUtils.buildPackageNode("package-key", stringify({metadata: {description: "test"}, variables: [], dependencies: []})); + const firstChildNode = ConfigUtils.buildChildNode("key-1", "package-key", "TEST"); + const firstPackageZip = ConfigUtils.buildExportPackageZip(firstPackageNode, [firstChildNode], "1.0.0"); + const exportedPackagesZip = ConfigUtils.buildBatchExportZip(manifest, [firstPackageZip]); + + mockReadFileSync(exportedPackagesZip.toBuffer()); + mockCreateReadStream(exportedPackagesZip.toBuffer()); + + const diffResponse: PackageDiffTransport[] = [{ + packageKey: "package-key", + hasChanges: true, + packageChanges: [ + { + op: "add", + path: "/test", + from: "bbbb", + value: JSON.parse("123") + }], + nodesWithChanges: [{ + nodeKey: "key-1", + changes: [{ + op: "add", + path: "/test", + from: "bbb", + value: JSON.parse("234") + }] + }] + }]; + + const expectedMessage: string = " \n" + + "\"[{\\\"packageKey\\\":\\\"package-key\\\",\\\"hasChanges\\\":true,\\\"packageChanges\\\":[{\\\"op\\\":\\\"add\\\",\\\"path\\\":\\\"/test\\\",\\\"from\\\":\\\"bbbb\\\",\\\"value\\\":123}],\\\"nodesWithChanges\\\":[{\\\"nodeKey\\\":\\\"key-1\\\",\\\"changes\\\":[{\\\"op\\\":\\\"add\\\",\\\"path\\\":\\\"/test\\\",\\\"from\\\":\\\"bbb\\\",\\\"value\\\":234}]}]}]\""; + + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration", JSON.stringify(diffResponse)); + + await new ConfigCommand().diffPackages("./packages.zip", false, false); + + expect(testTransport.logMessages.length).toBe(1); + expect(testTransport.logMessages[0].message).toBe( + expectedMessage + ); + }); + + it("Should generate a json file with diff info when hasChanges is set to false and jsonResponse is set to true", async () => { + const manifest: PackageManifestTransport[] = []; + manifest.push(ConfigUtils.buildManifestForKeyAndFlavor("package-key", "STUDIO")); + + const firstPackageNode = ConfigUtils.buildPackageNode("package-key", stringify({metadata: {description: "test"}, variables: [], dependencies: []})); + const firstChildNode = ConfigUtils.buildChildNode("key-1", "package-key", "TEST"); + const firstPackageZip = ConfigUtils.buildExportPackageZip(firstPackageNode, [firstChildNode], "1.0.0"); + const exportedPackagesZip = ConfigUtils.buildBatchExportZip(manifest, [firstPackageZip]); + + mockReadFileSync(exportedPackagesZip.toBuffer()); + mockCreateReadStream(exportedPackagesZip.toBuffer()); + + const diffResponse: PackageDiffTransport[] = [{ + packageKey: "package-key", + hasChanges: true, + packageChanges: [ + { + op: "add", + path: "/test", + from: "bbbb", + value: JSON.parse("123") + }], + nodesWithChanges: [{ + nodeKey: "key-1", + changes: [{ + op: "add", + path: "/test", + from: "bbb", + value: JSON.parse("234") + }] + }] + }]; + + + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration", diffResponse); + + await new ConfigCommand().diffPackages("./packages.zip", false, true); + + const expectedFileName = testTransport.logMessages[0].message.split(FileService.fileDownloadedMessage)[1]; + + expect(mockWriteFileSync).toHaveBeenCalledWith(path.resolve(process.cwd(), expectedFileName), expect.any(String), {encoding: "utf-8"}); + const exportedPackageDiffTransport = JSON.parse(mockWriteFileSync.mock.calls[0][1]) as PackageDiffTransport[]; + expect(exportedPackageDiffTransport.length).toBe(1); + + const exportedFirstPackageDiffTransport = exportedPackageDiffTransport.filter(diffTransport => diffTransport.packageKey === firstPackageNode.key); + expect(exportedFirstPackageDiffTransport).toEqual(diffResponse); + }); + + it("Should generate a json file with info whether packages have changes when hasChanges is set to true and jsonResponse is set to true", async () => { + const manifest: PackageManifestTransport[] = []; + manifest.push(ConfigUtils.buildManifestForKeyAndFlavor("package-key", "STUDIO")); + + const firstPackageNode = ConfigUtils.buildPackageNode("package-key", stringify({metadata: {description: "test"}, variables: [], dependencies: []})); + const firstChildNode = ConfigUtils.buildChildNode("key-1", "package-key", "TEST"); + const firstPackageZip = ConfigUtils.buildExportPackageZip(firstPackageNode, [firstChildNode], "1.0.0"); + const exportedPackagesZip = ConfigUtils.buildBatchExportZip(manifest, [firstPackageZip]); + + mockReadFileSync(exportedPackagesZip.toBuffer()); + mockCreateReadStream(exportedPackagesZip.toBuffer()); + + const diffResponse: PackageDiffTransport[] = [{ + packageKey: "package-key", + hasChanges: true, + packageChanges: [], + nodesWithChanges: [] + }]; + + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration/has-changes", diffResponse); + + await new ConfigCommand().diffPackages("./packages.zip", true, true); + + const expectedFileName = testTransport.logMessages[0].message.split(FileService.fileDownloadedMessage)[1]; + + expect(mockWriteFileSync).toHaveBeenCalledWith(path.resolve(process.cwd(), expectedFileName), expect.any(String), {encoding: "utf-8"}); + const exportedPackageDiffTransport = JSON.parse(mockWriteFileSync.mock.calls[0][1]) as PackageDiffTransport[]; + expect(exportedPackageDiffTransport.length).toBe(1); + + const exportedFirstPackageDiffTransport = exportedPackageDiffTransport.filter(diffTransport => diffTransport.packageKey === firstPackageNode.key); + expect(exportedFirstPackageDiffTransport).toEqual(diffResponse); + }); +}); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index b3e7c60..f0a5b1d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "declarationDir": "./dist/lib", "noImplicitAny": false, "target": "es2015", - "sourceMap": false, + "sourceMap": true, "declaration": true, "stripInternal": true, "module": "umd", From 17ba58384d56d55ccf8ddd5d67f3480b28213d95 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 09:46:54 +0200 Subject: [PATCH 02/10] TA-3012: Remove unnecessary space --- src/services/package-manager/diff-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/package-manager/diff-service.ts b/src/services/package-manager/diff-service.ts index 160054b..c9ec558 100644 --- a/src/services/package-manager/diff-service.ts +++ b/src/services/package-manager/diff-service.ts @@ -37,7 +37,7 @@ class DiffService { if (jsonResponse) { this.exportListOfPackageDiffs(returnedHasChangesData); } else { - logger.info( this.buildStringResponse(returnedHasChangesData)); + logger.info(this.buildStringResponse(returnedHasChangesData)); } } From ec00f80e582ecbaafba5d7a9f61d820ce776d423 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 10:30:14 +0200 Subject: [PATCH 03/10] TA-3012: Increase lib patch version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 176b058..fbeef6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@celonis/content-cli", - "version": "0.8.3", + "version": "0.8.4", "description": "CLI Tool to help manage content in Celonis EMS", "main": "content-cli.js", "bin": { From 90b64ae0cf551991c563e799061249602460dd27 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 14:00:24 +0200 Subject: [PATCH 04/10] TA-3012: Mock response without stringifying it to JSON --- tests/config/config-diff.spec.ts | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/tests/config/config-diff.spec.ts b/tests/config/config-diff.spec.ts index 55b945a..84b050f 100644 --- a/tests/config/config-diff.spec.ts +++ b/tests/config/config-diff.spec.ts @@ -36,16 +36,13 @@ describe("Config diff", () => { nodesWithChanges: [] }]; - const expectedMessage: string = " \n" + - "\"[{\\\"packageKey\\\":\\\"package-key\\\",\\\"hasChanges\\\":true,\\\"packageChanges\\\":[],\\\"nodesWithChanges\\\":[]}]\""; - - mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration/has-changes", JSON.stringify(diffResponse)); + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration/has-changes", diffResponse); await new ConfigCommand().diffPackages("./packages.zip", true, false); expect(testTransport.logMessages.length).toBe(1); - expect(testTransport.logMessages[0].message).toBe( - expectedMessage + expect(testTransport.logMessages[0].message).toContain( + JSON.stringify(diffResponse, null, 2) ); }); @@ -82,16 +79,13 @@ describe("Config diff", () => { }] }]; - const expectedMessage: string = " \n" + - "\"[{\\\"packageKey\\\":\\\"package-key\\\",\\\"hasChanges\\\":true,\\\"packageChanges\\\":[{\\\"op\\\":\\\"add\\\",\\\"path\\\":\\\"/test\\\",\\\"from\\\":\\\"bbbb\\\",\\\"value\\\":123}],\\\"nodesWithChanges\\\":[{\\\"nodeKey\\\":\\\"key-1\\\",\\\"changes\\\":[{\\\"op\\\":\\\"add\\\",\\\"path\\\":\\\"/test\\\",\\\"from\\\":\\\"bbb\\\",\\\"value\\\":234}]}]}]\""; - - mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration", JSON.stringify(diffResponse)); + mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration", diffResponse); await new ConfigCommand().diffPackages("./packages.zip", false, false); expect(testTransport.logMessages.length).toBe(1); - expect(testTransport.logMessages[0].message).toBe( - expectedMessage + expect(testTransport.logMessages[0].message).toContain( + JSON.stringify(diffResponse, null, 2) ); }); @@ -128,7 +122,6 @@ describe("Config diff", () => { }] }]; - mockAxiosPost("https://myTeam.celonis.cloud/package-manager/api/core/packages/diff/configuration", diffResponse); await new ConfigCommand().diffPackages("./packages.zip", false, true); From d16c382dd9998e2519cf7f118a78d856ffa6ddb3 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 15:26:58 +0200 Subject: [PATCH 05/10] TA-3012: Set sourceMap to false and add dev script to build the project with sourceMaps --- package.json | 1 + tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fbeef6f..ea1e88d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "homepage": "https://github.com/celonis/content-cli", "scripts": { "build": "./node_modules/.bin/tsc && cp package.json dist/package.json", + "build-dev": "./node_modules/.bin/tsc --sourceMap && cp package.json dist/package.json", "lint": "tslint -p .", "test": "jest" }, diff --git a/tsconfig.json b/tsconfig.json index f0a5b1d..b3e7c60 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "declarationDir": "./dist/lib", "noImplicitAny": false, "target": "es2015", - "sourceMap": true, + "sourceMap": false, "declaration": true, "stripInternal": true, "module": "umd", From 81917964b5c83d579d3deb9c4dc76e9d985d43cb Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 15:31:35 +0200 Subject: [PATCH 06/10] Revert "TA-3012: Set sourceMap to false and add dev script to build the project with sourceMaps" This reverts commit d16c382dd9998e2519cf7f118a78d856ffa6ddb3. --- package.json | 1 - tsconfig.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index ea1e88d..fbeef6f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "homepage": "https://github.com/celonis/content-cli", "scripts": { "build": "./node_modules/.bin/tsc && cp package.json dist/package.json", - "build-dev": "./node_modules/.bin/tsc --sourceMap && cp package.json dist/package.json", "lint": "tslint -p .", "test": "jest" }, diff --git a/tsconfig.json b/tsconfig.json index b3e7c60..f0a5b1d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "declarationDir": "./dist/lib", "noImplicitAny": false, "target": "es2015", - "sourceMap": false, + "sourceMap": true, "declaration": true, "stripInternal": true, "module": "umd", From 139cb2bf090f8c3ef0f9a30cd2013fcb803af3bd Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 15:50:29 +0200 Subject: [PATCH 07/10] TA-3012: Set sourceMap to true when running tests only --- jest.config.ts | 7 +++++++ tsconfig.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/jest.config.ts b/jest.config.ts index d0efdee..6b6f80d 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -11,6 +11,13 @@ const config: Config.InitialOptions = { setupFilesAfterEnv: [ "/tests/jest.setup.ts", ], + globals: { + "ts-jest": { + tsconfig: { + sourceMap: true + } + } + } } export default config \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index f0a5b1d..b3e7c60 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,7 @@ "declarationDir": "./dist/lib", "noImplicitAny": false, "target": "es2015", - "sourceMap": true, + "sourceMap": false, "declaration": true, "stripInternal": true, "module": "umd", From 04bb9d7f9c9017295c517198c5d4f7c591823085 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 17:21:57 +0200 Subject: [PATCH 08/10] TA-3012: Update option comment --- src/content-cli-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content-cli-config.ts b/src/content-cli-config.ts index 748bd69..a6117da 100644 --- a/src/content-cli-config.ts +++ b/src/content-cli-config.ts @@ -78,7 +78,7 @@ export class Config { .option("-p, --profile ", "Profile of the team/realm which you want to use to diff the packages with") .option("--hasChanges", "Flag to return only the information if the package has changes without the actual changes") .option("--json", "Return the response as a JSON file") - .requiredOption("-f --file ", "Exported packages file (relative path)") + .requiredOption("-f --file ", "Exported packages file (relative or absolute path)") .action(async cmd => { await new ConfigCommand().diffPackages(cmd.file, cmd.hasChanges, cmd.json); process.exit(); From a56868f7c42449832f514e57181a07388f4cf3f8 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Wed, 29 May 2024 17:23:49 +0200 Subject: [PATCH 09/10] TA-3012: Rename AmdZip to AdmZip --- src/services/package-manager/diff-service.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/services/package-manager/diff-service.ts b/src/services/package-manager/diff-service.ts index c9ec558..70a4338 100644 --- a/src/services/package-manager/diff-service.ts +++ b/src/services/package-manager/diff-service.ts @@ -1,4 +1,4 @@ -import * as AmdZip from "adm-zip"; +import * as AdmZip from "adm-zip"; import {Readable} from "stream"; import * as FormData from "form-data"; import {diffApi} from "../../api/diff-api"; @@ -18,7 +18,7 @@ class DiffService { } private async hasChanges(file: string, jsonResponse: boolean): Promise { - const packages = new AmdZip(file); + const packages = new AdmZip(file); const formData = this.buildBodyForDiff(packages); const returnedHasChangesData = await diffApi.hasChanges(formData); @@ -30,7 +30,7 @@ class DiffService { } private async diffPackagesAndReturnDiff(file: string, jsonResponse: boolean): Promise { - const packages = new AmdZip(file); + const packages = new AdmZip(file); const formData = this.buildBodyForDiff(packages); const returnedHasChangesData = await diffApi.diffPackages(formData); @@ -41,7 +41,7 @@ class DiffService { } } - private buildBodyForDiff(packages: AmdZip): FormData { + private buildBodyForDiff(packages: AdmZip): FormData { const formData = new FormData(); const readableStream = this.getReadableStream(packages); @@ -50,7 +50,7 @@ class DiffService { return formData; } - private getReadableStream(packages: AmdZip): Readable { + private getReadableStream(packages: AdmZip): Readable { return new Readable({ read(): void { this.push(packages.toBuffer()); From d0d696db1a7b151fb090d42dbe4c852e56c5dae5 Mon Sep 17 00:00:00 2001 From: Buqete Mucolli Date: Thu, 30 May 2024 07:56:59 +0200 Subject: [PATCH 10/10] TA-3012: Add missing comma --- src/content-cli-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content-cli-config.ts b/src/content-cli-config.ts index a6117da..ad48e34 100644 --- a/src/content-cli-config.ts +++ b/src/content-cli-config.ts @@ -78,7 +78,7 @@ export class Config { .option("-p, --profile ", "Profile of the team/realm which you want to use to diff the packages with") .option("--hasChanges", "Flag to return only the information if the package has changes without the actual changes") .option("--json", "Return the response as a JSON file") - .requiredOption("-f --file ", "Exported packages file (relative or absolute path)") + .requiredOption("-f, --file ", "Exported packages file (relative or absolute path)") .action(async cmd => { await new ConfigCommand().diffPackages(cmd.file, cmd.hasChanges, cmd.json); process.exit();