From ab15489444e54cb8c0e55da9943bee793770ec8e Mon Sep 17 00:00:00 2001 From: Chris Smith Date: Fri, 4 Mar 2022 13:30:02 -0700 Subject: [PATCH] fix(internal/gapicgen): add generation of internal/version.go for new client modules (#5726) This was discovered attempting to generate certificatemanager. New client generation failed with apiv1/version.go: no such file or directory - Move genVersionFile before genModule . - Fix path for generation of apivX/version.go file. - Add template and creation of the client's internal/version.go file, conditional on genModule. --- .../generator/_internal_version.go.txt | 20 +++++++++++++ internal/gapicgen/generator/gapics.go | 30 ++++++++++++++++--- 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 internal/gapicgen/generator/_internal_version.go.txt diff --git a/internal/gapicgen/generator/_internal_version.go.txt b/internal/gapicgen/generator/_internal_version.go.txt new file mode 100644 index 000000000000..21f4654ed97a --- /dev/null +++ b/internal/gapicgen/generator/_internal_version.go.txt @@ -0,0 +1,20 @@ +// Copyright {{.Year}} Google LLC +// +// 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 +// +// http://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. + +// Code generated by gapicgen. DO NOT EDIT. + +package internal + +// Version is the current tagged release of the library. +const Version = "0.1.0" diff --git a/internal/gapicgen/generator/gapics.go b/internal/gapicgen/generator/gapics.go index 88a1000aacfe..91ddc757983a 100644 --- a/internal/gapicgen/generator/gapics.go +++ b/internal/gapicgen/generator/gapics.go @@ -40,6 +40,8 @@ var ( readmeTmpl string //go:embed _version.go.txt versionTmpl string + //go:embed _internal_version.go.txt + internalVersionTmpl string ) // GapicGenerator is used to regenerate gapic libraries. @@ -102,14 +104,14 @@ func (g *GapicGenerator) Regen(ctx context.Context) error { if err := g.microgen(c); err != nil { return err } + if err := g.genVersionFile(c); err != nil { + return err + } if g.genModule { if err := gocmd.ModTidy(modPath); err != nil { return nil } } - if err := g.genVersionFile(c); err != nil { - return err - } } if err := g.copyMicrogenFiles(); err != nil { @@ -326,7 +328,7 @@ func (g *GapicGenerator) genVersionFile(conf *microgenConfig) error { rootPackage := strings.Split(relDir, "/")[0] rootModInternal := fmt.Sprintf("cloud.google.com/go/%s/internal", rootPackage) - f, err := os.Create(filepath.Join(g.googleCloudDir, relDir, "version.go")) + f, err := os.Create(filepath.Join(g.googleCloudDir, conf.importPath, "version.go")) if err != nil { return err } @@ -345,6 +347,26 @@ func (g *GapicGenerator) genVersionFile(conf *microgenConfig) error { if err := t.Execute(f, versionData); err != nil { return err } + + if g.genModule { + os.MkdirAll(filepath.Join(g.googleCloudDir, rootModInternal), os.ModePerm) + + f2, err := os.Create(filepath.Join(g.googleCloudDir, rootModInternal, "version.go")) + if err != nil { + return err + } + defer f2.Close() + + t2 := template.Must(template.New("internal_version").Parse(internalVersionTmpl)) + internalVersionData := struct { + Year int + }{ + Year: time.Now().Year(), + } + if err := t2.Execute(f2, internalVersionData); err != nil { + return err + } + } return nil }