Skip to content

Commit 3df93dd

Browse files
authored
fix: idiomatic go (#185)
1 parent e4f711a commit 3df93dd

9 files changed

Lines changed: 40 additions & 48 deletions

File tree

internal/command/comparer.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,14 +258,14 @@ func (data *markdownData) update(current []item, target []item, ignores []ignore
258258
}
259259
}
260260

261-
marker := make(map[string]bool, 0)
261+
marker := make(map[string]bool)
262262
for _, i := range current {
263263
marker[i.Id()] = false
264264
}
265265

266266
ignored := make([]ignoreItem, 0)
267267
missing := make([]item, 0)
268-
groups := make(map[string]string, 0)
268+
groups := make(map[string]string)
269269
for _, item := range target {
270270
id := item.Id()
271271
_, ok := marker[id]
@@ -284,7 +284,7 @@ func (data *markdownData) update(current []item, target []item, ignores []ignore
284284
for group := range groups {
285285
item := markdownItem{Group: group, Items: []markdownItems{}}
286286

287-
kinds := make(map[string]string, 0)
287+
kinds := make(map[string]string)
288288
for _, i := range missing {
289289
if i.group != group {
290290
continue
@@ -333,6 +333,11 @@ func (data *markdownData) update(current []item, target []item, ignores []ignore
333333
return result
334334
})
335335

336-
ratio := float32(len(target)-len(missing)) / float32(len(target))
336+
var ratio float32
337+
if len(target) == 0 {
338+
ratio = 1
339+
} else {
340+
ratio = float32(len(target)-len(missing)) / float32(len(target))
341+
}
337342
data.Ratio = fmt.Sprintf("%.2f%%", ratio*100)
338343
}

internal/command/updater.go

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"io"
88
"os"
9-
"os/exec"
109
"path"
1110
"runtime"
1211

@@ -48,24 +47,11 @@ func (cmd Updater) Run() error {
4847
return err
4948
}
5049

51-
if cmd.registryPath != "" {
52-
reg, err := registry.Load(cmd.registryPath)
53-
if err != nil {
54-
return fmt.Errorf("failed to load registry: %w", err)
55-
}
56-
cmd.registry = reg
57-
}
58-
5950
configurations, err := readConfiguration(cmd.Configuration)
6051
if err != nil {
6152
return err
6253
}
6354

64-
reader, err := crd.NewCrdReader(cmd.Logger)
65-
if err != nil {
66-
return err
67-
}
68-
6955
tmpDir, err := os.MkdirTemp("", "output")
7056
if err != nil {
7157
return fmt.Errorf("failed to create temp dir: %w", err)
@@ -75,27 +61,22 @@ func (cmd Updater) Run() error {
7561
for _, config := range splitConfigurations(configurations) {
7662
runtime.GC()
7763

78-
build, err := generator.NewBuilder(config, reader, tmpDir, cmd.Schema, cmd.Definitions, cmd.Logger, cmd.registry)
64+
build, err := generator.NewBuilder(config, cmd.reader, tmpDir, cmd.Schema, cmd.Definitions, cmd.Logger, cmd.registry)
7965
if err != nil {
66+
fmt.Fprintf(cmd.Logger, "::warning:: unable to create builder for %s: %v\n", config.Name, err)
8067
continue
8168
}
8269

8370
err = build.Build()
8471
if err != nil {
72+
fmt.Fprintf(cmd.Logger, "::warning:: build of %s failed: %v\n", config.Name, err)
8573
continue
8674
}
87-
88-
out, err := exec.Command("df", "-h", cmd.Schema).Output()
89-
if err != nil {
90-
return fmt.Errorf("unable to look up free disk space: %w", err)
91-
}
92-
93-
fmt.Fprintf(cmd.Logger, "%s\n\n", string(out))
9475
}
9576

9677
if cmd.registry != nil && cmd.registryPath != "" {
9778
if err := cmd.registry.Save(cmd.registryPath); err != nil {
98-
fmt.Fprintf(cmd.Logger, "Warning: failed to save registry: %v\n", err)
79+
fmt.Fprintf(cmd.Logger, "::warning:: failed to save registry: %v\n", err)
9980
}
10081
}
10182

@@ -129,6 +110,14 @@ func (cmd *Updater) initialize() error {
129110
}
130111
cmd.reader = reader
131112

113+
if cmd.registryPath != "" {
114+
reg, err := registry.Load(cmd.registryPath)
115+
if err != nil {
116+
return fmt.Errorf("failed to load registry: %w", err)
117+
}
118+
cmd.registry = reg
119+
}
120+
132121
return nil
133122
}
134123

@@ -155,10 +144,10 @@ func splitConfigurations(configurations []configuration.Configuration) []configu
155144
continue
156145
}
157146
for _, e := range c.Entries {
158-
copy := c
159-
copy.Name = fmt.Sprintf("%s.%s", c.Name, e)
160-
copy.Entries = []string{e}
161-
updated = append(updated, copy)
147+
cfg := c
148+
cfg.Name = fmt.Sprintf("%s.%s", c.Name, e)
149+
cfg.Entries = []string{e}
150+
updated = append(updated, cfg)
162151
}
163152
}
164153

@@ -175,7 +164,7 @@ func merge(generatedRepository, schemaRepository string) error {
175164

176165
for _, group := range groups {
177166
if group.IsDir() {
178-
os.Mkdir(path.Join(schemaRepository, group.Name()), 0755)
167+
_ = os.Mkdir(path.Join(schemaRepository, group.Name()), 0755)
179168
files, err := os.ReadDir(path.Join(generatedRepository, group.Name()))
180169
if err != nil {
181170
return err

internal/command/verifier.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ func unpack(file string, data []byte) (any, error) {
107107
return nil, fmt.Errorf("unable to unpack '%s' as either JSON or YAML", file)
108108
}
109109

110+
// tryUnpack attempts to deserialize data as yaml and as json and returns true if either succeeds
110111
func tryUnpack(data []byte, target any) bool {
111112
return yaml.Unmarshal(data, target) == nil || json.Unmarshal(data, target) == nil
112113
}

internal/configuration/configuration.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,12 @@ func UnmarshalConfigurations(reader io.Reader) ([]Configuration, error) {
8484
// ValuesFile resolves the most relevant values file content from the configuration,
8585
// note that versions are treated as semver, but any prefix/suffix extras or leading zeroes will result in improper sorting
8686
func (c *Configuration) ValuesFile(version string) (map[string]any, error) {
87-
sort.Slice(c.Values, func(i, j int) bool {
88-
return semver.Compare(c.Values[i].Version, c.Values[j].Version) > 0
87+
values := c.Values
88+
sort.Slice(values, func(i, j int) bool {
89+
return semver.Compare(values[i].Version, values[j].Version) > 0
8990
})
9091

91-
for _, v := range c.Values {
92+
for _, v := range values {
9293
if semver.Compare(v.Version, version) > 0 {
9394
continue
9495
}

internal/crd/crd.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ type CrdMetaSchema struct {
4444
Group, Kind, Version string
4545
}
4646

47+
var emptyDocument = regexp.MustCompile(`[^\t\n\v\f\r ]+`)
48+
4749
func NewCrdReader(logger io.Writer) (CrdReader, error) {
4850
scheme := runtime.NewScheme()
4951
if err := v1beta1.AddToScheme(scheme); err != nil {
@@ -71,12 +73,7 @@ func NewCrdReader(logger io.Writer) (CrdReader, error) {
7173
codecs := serializer.NewCodecFactory(scheme)
7274
decoder := codecs.UniversalDeserializer()
7375

74-
matcher, err := regexp.Compile(`[^\t\n\v\f\r ]+`)
75-
if err != nil {
76-
return nil, err
77-
}
78-
79-
return &crdReader{decoder: decoder, logger: logger, matcher: matcher, scheme: scheme}, nil
76+
return &crdReader{decoder: decoder, logger: logger, matcher: emptyDocument, scheme: scheme}, nil
8077
}
8178

8279
func (r *crdReader) Read(reader io.Reader, file string) ([]Crd, error) {
@@ -118,11 +115,11 @@ func (r *crdReader) Read(reader io.Reader, file string) ([]Crd, error) {
118115
doc = out
119116
}
120117

121-
if crd.Spec.Group == "" {
118+
if len(crd.Spec.Group) == 0 {
122119
fmt.Fprintf(r.logger, " empty group declared for %s at %s\n", crd.ObjectMeta.Name, file)
123120
continue
124121
}
125-
if crd.Spec.Names.Kind == "" {
122+
if len(crd.Spec.Names.Kind) == 0 {
126123
fmt.Fprintf(r.logger, " empty group declared for %s at %s\n", crd.ObjectMeta.Name, file)
127124
continue
128125
}
@@ -241,7 +238,7 @@ func applyDefaults(schema *v1.JSONSchemaProps, skip bool) {
241238
}
242239
}
243240

244-
func (r crdReader) convertToV1(obj runtime.Object) *v1.CustomResourceDefinition {
241+
func (r *crdReader) convertToV1(obj runtime.Object) *v1.CustomResourceDefinition {
245242
var (
246243
crd v1.CustomResourceDefinition
247244
err error

internal/generator/git.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ func (generator *GitGenerator) ensureLoaded() error {
244244
b = after
245245
}
246246

247-
if b == "" || b == "HEAD" || b == "origin" {
247+
if len(b) == 0 || b == "HEAD" || b == "origin" {
248248
continue
249249
}
250250

internal/generator/gitGeneratorFactory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ func (f *gitGeneratorFactory) fetchRefs(owner, repo, token, prefix string) ([]ve
164164
hasNextPage = result.Data.Repository.Refs.PageInfo.HasNextPage
165165
cursor = result.Data.Repository.Refs.PageInfo.EndCursor
166166

167-
if cursor == "" {
167+
if len(cursor) == 0 {
168168
hasNextPage = false
169169
}
170170
}

internal/generator/helm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (generator *HelmGenerator) Crds(version string) ([]crd.Crd, error) {
7171
return nil, err
7272
}
7373

74-
if version == "" {
74+
if len(version) == 0 {
7575
version = ">0.0.0"
7676
}
7777

make.d/update.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
update: build/bin/catalog
2-
df -h
32
build/bin/catalog update --registry registry.yaml --configuration configuration.yaml --output schema --definitions definitions

0 commit comments

Comments
 (0)