From d520316f96a8460bc4e2a725b633064a443713ee Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 10:26:52 -0500 Subject: [PATCH 1/7] fix: corrected formating for java provider dependencies --- .../@cdktf/cli-core/src/lib/dependencies/package-manager.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts index da270c1814..fdd288c547 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts @@ -672,7 +672,11 @@ class GradlePackageManager extends JavaPackageManager { buildGradleLines.splice(existingDependency, 1); } - const newPackageDependency = `\timplementation '${packageName}:${packageVersion}'`; + const packageNameElements = packageName.split("."); + const packageNameProvider = packageNameElements.pop(); + const groupName = packageNameElements.join("."); + + const newPackageDependency = `\timplementation '${groupName}:${packageNameProvider}:${packageVersion}'`; buildGradleLines.splice(dependencyBlockStart + 1, 0, newPackageDependency); await fs.writeFile(buildGradlePath, buildGradleLines.join("\n")); From 0cc7d5b2f56914cb67161256dddd95ed8e797c86 Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 12:03:37 -0500 Subject: [PATCH 2/7] fix: provider-list integration test --- test/java/provider-list-command/test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/java/provider-list-command/test.ts b/test/java/provider-list-command/test.ts index 8bd7ffe307..7c2a89193e 100644 --- a/test/java/provider-list-command/test.ts +++ b/test/java/provider-list-command/test.ts @@ -51,7 +51,7 @@ describe("provider list command", () => { expect(output.prebuilt[0]).toEqual( expect.objectContaining({ - packageName: "com.hashicorp.cdktf-provider-random", + packageName: "com.hashicorp:cdktf-provider-random", packageVersion: "0.2.55", providerName: "random", providerVersion: "3.1.3", From d6337f8d7f2b0fda41131cc60a00529fc66c8aab Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 13:14:36 -0500 Subject: [PATCH 3/7] fix: update regexes --- .../cli-core/src/lib/dependencies/dependency-manager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts index 53296624df..36a54c523f 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts @@ -392,7 +392,7 @@ export class DependencyManager { case Language.CSHARP: // e.g. HashiCorp.Cdktf.Providers.Opentelekomcloud return `HashiCorp.Cdktf.Providers.` + toPascalCase(providerName); case Language.JAVA: // e.g. com.hashicorp.opentelekomcloud - return `com.hashicorp.cdktf-provider-${providerName}`; + return `com.hashicorp:cdktf-provider-${providerName}`; case Language.PYTHON: // e.g. cdktf-cdktf-provider-opentelekomcloud return `cdktf-cdktf-provider-${providerName}`; default: @@ -413,7 +413,7 @@ export class DependencyManager { /github.com\/(?:cdktf|hashicorp)\/cdktf-provider-(.+)-go\//i, [Language.TYPESCRIPT]: /(.+)/i, [Language.CSHARP]: /HashiCorp\.Cdktf\.Providers\.(.+)/i, - [Language.JAVA]: /com\.hashicorp\.cdktf-provider-(.+)/i, + [Language.JAVA]: /com\.hashicorp:cdktf-provider-(.+)/i, [Language.PYTHON]: /cdktf-cdktf-provider-(.+)/i, }; const regex = regexes[this.targetLanguage]; From 6180ed33c68504d886ff2ff60b92967fcea007cf Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 15:28:16 -0500 Subject: [PATCH 4/7] fix: correctly query prebuilt provider dependencies in java package manager --- .../cli-core/src/lib/dependencies/package-manager.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts index fdd288c547..1cb1913733 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts @@ -516,15 +516,15 @@ abstract class JavaPackageManager extends PackageManager { ): Promise { logger.debug(`Checking if ${packageName}@${packageVersion} is available`); - const parts = packageName.split("."); - if (parts.length !== 3) { + const parts = packageName.split(":"); + if (parts.length !== 2) { throw Errors.Internal( - `Expected package name to be in format "group.artifact", e.g. "com.hashicorp.cdktf-provider-google", got: ${packageName}` + `Expected package name to be in format "group.artifact", e.g. "com.hashicorp:cdktf-provider-google", got: ${packageName}` ); } const packageIdentifier = parts.pop(); - const groupId = parts.join("."); + const groupId = parts.pop(); const url = `https://search.maven.org/solrsearch/select?q=g:${groupId}+AND+a:${packageIdentifier}+AND+v:${packageVersion}&rows=5&wt=json`; logger.debug( From 3f5fcbc6fbbd19937d6525e2d2b2adebda805152 Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 16:19:56 -0500 Subject: [PATCH 5/7] chore: more fixes --- .../cli-core/src/lib/dependencies/dependency-manager.ts | 2 +- .../@cdktf/cli-core/src/lib/dependencies/package-manager.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts index 36a54c523f..27d26b02f8 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/dependency-manager.ts @@ -413,7 +413,7 @@ export class DependencyManager { /github.com\/(?:cdktf|hashicorp)\/cdktf-provider-(.+)-go\//i, [Language.TYPESCRIPT]: /(.+)/i, [Language.CSHARP]: /HashiCorp\.Cdktf\.Providers\.(.+)/i, - [Language.JAVA]: /com\.hashicorp:cdktf-provider-(.+)/i, + [Language.JAVA]: /cdktf-provider-(.+)/i, [Language.PYTHON]: /cdktf-cdktf-provider-(.+)/i, }; const regex = regexes[this.targetLanguage]; diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts index 1cb1913733..d35624a280 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts @@ -517,7 +517,7 @@ abstract class JavaPackageManager extends PackageManager { logger.debug(`Checking if ${packageName}@${packageVersion} is available`); const parts = packageName.split(":"); - if (parts.length !== 2) { + if (parts.length !== 3) { throw Errors.Internal( `Expected package name to be in format "group.artifact", e.g. "com.hashicorp:cdktf-provider-google", got: ${packageName}` ); @@ -676,7 +676,7 @@ class GradlePackageManager extends JavaPackageManager { const packageNameProvider = packageNameElements.pop(); const groupName = packageNameElements.join("."); - const newPackageDependency = `\timplementation '${groupName}:${packageNameProvider}:${packageVersion}'`; + const newPackageDependency = `\timplementation '${groupName}.${packageNameProvider}:${packageVersion}'`; buildGradleLines.splice(dependencyBlockStart + 1, 0, newPackageDependency); await fs.writeFile(buildGradlePath, buildGradleLines.join("\n")); @@ -699,7 +699,7 @@ class GradlePackageManager extends JavaPackageManager { return dep.name.includes("cdktf-provider-"); }) .map((dep) => ({ name: dep!.name, version: dep!.version })); - + console.log("dependency list: ", dependencyList); return dependencyList; } } From 9299980f01087b8e529d6754e1b25d89e3ac2993 Mon Sep 17 00:00:00 2001 From: Mark DeCrane Date: Thu, 25 Jan 2024 16:48:50 -0500 Subject: [PATCH 6/7] chore: more fixes --- .../@cdktf/cli-core/src/lib/dependencies/package-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts index d35624a280..bca4180255 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts @@ -517,7 +517,7 @@ abstract class JavaPackageManager extends PackageManager { logger.debug(`Checking if ${packageName}@${packageVersion} is available`); const parts = packageName.split(":"); - if (parts.length !== 3) { + if (parts.length !== 2) { throw Errors.Internal( `Expected package name to be in format "group.artifact", e.g. "com.hashicorp:cdktf-provider-google", got: ${packageName}` ); From 1b91cbc8224aa55f0c876e645e33423b223ac42b Mon Sep 17 00:00:00 2001 From: Daniel Schmidt Date: Fri, 26 Jan 2024 10:25:55 +0100 Subject: [PATCH 7/7] fix: don't double add dependencies --- .../src/lib/dependencies/package-manager.ts | 16 ++++++++-------- test/java/provider-list-command/test.ts | 2 ++ test/run-against-dist | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts index bca4180255..0be026ed8e 100644 --- a/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts +++ b/packages/@cdktf/cli-core/src/lib/dependencies/package-manager.ts @@ -648,7 +648,7 @@ class GradlePackageManager extends JavaPackageManager { } public async addPackage( - packageName: string, + packageFQN: string, packageVersion = "latest.release" ): Promise { const buildGradlePath = path.join(this.workingDirectory, "build.gradle"); @@ -665,18 +665,19 @@ class GradlePackageManager extends JavaPackageManager { ); } + const packageSegments = packageFQN.split("."); + const packageName = packageSegments.pop(); + const groupName = packageSegments.join("."); + const dependencySpecifier = `${groupName}.${packageName}:${packageVersion}`; + const existingDependency = buildGradleLines.findIndex((line) => - line.includes(packageName) + line.includes(dependencySpecifier) ); if (existingDependency !== -1) { buildGradleLines.splice(existingDependency, 1); } - const packageNameElements = packageName.split("."); - const packageNameProvider = packageNameElements.pop(); - const groupName = packageNameElements.join("."); - - const newPackageDependency = `\timplementation '${groupName}.${packageNameProvider}:${packageVersion}'`; + const newPackageDependency = `\timplementation '${dependencySpecifier}'`; buildGradleLines.splice(dependencyBlockStart + 1, 0, newPackageDependency); await fs.writeFile(buildGradlePath, buildGradleLines.join("\n")); @@ -699,7 +700,6 @@ class GradlePackageManager extends JavaPackageManager { return dep.name.includes("cdktf-provider-"); }) .map((dep) => ({ name: dep!.name, version: dep!.version })); - console.log("dependency list: ", dependencyList); return dependencyList; } } diff --git a/test/java/provider-list-command/test.ts b/test/java/provider-list-command/test.ts index 7c2a89193e..72afc58c18 100644 --- a/test/java/provider-list-command/test.ts +++ b/test/java/provider-list-command/test.ts @@ -34,6 +34,8 @@ describe("provider list command", () => { test("with json output", async () => { const res = await driver.exec("cdktf", ["provider", "list", "--json"]); + console.log(res); + const output = JSON.parse(res.stdout); expect(output).toHaveProperty("local"); diff --git a/test/run-against-dist b/test/run-against-dist index b772beefa7..d9dc97d97f 100755 --- a/test/run-against-dist +++ b/test/run-against-dist @@ -1,5 +1,5 @@ #!/bin/bash -set -euo pipefail +set -euox pipefail scriptdir=$(cd $(dirname $0) && pwd)