From 4a4e76732e6bf4ed9dd0aeaad38224acedd0c2d2 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:39:18 +0100 Subject: [PATCH 01/10] First implementation of install --required --- README.md | 6 ++++++ cmd/install.go | 33 +++++++++++++++++++++++++++------ pkg/helpers/helper.go | 39 ++++++++++++++++++++++++++++++++++++++- pkg/install/install.go | 38 +++++++++++++++++++++----------------- pkg/list/list.go | 18 ++++++++++++++++++ 5 files changed, 110 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 0512871..cda3a75 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,12 @@ tfversion install --latest tfversion install --latest --pre-release ``` +### Install the required version for your current directory + +```sh +tfversion install --required +``` + ### Use a specific version ```sh diff --git a/cmd/install.go b/cmd/install.go index 5df560f..211cdde 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -19,12 +19,17 @@ const ( "\n" + "\n" + "# Install the latest pre-release Terraform version\n" + - "tfversion install --latest --pre-release" + "tfversion install --latest --pre-release\n" + + "\n" + + "\n" + + "# Install the required Terraform version for your current directory\n" + + "tfversion install --required" ) var ( latest bool preRelease bool + required bool installCmd = &cobra.Command{ Use: "install", Short: "Installs a given Terraform version", @@ -35,21 +40,36 @@ var ( } }, Run: func(cmd *cobra.Command, args []string) { + + // install latest if latest { if len(args) != 0 { fmt.Println("error: `--latest` flag does not require specifying a Terraform version") fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) os.Exit(1) } - install.InstallVersion("", latest, preRelease) - } else { - if len(args) != 1 { - fmt.Println("error: provide a Terraform version to install") + install.InstallLatestVersion(preRelease) + os.Exit(0) + } + + // installed required version + if required { + if len(args) != 0 { + fmt.Println("error: `--required` flag does not require specifying a Terraform version") fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) os.Exit(1) } - install.InstallVersion(args[0], latest, preRelease) + install.InstallRequiredVersion() + os.Exit(0) + } + + // install specific version + if len(args) != 1 { + fmt.Println("error: provide a Terraform version to install") + fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) + os.Exit(1) } + install.InstallVersion(args[0]) }, } ) @@ -58,4 +78,5 @@ func init() { rootCmd.AddCommand(installCmd) installCmd.Flags().BoolVar(&latest, "latest", false, "install the latest stable Terraform version") installCmd.Flags().BoolVar(&preRelease, "pre-release", false, "When used with --latest, install the latest pre-release version") + installCmd.Flags().BoolVar(&required, "required", false, "When used with --required, install the minimum required version for the current module") } diff --git a/pkg/helpers/helper.go b/pkg/helpers/helper.go index fe22e58..f0ab86a 100644 --- a/pkg/helpers/helper.go +++ b/pkg/helpers/helper.go @@ -1,8 +1,45 @@ package helpers -import "strings" +import ( + "fmt" + "os" + "path/filepath" + "regexp" + "strings" +) // IsPreReleaseVersion checks if the given version is a Terraform pre-release version func IsPreReleaseVersion(version string) bool { return strings.Contains(version, "-alpha") || strings.Contains(version, "-beta") || strings.Contains(version, "-rc") } + +// FindRequiredVersionInFile finds the required Terraform version in a given .tf file (using required_version = ">= x.x.x") +func FindRequiredVersionInFile(filepath string) string { + bytes, err := os.ReadFile(filepath) + if err != nil { + fmt.Printf("Unable to find version number in file: %s", filepath) + return "" + } + re := regexp.MustCompile(`>=\s(\d+\.\d+\.\d+)`) + match := re.FindStringSubmatch(string(bytes)) + if len(match) == 0 { + return "" + } + return match[1] +} + +// FindTerraformFiles finds all .tf files in the current directory (module) +func FindTerraformFiles() []string { + var files []string + err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error { + if strings.HasSuffix(path, ".tf") { + files = append(files, path) + } + return nil + }) + if err != nil { + fmt.Println("No Terraform files found in current directory:", err) + os.Exit(1) + } + return files +} diff --git a/pkg/install/install.go b/pkg/install/install.go index 926f7a0..7c483e2 100644 --- a/pkg/install/install.go +++ b/pkg/install/install.go @@ -12,27 +12,12 @@ import ( ) // InstallVersion installs the specified Terraform version or one of the latest versions -func InstallVersion(version string, latest bool, preRelease bool) { - // Get the available Terraform versions - versions := list.GetAvailableVersions() - - // Set the version to the latest stable version if the `latest` flag is set - // or to the latest pre-release version if the `latest` and `pre-release` flags are set - if latest { - for _, v := range versions { - if !preRelease && helpers.IsPreReleaseVersion(v) { - continue - } - version = v - break - } - } - +func InstallVersion(version string) { if download.IsAlreadyDownloaded(version) { if helpers.IsPreReleaseVersion(version) { fmt.Printf("Terraform version %s is already installed\n", color.YellowString(version)) } else { - fmt.Printf("Terraform version %s downloaded successfully\n", color.BlueString(version)) + fmt.Printf("Terraform version %s is already installed\n", color.BlueString(version)) } os.Exit(0) } @@ -59,3 +44,22 @@ func InstallVersion(version string, latest bool, preRelease bool) { os.Exit(1) } } + +// InstallLatestVersion installs the latest Terraform version +func InstallLatestVersion(preRelease bool) { + version := list.FindLatestVersion(preRelease) + InstallVersion(version) +} + +// InstallRequiredVersion installs the required Terraform version from the .tf files in the current directory +func InstallRequiredVersion() { + terraformFiles := helpers.FindTerraformFiles() + for _, file := range terraformFiles { + requiredVersion := helpers.FindRequiredVersionInFile(file) + if requiredVersion != "" { + InstallVersion(requiredVersion) + break + } + } + fmt.Println("No required version found in .tf files in the current directory") +} diff --git a/pkg/list/list.go b/pkg/list/list.go index 29f3781..4c8a276 100644 --- a/pkg/list/list.go +++ b/pkg/list/list.go @@ -7,6 +7,7 @@ import ( "strings" "github.com/tfversion/tfversion/pkg/download" + "github.com/tfversion/tfversion/pkg/helpers" "golang.org/x/net/html" ) @@ -75,3 +76,20 @@ func parseAvailableVersions(n *html.Node) []string { return availableVersions } + +// FindLatestVersion finds the latest available Terraform version (or pre-release version) +func FindLatestVersion(preRelease bool) string { + versions := GetAvailableVersions() + var foundVersion string + for _, v := range versions { + if !preRelease && helpers.IsPreReleaseVersion(v) { + continue + } + foundVersion = v + } + if foundVersion == "" { + fmt.Println("No versions found") + os.Exit(1) + } + return foundVersion +} From 06996da55d4f2459677d1016249c2bd5765c2c03 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:43:32 +0100 Subject: [PATCH 02/10] Fix logging when version was actually found and installed --- pkg/install/install.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/install/install.go b/pkg/install/install.go index 7c483e2..01ae939 100644 --- a/pkg/install/install.go +++ b/pkg/install/install.go @@ -54,6 +54,10 @@ func InstallLatestVersion(preRelease bool) { // InstallRequiredVersion installs the required Terraform version from the .tf files in the current directory func InstallRequiredVersion() { terraformFiles := helpers.FindTerraformFiles() + if len(terraformFiles) == 0 { + fmt.Println("No Terraform files found in current directory") + os.Exit(1) + } for _, file := range terraformFiles { requiredVersion := helpers.FindRequiredVersionInFile(file) if requiredVersion != "" { @@ -61,5 +65,4 @@ func InstallRequiredVersion() { break } } - fmt.Println("No required version found in .tf files in the current directory") } From 29d53e57663ca7fe2090432033173ae6446003f9 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:50:34 +0100 Subject: [PATCH 03/10] Also implement --required for the command --- cmd/use.go | 32 ++++++++++++++++++++++++++------ pkg/use/use.go | 37 +++++++++++++++++++++---------------- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/cmd/use.go b/cmd/use.go index fc0f575..5d4ce71 100644 --- a/cmd/use.go +++ b/cmd/use.go @@ -19,7 +19,11 @@ const ( "\n" + "\n" + "# Use the latest pre-release Terraform version\n" + - "tfversion use --latest --pre-release" + "tfversion use --latest --pre-release\n" + + "\n" + + "\n" + + "# Use the required Terraform version for your current directory\n" + + "tfversion use --required" ) var ( @@ -33,21 +37,36 @@ var ( } }, Run: func(cmd *cobra.Command, args []string) { + + // use latest version if latest { if len(args) != 0 { fmt.Println("error: `--latest` flag does not require specifying a Terraform version") fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) os.Exit(1) } - use.UseVersion("", latest, preRelease) - } else { - if len(args) != 1 { - fmt.Println("error: provide a Terraform version to activate") + use.UseLatestVersion(preRelease) + os.Exit(0) + } + + // use required version + if required { + if len(args) != 0 { + fmt.Println("error: `--required` flag does not require specifying a Terraform version") fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) os.Exit(1) } - use.UseVersion(args[0], latest, preRelease) + use.UseRequiredVersion() + os.Exit(0) + } + + // use specific version + if len(args) != 1 { + fmt.Println("error: provide a Terraform version to activate") + fmt.Printf("See %s for help and examples\n", color.BlueString("`tfversion install -h`")) + os.Exit(1) } + use.UseVersion(args[0]) }, } ) @@ -56,4 +75,5 @@ func init() { rootCmd.AddCommand(useCmd) useCmd.Flags().BoolVar(&latest, "latest", false, "use the latest stable Terraform version") useCmd.Flags().BoolVar(&preRelease, "pre-release", false, "When used with --latest, use the latest pre-release version") + useCmd.Flags().BoolVar(&required, "required", false, "use the required Terraform version for your current directory") } diff --git a/pkg/use/use.go b/pkg/use/use.go index eea54a2..342c7ab 100644 --- a/pkg/use/use.go +++ b/pkg/use/use.go @@ -13,22 +13,7 @@ import ( ) // UseVersion activates the specified Terraform version or one of the latest versions -func UseVersion(version string, latest bool, preRelease bool) { - // Get the available Terraform versions - versions := list.GetAvailableVersions() - - // Set the version to the latest stable version if the `latest` flag is set - // or to the latest pre-release version if the `latest` and `pre-release` flags are set - if latest { - for _, v := range versions { - if !preRelease && helpers.IsPreReleaseVersion(v) { - continue - } - version = v - break - } - } - +func UseVersion(version string) { if !download.IsAlreadyDownloaded(version) { if helpers.IsPreReleaseVersion(version) { fmt.Printf("Terraform version %s not found, run %s to install\n", color.YellowString(version), color.BlueString(fmt.Sprintf("`tfversion install %s`", version))) @@ -83,3 +68,23 @@ func UseVersion(version string, latest bool, preRelease bool) { fmt.Printf("Activated Terraform version %s\n", color.BlueString(version)) } } + +func UseLatestVersion(preRelease bool) { + version := list.FindLatestVersion(preRelease) + UseVersion(version) +} + +func UseRequiredVersion() { + terraformFiles := helpers.FindTerraformFiles() + if len(terraformFiles) == 0 { + fmt.Println("No Terraform files found in current directory") + os.Exit(1) + } + for _, file := range terraformFiles { + requiredVersion := helpers.FindRequiredVersionInFile(file) + if requiredVersion != "" { + UseVersion(requiredVersion) + break + } + } +} From 3d282e07b2c1d64978df2045727570ba1c9b6e71 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 09:51:44 +0100 Subject: [PATCH 04/10] Add comments --- pkg/use/use.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/use/use.go b/pkg/use/use.go index 342c7ab..87ae95a 100644 --- a/pkg/use/use.go +++ b/pkg/use/use.go @@ -69,11 +69,13 @@ func UseVersion(version string) { } } +// UseLatestVersion activates the latest Terraform version func UseLatestVersion(preRelease bool) { version := list.FindLatestVersion(preRelease) UseVersion(version) } +// UseRequiredVersion activates the required Terraform version from the .tf files in the current directory func UseRequiredVersion() { terraformFiles := helpers.FindTerraformFiles() if len(terraformFiles) == 0 { From 35ffecb17ab73031df80f504d6791627fcf834fa Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:12:27 +0100 Subject: [PATCH 05/10] Robuster regex, future TODO --- pkg/helpers/helper.go | 6 +++++- pkg/install/install.go | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/helpers/helper.go b/pkg/helpers/helper.go index f0ab86a..bc4afd9 100644 --- a/pkg/helpers/helper.go +++ b/pkg/helpers/helper.go @@ -14,13 +14,14 @@ func IsPreReleaseVersion(version string) bool { } // FindRequiredVersionInFile finds the required Terraform version in a given .tf file (using required_version = ">= x.x.x") +// TODO: improve logic by using go-version/constraint? func FindRequiredVersionInFile(filepath string) string { bytes, err := os.ReadFile(filepath) if err != nil { fmt.Printf("Unable to find version number in file: %s", filepath) return "" } - re := regexp.MustCompile(`>=\s(\d+\.\d+\.\d+)`) + re := regexp.MustCompile(`required_version\s*=\s*">=? ?(\d+\.\d+\.\d+)"`) match := re.FindStringSubmatch(string(bytes)) if len(match) == 0 { return "" @@ -32,6 +33,9 @@ func FindRequiredVersionInFile(filepath string) string { func FindTerraformFiles() []string { var files []string err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error { + if info.IsDir() { + return nil + } if strings.HasSuffix(path, ".tf") { files = append(files, path) } diff --git a/pkg/install/install.go b/pkg/install/install.go index 01ae939..6ff48ed 100644 --- a/pkg/install/install.go +++ b/pkg/install/install.go @@ -58,11 +58,19 @@ func InstallRequiredVersion() { fmt.Println("No Terraform files found in current directory") os.Exit(1) } + + var foundVersion string for _, file := range terraformFiles { requiredVersion := helpers.FindRequiredVersionInFile(file) if requiredVersion != "" { - InstallVersion(requiredVersion) - break + foundVersion = requiredVersion } } + + if len(foundVersion) == 0 { + fmt.Println("No required version found in current directory") + os.Exit(1) + } + + InstallVersion(foundVersion) } From 669e0f1244bcce8d987cfe2a202d3e2bfddeadc3 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:43:23 +0100 Subject: [PATCH 06/10] Better constraint matching --- go.mod | 1 + go.sum | 2 ++ pkg/helpers/helper.go | 18 +++++++++++++++--- pkg/install/install.go | 7 ++++--- pkg/use/use.go | 4 +++- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index f8d9b2a..c10f3de 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.21.4 require ( github.com/fatih/color v1.16.0 + github.com/hashicorp/go-version v1.6.0 github.com/spf13/cobra v1.8.0 golang.org/x/net v0.21.0 ) diff --git a/go.sum b/go.sum index 14ca698..ea6331d 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= diff --git a/pkg/helpers/helper.go b/pkg/helpers/helper.go index bc4afd9..1152f60 100644 --- a/pkg/helpers/helper.go +++ b/pkg/helpers/helper.go @@ -6,6 +6,8 @@ import ( "path/filepath" "regexp" "strings" + + "github.com/hashicorp/go-version" ) // IsPreReleaseVersion checks if the given version is a Terraform pre-release version @@ -15,18 +17,28 @@ func IsPreReleaseVersion(version string) bool { // FindRequiredVersionInFile finds the required Terraform version in a given .tf file (using required_version = ">= x.x.x") // TODO: improve logic by using go-version/constraint? -func FindRequiredVersionInFile(filepath string) string { +func FindRequiredVersionInFile(filepath string, availableVersions []string) string { bytes, err := os.ReadFile(filepath) if err != nil { fmt.Printf("Unable to find version number in file: %s", filepath) return "" } - re := regexp.MustCompile(`required_version\s*=\s*">=? ?(\d+\.\d+\.\d+)"`) + + re := regexp.MustCompile(`required_version\s?=\s?"([^"]+)"`) match := re.FindStringSubmatch(string(bytes)) if len(match) == 0 { return "" } - return match[1] + + for _, v := range availableVersions { + testVersion, _ := version.NewVersion(v) + constraints, _ := version.NewConstraint(match[1]) + if constraints.Check(testVersion) { + return v + } + } + + return "" } // FindTerraformFiles finds all .tf files in the current directory (module) diff --git a/pkg/install/install.go b/pkg/install/install.go index 6ff48ed..1819b9d 100644 --- a/pkg/install/install.go +++ b/pkg/install/install.go @@ -55,20 +55,21 @@ func InstallLatestVersion(preRelease bool) { func InstallRequiredVersion() { terraformFiles := helpers.FindTerraformFiles() if len(terraformFiles) == 0 { - fmt.Println("No Terraform files found in current directory") + fmt.Println("error: no Terraform files found in current directory") os.Exit(1) } var foundVersion string + availableVersions := list.GetAvailableVersions() for _, file := range terraformFiles { - requiredVersion := helpers.FindRequiredVersionInFile(file) + requiredVersion := helpers.FindRequiredVersionInFile(file, availableVersions) if requiredVersion != "" { foundVersion = requiredVersion } } if len(foundVersion) == 0 { - fmt.Println("No required version found in current directory") + fmt.Println("error: no required version found in current directory") os.Exit(1) } diff --git a/pkg/use/use.go b/pkg/use/use.go index 87ae95a..16f1957 100644 --- a/pkg/use/use.go +++ b/pkg/use/use.go @@ -82,8 +82,10 @@ func UseRequiredVersion() { fmt.Println("No Terraform files found in current directory") os.Exit(1) } + + availableVersions := list.GetAvailableVersions() for _, file := range terraformFiles { - requiredVersion := helpers.FindRequiredVersionInFile(file) + requiredVersion := helpers.FindRequiredVersionInFile(file, availableVersions) if requiredVersion != "" { UseVersion(requiredVersion) break From e6d59872e990d325eff7f23a321b1eccab42ec87 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:44:24 +0100 Subject: [PATCH 07/10] Update README --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index cda3a75..4ff4c4b 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,12 @@ tfversion use --latest tfversion use --latest --pre-release ``` +### Use the required version for your current directory + +```sh +tfversion use --required +``` + ### List versions ```sh From fd919bae109de6228106b3738bf7f1072bb425b3 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:45:27 +0100 Subject: [PATCH 08/10] Remove implemented TODO --- pkg/helpers/helper.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/helpers/helper.go b/pkg/helpers/helper.go index 1152f60..c4a3912 100644 --- a/pkg/helpers/helper.go +++ b/pkg/helpers/helper.go @@ -16,7 +16,6 @@ func IsPreReleaseVersion(version string) bool { } // FindRequiredVersionInFile finds the required Terraform version in a given .tf file (using required_version = ">= x.x.x") -// TODO: improve logic by using go-version/constraint? func FindRequiredVersionInFile(filepath string, availableVersions []string) string { bytes, err := os.ReadFile(filepath) if err != nil { From ba877529291739ee05c7fae1e66a887c4d71ac08 Mon Sep 17 00:00:00 2001 From: Bruno Schaatsbergen Date: Tue, 27 Feb 2024 11:05:37 +0100 Subject: [PATCH 09/10] chore: use a blank identifier for MarkFlagRequired --- cmd/install.go | 2 +- cmd/use.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/install.go b/cmd/install.go index 211cdde..350746e 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -36,7 +36,7 @@ var ( Example: installExample, PreRun: func(cmd *cobra.Command, args []string) { if preRelease && !latest { - cmd.MarkFlagRequired("latest") + _ = cmd.MarkFlagRequired("latest") } }, Run: func(cmd *cobra.Command, args []string) { diff --git a/cmd/use.go b/cmd/use.go index 5d4ce71..5b17a58 100644 --- a/cmd/use.go +++ b/cmd/use.go @@ -33,7 +33,7 @@ var ( Example: useExample, PreRun: func(cmd *cobra.Command, args []string) { if preRelease && !latest { - cmd.MarkFlagRequired("latest") + _ = cmd.MarkFlagRequired("latest") } }, Run: func(cmd *cobra.Command, args []string) { From 49b3105a76243e59d9ecf8c203a4a05393db8a39 Mon Sep 17 00:00:00 2001 From: Chris ter Beke <1134120+ChrisTerBeke@users.noreply.github.com> Date: Tue, 27 Feb 2024 11:13:45 +0100 Subject: [PATCH 10/10] Disable godot linting --- .golangci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index bc255c4..7230ec9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,7 +20,6 @@ linters: - exportloopref - forcetypeassert - funlen - - godot - godox - gofmt - gosimple