Skip to content

Commit 25eb788

Browse files
committed
chore(lint): various linting and formatting updates
- migrated away from ioutil as it's been deprecated since go 1.16 - also believe this fixes a few cases of unhandled errors - added golangci-lint config Signed-off-by: Liam Stanley <[email protected]>
1 parent ce3ad86 commit 25eb788

13 files changed

+98
-97
lines changed

.golangci.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
run:
2+
tests: False
3+
timeout: 3m
4+
5+
severity:
6+
default-severity: error
7+
rules:
8+
- linters:
9+
- errcheck
10+
- gocritic
11+
severity: warning
12+
13+
linters:
14+
enable:
15+
- asciicheck
16+
- exportloopref
17+
- gci
18+
- gofmt
19+
- misspell

cmd/tfplugindocs/main.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ package main
33
import (
44
"os"
55

6-
"github.com/mattn/go-colorable"
7-
86
"github.com/hashicorp/terraform-plugin-docs/internal/cmd"
7+
"github.com/mattn/go-colorable"
98
)
109

1110
func main() {

internal/cmd/generate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (cmd *generateCmd) Help() string {
4242
}
4343
})
4444

45-
strBuilder.WriteString(fmt.Sprintf("\nUsage: tfplugindocs generate [<args>]\n\n"))
45+
strBuilder.WriteString("\nUsage: tfplugindocs generate [<args>]\n\n")
4646
cmd.Flags().VisitAll(func(f *flag.Flag) {
4747
if f.DefValue != "" {
4848
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s (default: %q)\n",

internal/cmd/run.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func initCommands(ui cli.Ui) map[string]cli.CommandFactory {
5454
"": defaultFactory,
5555
"generate": generateFactory,
5656
"validate": validateFactory,
57-
//"serve": serveFactory,
57+
// "serve": serveFactory,
5858
}
5959
}
6060

@@ -81,7 +81,7 @@ func Run(name, version string, args []string, stdin io.Reader, stdout, stderr io
8181

8282
commands := initCommands(ui)
8383

84-
cli := cli.CLI{
84+
cmd := cli.CLI{
8585
Name: name,
8686
Args: args,
8787
Commands: commands,
@@ -90,7 +90,7 @@ func Run(name, version string, args []string, stdin io.Reader, stdout, stderr io
9090
Version: version,
9191
}
9292

93-
exitCode, err := cli.Run()
93+
exitCode, err := cmd.Run()
9494
if err != nil {
9595
return 1
9696
}

internal/cmd/validate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (cmd *validateCmd) Help() string {
3030
}
3131
})
3232

33-
strBuilder.WriteString(fmt.Sprintf("\nUsage: tfplugindocs validate [<args>]\n\n"))
33+
strBuilder.WriteString("\nUsage: tfplugindocs validate [<args>]\n\n")
3434
cmd.Flags().VisitAll(func(f *flag.Flag) {
3535
if f.DefValue != "" {
3636
strBuilder.WriteString(fmt.Sprintf(" --%s <ARG> %s%s%s (default: %q)\n",

internal/mdplain/renderer.go

+13-35
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (options *Text) GetFlags() int {
1818

1919
func (options *Text) TitleBlock(out *bytes.Buffer, text []byte) {
2020
text = bytes.TrimPrefix(text, []byte("% "))
21-
text = bytes.Replace(text, []byte("\n% "), []byte("\n"), -1)
21+
text = bytes.ReplaceAll(text, []byte("\n% "), []byte("\n"))
2222
out.Write(text)
2323
out.WriteString("\n")
2424
}
@@ -29,7 +29,6 @@ func (options *Text) Header(out *bytes.Buffer, text func() bool, level int, id s
2929

3030
if !text() {
3131
out.Truncate(marker)
32-
return
3332
}
3433
}
3534

@@ -57,7 +56,7 @@ func (options *Text) BlockQuote(out *bytes.Buffer, text []byte) {
5756
out.Write(text)
5857
}
5958

60-
func (options *Text) Table(out *bytes.Buffer, header []byte, body []byte, columnData []int) {
59+
func (options *Text) Table(out *bytes.Buffer, header, body []byte, columnData []int) {
6160
doubleSpace(out)
6261
out.Write(header)
6362
out.Write(body)
@@ -93,7 +92,6 @@ func (options *Text) List(out *bytes.Buffer, text func() bool, flags int) {
9392

9493
if !text() {
9594
out.Truncate(marker)
96-
return
9795
}
9896
}
9997

@@ -107,7 +105,6 @@ func (options *Text) Paragraph(out *bytes.Buffer, text func() bool) {
107105

108106
if !text() {
109107
out.Truncate(marker)
110-
return
111108
}
112109
}
113110

@@ -130,26 +127,19 @@ func (options *Text) Emphasis(out *bytes.Buffer, text []byte) {
130127
out.Write(text)
131128
}
132129

133-
func (options *Text) Image(out *bytes.Buffer, link []byte, title []byte, alt []byte) {
134-
return
135-
}
130+
func (options *Text) Image(out *bytes.Buffer, link, title, alt []byte) {}
136131

137-
func (options *Text) LineBreak(out *bytes.Buffer) {
138-
return
139-
}
132+
func (options *Text) LineBreak(out *bytes.Buffer) {}
140133

141-
func (options *Text) Link(out *bytes.Buffer, link []byte, title []byte, content []byte) {
134+
func (options *Text) Link(out *bytes.Buffer, link, title, content []byte) {
142135
out.Write(content)
143136
if !isRelativeLink(link) {
144137
out.WriteString(" ")
145138
out.Write(link)
146139
}
147-
return
148140
}
149141

150-
func (options *Text) RawHtmlTag(out *bytes.Buffer, text []byte) {
151-
return
152-
}
142+
func (options *Text) RawHtmlTag(out *bytes.Buffer, text []byte) {}
153143

154144
func (options *Text) TripleEmphasis(out *bytes.Buffer, text []byte) {
155145
out.Write(text)
@@ -159,9 +149,7 @@ func (options *Text) StrikeThrough(out *bytes.Buffer, text []byte) {
159149
out.Write(text)
160150
}
161151

162-
func (options *Text) FootnoteRef(out *bytes.Buffer, ref []byte, id int) {
163-
return
164-
}
152+
func (options *Text) FootnoteRef(out *bytes.Buffer, ref []byte, id int) {}
165153

166154
func (options *Text) Entity(out *bytes.Buffer, entity []byte) {
167155
out.Write(entity)
@@ -171,25 +159,15 @@ func (options *Text) NormalText(out *bytes.Buffer, text []byte) {
171159
out.Write(text)
172160
}
173161

174-
func (options *Text) Smartypants(out *bytes.Buffer, text []byte) {
175-
return
176-
}
162+
func (options *Text) Smartypants(out *bytes.Buffer, text []byte) {}
177163

178-
func (options *Text) DocumentHeader(out *bytes.Buffer) {
179-
return
180-
}
164+
func (options *Text) DocumentHeader(out *bytes.Buffer) {}
181165

182-
func (options *Text) DocumentFooter(out *bytes.Buffer) {
183-
return
184-
}
166+
func (options *Text) DocumentFooter(out *bytes.Buffer) {}
185167

186-
func (options *Text) TocHeader(text []byte, level int) {
187-
return
188-
}
168+
func (options *Text) TocHeader(text []byte, level int) {}
189169

190-
func (options *Text) TocFinalize() {
191-
return
192-
}
170+
func (options *Text) TocFinalize() {}
193171

194172
func doubleSpace(out *bytes.Buffer) {
195173
if out.Len() > 0 {
@@ -214,5 +192,5 @@ func isRelativeLink(link []byte) (yes bool) {
214192
if len(link) == 1 && link[0] == '/' {
215193
yes = true
216194
}
217-
return
195+
return yes
218196
}

internal/provider/generate.go

+18-9
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package provider
33
import (
44
"context"
55
"fmt"
6-
"io/ioutil"
76
"os"
87
"os/exec"
98
"path/filepath"
@@ -128,7 +127,7 @@ func (g *generator) Generate(ctx context.Context) error {
128127

129128
switch {
130129
case g.websiteTmpDir == "":
131-
g.websiteTmpDir, err = ioutil.TempDir("", "tfws")
130+
g.websiteTmpDir, err = os.MkdirTemp("", "tfws")
132131
if err != nil {
133132
return fmt.Errorf("unable to create temporary directory: %w", err)
134133
}
@@ -190,7 +189,14 @@ func (g *generator) Generate(ctx context.Context) error {
190189
return nil
191190
}
192191

193-
func (g *generator) renderMissingResourceDoc(providerName, name, typeName string, schema *tfjson.Schema, websiteFileTemplate resourceFileTemplate, fallbackWebsiteFileTemplate resourceFileTemplate, websiteStaticCandidateTemplates []resourceFileTemplate, examplesFileTemplate resourceFileTemplate, examplesImportTemplate *resourceFileTemplate) error {
192+
func (g *generator) renderMissingResourceDoc(
193+
providerName, name, typeName string,
194+
schema *tfjson.Schema,
195+
websiteFileTemplate, fallbackWebsiteFileTemplate resourceFileTemplate,
196+
websiteStaticCandidateTemplates []resourceFileTemplate,
197+
examplesFileTemplate resourceFileTemplate,
198+
examplesImportTemplate *resourceFileTemplate,
199+
) error {
194200
tmplPath, err := websiteFileTemplate.Render(name, providerName)
195201
if err != nil {
196202
return fmt.Errorf("unable to render path for resource %q: %w", name, err)
@@ -247,7 +253,7 @@ func (g *generator) renderMissingResourceDoc(providerName, name, typeName string
247253
fallbackTmplPath = filepath.Join(g.websiteTmpDir, g.websiteSourceDir, fallbackTmplPath)
248254
if fileExists(fallbackTmplPath) {
249255
g.infof("resource %q fallback template exists", name)
250-
tmplData, err := ioutil.ReadFile(fallbackTmplPath)
256+
tmplData, err := os.ReadFile(fallbackTmplPath)
251257
if err != nil {
252258
return fmt.Errorf("unable to read file %q: %w", fallbackTmplPath, err)
253259
}
@@ -376,6 +382,10 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
376382
g.infof("rendering templated website to static markdown")
377383

378384
err = filepath.Walk(g.websiteTmpDir, func(path string, info os.FileInfo, err error) error {
385+
if err != nil {
386+
return fmt.Errorf("unable to walk dir %q: %w", g.websiteTmpDir, err)
387+
}
388+
379389
if info.IsDir() {
380390
// skip directories
381391
return nil
@@ -411,7 +421,7 @@ func (g *generator) renderStaticWebsite(providerName string, providerSchema *tfj
411421

412422
renderedPath = strings.TrimSuffix(renderedPath, ext)
413423

414-
tmplData, err := ioutil.ReadFile(path)
424+
tmplData, err := os.ReadFile(path)
415425
if err != nil {
416426
return fmt.Errorf("unable to read file %q: %w", rel, err)
417427
}
@@ -493,7 +503,7 @@ func (g *generator) terraformProviderSchema(ctx context.Context, providerName st
493503

494504
shortName := providerShortName(providerName)
495505

496-
tmpDir, err := ioutil.TempDir("", "tfws")
506+
tmpDir, err := os.MkdirTemp("", "tfws")
497507
if err != nil {
498508
return nil, fmt.Errorf("unable to create temp dir: %w", err)
499509
}
@@ -507,9 +517,8 @@ func (g *generator) terraformProviderSchema(ctx context.Context, providerName st
507517
g.infof("compiling provider %q", shortName)
508518
providerPath := fmt.Sprintf("plugins/registry.terraform.io/hashicorp/%s/0.0.1/%s_%s", shortName, runtime.GOOS, runtime.GOARCH)
509519
outFile := filepath.Join(tmpDir, providerPath, fmt.Sprintf("terraform-provider-%s", shortName))
510-
switch runtime.GOOS {
511-
case "windows":
512-
outFile = outFile + ".exe"
520+
if runtime.GOOS == "windows" {
521+
outFile += ".exe"
513522
}
514523
buildCmd := exec.Command("go", "build", "-o", outFile)
515524
// TODO: constrain env here to make it a little safer?

internal/provider/template.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@ import (
77
"strings"
88
"text/template"
99

10-
"golang.org/x/text/cases"
11-
"golang.org/x/text/language"
12-
1310
tfjson "github.com/hashicorp/terraform-json"
14-
1511
"github.com/hashicorp/terraform-plugin-docs/internal/mdplain"
1612
"github.com/hashicorp/terraform-plugin-docs/internal/tmplfuncs"
1713
"github.com/hashicorp/terraform-plugin-docs/schemamd"
14+
"golang.org/x/text/cases"
15+
"golang.org/x/text/language"
1816
)
1917

2018
const (
@@ -62,7 +60,7 @@ func terraformCodeFile(file string) (string, error) {
6260
return tmplfuncs.CodeFile("terraform", file)
6361
}
6462

65-
func renderTemplate(name string, text string, out io.Writer, data interface{}) error {
63+
func renderTemplate(name, text string, out io.Writer, data interface{}) error {
6664
tmpl, err := newTemplate(name, text)
6765
if err != nil {
6866
return fmt.Errorf("unable to parse template %q: %w", text, err)

internal/provider/util.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package provider
33
import (
44
"fmt"
55
"io"
6-
"io/ioutil"
76
"log"
87
"os"
98
"os/exec"
@@ -71,14 +70,14 @@ func resourceSchema(schemas map[string]*tfjson.Schema, providerShortName, templa
7170
return nil, resName
7271
}
7372

74-
func writeFile(path string, data string) error {
73+
func writeFile(path, data string) error {
7574
dir, _ := filepath.Split(path)
7675
err := os.MkdirAll(dir, 0o755)
7776
if err != nil {
7877
return fmt.Errorf("unable to make dir %q: %w", dir, err)
7978
}
8079

81-
err = ioutil.WriteFile(path, []byte(data), 0o644)
80+
err = os.WriteFile(path, []byte(data), 0o644)
8281
if err != nil {
8382
return fmt.Errorf("unable to write file %q: %w", path, err)
8483
}
@@ -90,7 +89,7 @@ func runCmd(cmd *exec.Cmd) ([]byte, error) {
9089
output, err := cmd.CombinedOutput()
9190
if err != nil {
9291
log.Printf("error executing %q, %v", cmd.Path, cmd.Args)
93-
log.Printf(string(output))
92+
log.Println(string(output))
9493
return nil, fmt.Errorf("error executing %q: %w", cmd.Path, err)
9594
}
9695
return output, nil

internal/tmplfuncs/tmplfuncs.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package tmplfuncs
22

33
import (
44
"fmt"
5-
"io/ioutil"
65
"os"
76
"path/filepath"
87
"strings"
@@ -21,7 +20,7 @@ func CodeFile(format, file string) (string, error) {
2120
}
2221

2322
fullPath := filepath.Join(wd, file)
24-
content, err := ioutil.ReadFile(fullPath)
23+
content, err := os.ReadFile(fullPath)
2524
if err != nil {
2625
return "", fmt.Errorf("unable to read content from %q: %w", file, err)
2726
}

0 commit comments

Comments
 (0)