diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java index ec3ca3ad75f1..af46f6f7405c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoGinServerCodegen.java @@ -191,6 +191,7 @@ public void processOpts() { supportingFiles.add(new SupportingFile("routers.mustache", apiPath, "routers.go")); supportingFiles.add(new SupportingFile("README.mustache", apiPath, "README.md") .doNotOverwrite()); + supportingFiles.add(new SupportingFile("go.mod.mustache", "go.mod")); } @Override diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache new file mode 100644 index 000000000000..89cc5423fbb5 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache @@ -0,0 +1,6 @@ +module {{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}} + +go 1.19 + +require github.com/gin-gonic/gin v1.9.0 + diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache index 4d43feb3aa66..0ad0a71b3e02 100644 --- a/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache +++ b/modules/openapi-generator/src/main/resources/go-gin-server/main.mustache @@ -5,13 +5,9 @@ import ( "log" // WARNING! - // Change this to a fully-qualified import path - // once you place this file into your project. - // For example, + // Pass --git-repo-id and --git-user-id properties when generating the code // - //sw "github.com/{{{gitUserId}}}/{{{gitRepoId}}}/{{{apiPath}}}" - // - sw "./{{apiPath}}" + sw "{{gitHost}}/{{gitUserId}}/{{gitRepoId}}{{#isGoSubmodule}}/{{packageName}}{{/isGoSubmodule}}/{{apiPath}}" ) func main() { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/goginserver/GoGinServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/goginserver/GoGinServerCodegenTest.java new file mode 100644 index 000000000000..ee207f4ddcc9 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/goginserver/GoGinServerCodegenTest.java @@ -0,0 +1,62 @@ +/* + * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech) + * Copyright 2018 SmartBear Software + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openapitools.codegen.goginserver; + +import org.openapitools.codegen.*; +import org.openapitools.codegen.config.CodegenConfigurator; +import org.openapitools.codegen.languages.GoClientCodegen; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class GoGinServerCodegenTest { + + @Test + public void verifyGoMod() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("go-gin-server") + .setGitUserId("my-user") + .setGitRepoId("my-repo") + .setPackageName("my-package") + .setInputSpec("src/test/resources/3_0/petstore.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + DefaultGenerator generator = new DefaultGenerator(); + List files = generator.opts(configurator.toClientOptInput()).generate(); + files.forEach(File::deleteOnExit); + + TestUtils.assertFileExists(Paths.get(output + "/go.mod")); + TestUtils.assertFileContains(Paths.get(output + "/go.mod"), + "module github.com/my-user/my-repo"); + TestUtils.assertFileContains(Paths.get(output + "/go.mod"), + "require github.com/gin-gonic/gin v1.9.0"); + } + +} diff --git a/samples/server/petstore/go-gin-api-server/.openapi-generator/FILES b/samples/server/petstore/go-gin-api-server/.openapi-generator/FILES index 8d594bbb91b3..52dc8b1a0dab 100644 --- a/samples/server/petstore/go-gin-api-server/.openapi-generator/FILES +++ b/samples/server/petstore/go-gin-api-server/.openapi-generator/FILES @@ -1,5 +1,6 @@ Dockerfile api/openapi.yaml +go.mod go/README.md go/api_pet.go go/api_store.go diff --git a/samples/server/petstore/go-gin-api-server/go.mod b/samples/server/petstore/go-gin-api-server/go.mod new file mode 100644 index 000000000000..46ecd48843f9 --- /dev/null +++ b/samples/server/petstore/go-gin-api-server/go.mod @@ -0,0 +1,6 @@ +module github.com/GIT_USER_ID/GIT_REPO_ID + +go 1.19 + +require github.com/gin-gonic/gin v1.9.0 + diff --git a/samples/server/petstore/go-gin-api-server/main.go b/samples/server/petstore/go-gin-api-server/main.go index 661c2f3334dc..f1bc1ae09a44 100644 --- a/samples/server/petstore/go-gin-api-server/main.go +++ b/samples/server/petstore/go-gin-api-server/main.go @@ -13,13 +13,9 @@ import ( "log" // WARNING! - // Change this to a fully-qualified import path - // once you place this file into your project. - // For example, + // Pass --git-repo-id and --git-user-id properties when generating the code // - //sw "github.com/GIT_USER_ID/GIT_REPO_ID/go" - // - sw "./go" + sw "github.com/GIT_USER_ID/GIT_REPO_ID/go" ) func main() {