diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2025-02-22 21:10:31 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-23 02:10:31 +0000 |
| commit | 1ebbc31fb242f4dd85a8db188f77d838b61d6db8 (patch) | |
| tree | ec6b67033a1a51497752683c68cca2ac6a8a8532 /internal | |
| parent | 3a4825687419639b8aa9b8c6158cdf3d20f22932 (diff) | |
fix(lint): Address new lint warnings (#2329)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/cmd/config.go | 6 | ||||
| -rw-r--r-- | internal/cmd/config_test.go | 12 | ||||
| -rw-r--r-- | internal/datafs/default.go | 27 | ||||
| -rw-r--r-- | internal/datafs/envfs.go | 6 | ||||
| -rw-r--r-- | internal/datafs/envfs_test.go | 4 | ||||
| -rw-r--r-- | internal/datafs/fsurl.go | 4 | ||||
| -rw-r--r-- | internal/datafs/mergefs.go | 6 | ||||
| -rw-r--r-- | internal/datafs/mergefs_test.go | 8 | ||||
| -rw-r--r-- | internal/datafs/stdinfs.go | 6 | ||||
| -rw-r--r-- | internal/datafs/stdinfs_test.go | 8 | ||||
| -rw-r--r-- | internal/datafs/wdfs.go | 4 |
11 files changed, 59 insertions, 32 deletions
diff --git a/internal/cmd/config.go b/internal/cmd/config.go index 11886bba..4f665eae 100644 --- a/internal/cmd/config.go +++ b/internal/cmd/config.go @@ -202,7 +202,7 @@ func cobraConfig(cmd *cobra.Command, args []string) (cfg *gomplate.Config, err e if err != nil { return nil, err } - err = ParseDataSourceFlags(cfg, ds, cx, ts, hdr) + err = parseDataSourceFlags(cfg, ds, cx, ts, hdr) if err != nil { return nil, err } @@ -320,10 +320,10 @@ func ParsePluginFlags(c *gomplate.Config, plugins []string) error { return nil } -// ParseDataSourceFlags - sets DataSources, Context, and Templates fields from +// parseDataSourceFlags - sets DataSources, Context, and Templates fields from // the key=value format flags as provided at the command-line // Unreferenced headers will be set in c.ExtraHeaders -func ParseDataSourceFlags(c *gomplate.Config, datasources, contexts, templates, headers []string) error { +func parseDataSourceFlags(c *gomplate.Config, datasources, contexts, templates, headers []string) error { err := parseResources(c, datasources, contexts, templates) if err != nil { return err diff --git a/internal/cmd/config_test.go b/internal/cmd/config_test.go index 760766fd..069d10ce 100644 --- a/internal/cmd/config_test.go +++ b/internal/cmd/config_test.go @@ -325,16 +325,16 @@ func mustURL(s string) *url.URL { func TestParseDataSourceFlags(t *testing.T) { t.Parallel() cfg := &gomplate.Config{} - err := ParseDataSourceFlags(cfg, nil, nil, nil, nil) + err := parseDataSourceFlags(cfg, nil, nil, nil, nil) require.NoError(t, err) assert.EqualValues(t, &gomplate.Config{}, cfg) cfg = &gomplate.Config{} - err = ParseDataSourceFlags(cfg, []string{"foo/bar/baz.json"}, nil, nil, nil) + err = parseDataSourceFlags(cfg, []string{"foo/bar/baz.json"}, nil, nil, nil) require.Error(t, err) cfg = &gomplate.Config{} - err = ParseDataSourceFlags(cfg, []string{"baz=foo/bar/baz.json"}, nil, nil, nil) + err = parseDataSourceFlags(cfg, []string{"baz=foo/bar/baz.json"}, nil, nil, nil) require.NoError(t, err) expected := &gomplate.Config{ DataSources: map[string]gomplate.DataSource{ @@ -344,7 +344,7 @@ func TestParseDataSourceFlags(t *testing.T) { assert.EqualValues(t, expected, cfg, "expected: %+v\nactual: %+v\n", expected, cfg) cfg = &gomplate.Config{} - err = ParseDataSourceFlags(cfg, + err = parseDataSourceFlags(cfg, []string{"baz=foo/bar/baz.json"}, nil, nil, @@ -362,7 +362,7 @@ func TestParseDataSourceFlags(t *testing.T) { }, cfg) cfg = &gomplate.Config{} - err = ParseDataSourceFlags(cfg, + err = parseDataSourceFlags(cfg, []string{"baz=foo/bar/baz.json"}, []string{"foo=http://example.com"}, nil, @@ -390,7 +390,7 @@ func TestParseDataSourceFlags(t *testing.T) { }, cfg) cfg = &gomplate.Config{} - err = ParseDataSourceFlags(cfg, + err = parseDataSourceFlags(cfg, nil, nil, []string{"foo=http://example.com", "file.tmpl", "tmpldir/"}, diff --git a/internal/datafs/default.go b/internal/datafs/default.go new file mode 100644 index 00000000..52cf5500 --- /dev/null +++ b/internal/datafs/default.go @@ -0,0 +1,27 @@ +package datafs + +import ( + "sync" + + "github.com/hairyhenderson/go-fsimpl" + "github.com/hairyhenderson/go-fsimpl/autofs" +) + +// DefaultProvider is the default filesystem provider used by gomplate +var DefaultProvider = sync.OnceValue( + func() fsimpl.FSProvider { + fsp := fsimpl.NewMux() + + // start with all go-fsimpl filesystems + fsp.Add(autofs.FS) + + // override go-fsimpl's filefs with wdfs to handle working directories + fsp.Add(wdFSProvider) + + // gomplate-only filesystems + fsp.Add(EnvFS) + fsp.Add(StdinFS) + fsp.Add(mergeFSProvider) + + return fsp + })() diff --git a/internal/datafs/envfs.go b/internal/datafs/envfs.go index 41b3928f..0a8d82c4 100644 --- a/internal/datafs/envfs.go +++ b/internal/datafs/envfs.go @@ -13,9 +13,9 @@ import ( "github.com/hairyhenderson/go-fsimpl" ) -// NewEnvFS returns a filesystem (an fs.FS) that can be used to read data from +// newEnvFS returns a filesystem (an fs.FS) that can be used to read data from // environment variables. -func NewEnvFS(_ *url.URL) (fs.FS, error) { +func newEnvFS(_ *url.URL) (fs.FS, error) { return &envFS{locfs: os.DirFS("/")}, nil } @@ -24,7 +24,7 @@ type envFS struct { } //nolint:gochecknoglobals -var EnvFS = fsimpl.FSProviderFunc(NewEnvFS, "env") +var EnvFS = fsimpl.FSProviderFunc(newEnvFS, "env") var _ fs.FS = (*envFS)(nil) diff --git a/internal/datafs/envfs_test.go b/internal/datafs/envfs_test.go index 812844ed..74610afb 100644 --- a/internal/datafs/envfs_test.go +++ b/internal/datafs/envfs_test.go @@ -12,7 +12,7 @@ import ( ) func TestEnvFS_Open(t *testing.T) { - fsys, err := NewEnvFS(nil) + fsys, err := newEnvFS(nil) require.NoError(t, err) assert.IsType(t, &envFS{}, fsys) @@ -78,7 +78,7 @@ func TestEnvFS(t *testing.T) { lfsys := fstest.MapFS{} lfsys["foo/bar/baz.txt"] = &fstest.MapFile{Data: []byte("\nhello file\n")} - fsys, err := NewEnvFS(u) + fsys, err := newEnvFS(u) require.NoError(t, err) assert.IsType(t, &envFS{}, fsys) diff --git a/internal/datafs/fsurl.go b/internal/datafs/fsurl.go index f34324a0..27ee0eb0 100644 --- a/internal/datafs/fsurl.go +++ b/internal/datafs/fsurl.go @@ -27,9 +27,9 @@ func SplitFSMuxURL(in *url.URL) (*url.URL, string) { // it has a path, the URL must begin with a slash. if u.Opaque != "" { return &url.URL{Scheme: u.Scheme}, u.Opaque - } else { - return &url.URL{Scheme: u.Scheme, Path: "/"}, strings.TrimLeft(u.Path, "/") } + + return &url.URL{Scheme: u.Scheme, Path: "/"}, strings.TrimLeft(u.Path, "/") } // trim leading and trailing slashes - they are not part of a valid path diff --git a/internal/datafs/mergefs.go b/internal/datafs/mergefs.go index dd74eb67..1559b5fb 100644 --- a/internal/datafs/mergefs.go +++ b/internal/datafs/mergefs.go @@ -22,7 +22,7 @@ import ( "github.com/hairyhenderson/gomplate/v4/internal/urlhelpers" ) -// NewMergeFS returns a new filesystem that merges the contents of multiple +// newMergeFS returns a new filesystem that merges the contents of multiple // paths. Only a URL like "merge:" or "merge:///" makes sense here - the // piped-separated lists of sub-sources to merge must be given to Open. // @@ -31,7 +31,7 @@ import ( // // An FSProvider will also be needed, which can be provided with a context // using ContextWithFSProvider. Provide that context with fsimpl.WithContextFS. -func NewMergeFS(u *url.URL) (fs.FS, error) { +func newMergeFS(u *url.URL) (fs.FS, error) { if u.Scheme != "merge" { return nil, fmt.Errorf("unsupported scheme %q", u.Scheme) } @@ -49,7 +49,7 @@ type mergeFS struct { } //nolint:gochecknoglobals -var MergeFS = fsimpl.FSProviderFunc(NewMergeFS, "merge") +var mergeFSProvider = fsimpl.FSProviderFunc(newMergeFS, "merge") var ( _ fs.FS = (*mergeFS)(nil) diff --git a/internal/datafs/mergefs_test.go b/internal/datafs/mergefs_test.go index b332722b..012c5a95 100644 --- a/internal/datafs/mergefs_test.go +++ b/internal/datafs/mergefs_test.go @@ -65,12 +65,12 @@ func setupMergeFsys(ctx context.Context, t *testing.T) fs.FS { }) mux := fsimpl.NewMux() - mux.Add(MergeFS) + mux.Add(mergeFSProvider) mux.Add(WrappedFSProvider(fsys, "file", "")) ctx = ContextWithFSProvider(ctx, mux) - fsys, err := NewMergeFS(mustParseURL("merge:///")) + fsys, err := newMergeFS(mustParseURL("merge:///")) require.NoError(t, err) fsys = WithDataSourceRegistryFS(reg, fsys) @@ -293,7 +293,7 @@ func TestMergeFS_ReadsSubFilesOnce(t *testing.T) { })) mux := fsimpl.NewMux() - mux.Add(MergeFS) + mux.Add(mergeFSProvider) mux.Add(WrappedFSProvider(fsys, "file", "")) ctx := ContextWithFSProvider(context.Background(), mux) @@ -302,7 +302,7 @@ func TestMergeFS_ReadsSubFilesOnce(t *testing.T) { reg.Register("jsonfile", config.DataSource{URL: mustParseURL("tmp/jsonfile.json")}) reg.Register("yamlfile", config.DataSource{URL: mustParseURL("tmp/yamlfile.yaml")}) - fsys, err := NewMergeFS(mustParseURL("merge:///")) + fsys, err := newMergeFS(mustParseURL("merge:///")) require.NoError(t, err) fsys = WithDataSourceRegistryFS(reg, fsys) diff --git a/internal/datafs/stdinfs.go b/internal/datafs/stdinfs.go index f6a02c51..433b7a39 100644 --- a/internal/datafs/stdinfs.go +++ b/internal/datafs/stdinfs.go @@ -11,9 +11,9 @@ import ( "github.com/hairyhenderson/go-fsimpl" ) -// NewStdinFS returns a filesystem (an fs.FS) that can be used to read data from +// newStdinFS returns a filesystem (an fs.FS) that can be used to read data from // standard input (os.Stdin). -func NewStdinFS(_ *url.URL) (fs.FS, error) { +func newStdinFS(_ *url.URL) (fs.FS, error) { return &stdinFS{ctx: context.Background()}, nil } @@ -23,7 +23,7 @@ type stdinFS struct { } //nolint:gochecknoglobals -var StdinFS = fsimpl.FSProviderFunc(NewStdinFS, "stdin") +var StdinFS = fsimpl.FSProviderFunc(newStdinFS, "stdin") var ( _ fs.FS = (*stdinFS)(nil) diff --git a/internal/datafs/stdinfs_test.go b/internal/datafs/stdinfs_test.go index f5010a47..8b0e0598 100644 --- a/internal/datafs/stdinfs_test.go +++ b/internal/datafs/stdinfs_test.go @@ -14,7 +14,7 @@ import ( ) func TestStdinFS_Open(t *testing.T) { - fsys, err := NewStdinFS(nil) + fsys, err := newStdinFS(nil) require.NoError(t, err) assert.IsType(t, &stdinFS{}, fsys) @@ -56,7 +56,7 @@ func TestStdinFS(t *testing.T) { ctx := ContextWithStdin(context.Background(), bytes.NewReader(content)) - fsys, err := NewStdinFS(u) + fsys, err := newStdinFS(u) require.NoError(t, err) assert.IsType(t, &stdinFS{}, fsys) @@ -128,7 +128,7 @@ func TestStdinFS(t *testing.T) { t.Run("open errors", func(t *testing.T) { ctx := ContextWithStdin(context.Background(), &errorReader{err: fs.ErrPermission}) - fsys, err := NewStdinFS(u) + fsys, err := newStdinFS(u) require.NoError(t, err) assert.IsType(t, &stdinFS{}, fsys) @@ -141,7 +141,7 @@ func TestStdinFS(t *testing.T) { t.Run("readFile errors", func(t *testing.T) { ctx := ContextWithStdin(context.Background(), &errorReader{err: fs.ErrPermission}) - fsys, err := NewStdinFS(u) + fsys, err := newStdinFS(u) require.NoError(t, err) assert.IsType(t, &stdinFS{}, fsys) diff --git a/internal/datafs/wdfs.go b/internal/datafs/wdfs.go index 46486885..41e47e25 100644 --- a/internal/datafs/wdfs.go +++ b/internal/datafs/wdfs.go @@ -193,7 +193,7 @@ func isSupportedPath(name string) bool { } } -// WdFS is a filesystem provider that creates local filesystems which support +// wdFSProvider is a filesystem provider that creates local filesystems which support // absolute paths beginning with '/', and interpret relative paths as relative // to the current working directory (as reported by [os.Getwd]). // @@ -203,7 +203,7 @@ func isSupportedPath(name string) bool { // - Root Local - e.g. \\. or \\? // - non-drive Local Devices - e.g. \\.\COM1, \\.\pipe\foo // - NT Paths - e.g. \??\C:\foo\bar or \??\UNC\foo\bar -var WdFS = fsimpl.FSProviderFunc( +var wdFSProvider = fsimpl.FSProviderFunc( func(u *url.URL) (fs.FS, error) { if !isSupportedPath(u.Path) { return nil, fmt.Errorf("unsupported path %q: %w", u.Path, fs.ErrInvalid) |
