From 73edc4fb27e314aa4530990df2df60f58076ca2b Mon Sep 17 00:00:00 2001 From: Peter Bueschel Date: Sun, 27 Nov 2022 11:56:33 +0100 Subject: [PATCH] Fix '-str' handling for the glob import to enable 'importstr'. Fix glob examples in the readme file. Remove old exclude pattern example from the readme file. --- README.md | 20 +--------------- glob.go | 6 ++--- glob_test.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 1a44102..93e962e 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ models
-

Prefix `glob.` And `glob.+`

+

Prefix `glob.<?>` And `glob.<?>+`

- Each resolved file, which matched the glob pattern, will be handled individually and will be available in the code under a specific variable name. The variable name can be specified in the `` part. - `` can be one of the following options: @@ -190,24 +190,6 @@ Code which will be evaluated in jsonnet: } ``` -##### Example Input `glob.stem+!` - -```jsonnet -import 'glob.stem+!models/**/*grafana*://models/**/*.libsonnet' -``` - -##### Example Result `glob.stem+!` - -```jsonnet -{ - blackbox_exporter: import 'models/blackbox_exporter.libsonnet', - node_exporter: import 'models/node_exporter.libsonnet', - wavefront: import 'models/wavefront.libsonnet', - - victor_ops: import 'models/production/victor_ops.libsonnet', -} -``` -
diff --git a/glob.go b/glob.go index 1e69ffc..9ff02bd 100644 --- a/glob.go +++ b/glob.go @@ -416,8 +416,8 @@ func (g GlobImporter) handle(files []string, prefix string) (string, error) { // handle import or importstr importKind := "import" - if strings.HasPrefix(prefix, "-str") { - prefix = strings.TrimPrefix(prefix, "-str") + if strings.HasPrefix(prefix, "glob-str") { + prefix = strings.Replace(prefix, "glob-str", "glob", 1) importKind += "str" } @@ -481,7 +481,7 @@ func createGlobDotImportsFrom(resolvedFiles *orderedMap) string { fmt.Fprintf(&out, "'%s': %s,\n", k, strings.Join(resolvedFiles.items[k], "+")) } - out.WriteString("\n}") + out.WriteString("}") return out.String() } diff --git a/glob_test.go b/glob_test.go index 69d352c..c31cd93 100644 --- a/glob_test.go +++ b/glob_test.go @@ -337,3 +337,71 @@ func TestGlobImporter_Import(t *testing.T) { }) } } + +func TestGlobImporter_handle(t *testing.T) { + type fields struct { + aliases map[string]string + } + type args struct { + files []string + prefix string + } + tests := []struct { + name string + fields fields + args args + want string + wantErr bool + }{ + { + name: "glob-str+", + args: args{ + files: []string{"a.jsonnet", "b.jsonnet"}, + prefix: "glob-str+", + }, + want: `(importstr 'a.jsonnet')+(importstr 'b.jsonnet')`, + wantErr: false, + }, + { + name: "glob+", + args: args{ + files: []string{"a.jsonnet", "b.jsonnet"}, + prefix: "glob+", + }, + want: `(import 'a.jsonnet')+(import 'b.jsonnet')`, + wantErr: false, + }, + // ---------------------------------------------------------- glob.file + { + name: "glob.file", + args: args{ + files: []string{"a.jsonnet", "b.jsonnet"}, + prefix: "glob.file", + }, + want: "{\n'a.jsonnet': (import 'a.jsonnet'),\n'b.jsonnet': (import 'b.jsonnet'),\n}", + wantErr: false, + }, + { + name: "glob-str.file", + args: args{ + files: []string{"a.jsonnet", "b.jsonnet"}, + prefix: "glob-str.file", + }, + want: "{\n'a.jsonnet': (importstr 'a.jsonnet'),\n'b.jsonnet': (importstr 'b.jsonnet'),\n}", + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + g := NewGlobImporter() + g.aliases = tt.fields.aliases + + got, err := g.handle(tt.args.files, tt.args.prefix) + if (err != nil) != tt.wantErr { + t.Errorf("GlobImporter.handle() error = %v, wantErr %v", err, tt.wantErr) + return + } + assert.Equal(t, tt.want, got) + }) + } +}