Skip to content

Commit

Permalink
refactoring: extract stdin and boltdb readers
Browse files Browse the repository at this point in the history
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
  • Loading branch information
Dave Henderson committed May 22, 2020
1 parent da66c34 commit ac32d56
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 49 deletions.
34 changes: 0 additions & 34 deletions data/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@ package data
import (
"fmt"
"io"
"io/ioutil"
"mime"
"net/http"
"net/url"
"os"
"path/filepath"
"strings"

Expand Down Expand Up @@ -372,35 +370,3 @@ func (d *Data) readSource(source *Source, args ...string) ([]byte, error) {
d.cache[cacheKey] = data
return data, nil
}

func readStdin(source *Source, args ...string) ([]byte, error) {
if stdin == nil {
stdin = os.Stdin
}
b, err := ioutil.ReadAll(stdin)
if err != nil {
return nil, errors.Wrapf(err, "Can't read %s", stdin)
}
return b, nil
}

func readBoltDB(source *Source, args ...string) (data []byte, err error) {
if source.kv == nil {
source.kv, err = libkv.NewBoltDB(source.URL)
if err != nil {
return nil, err
}
}

if len(args) != 1 {
return nil, errors.New("missing key")
}
p := args[0]

data, err = source.kv.Read(p)
if err != nil {
return nil, err
}

return data, nil
}
27 changes: 27 additions & 0 deletions data/datasource_boltdb.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package data

import (
"github.com/hairyhenderson/gomplate/v3/libkv"
"github.com/pkg/errors"
)

func readBoltDB(source *Source, args ...string) (data []byte, err error) {
if source.kv == nil {
source.kv, err = libkv.NewBoltDB(source.URL)
if err != nil {
return nil, err
}
}

if len(args) != 1 {
return nil, errors.New("missing key")
}
p := args[0]

data, err = source.kv.Read(p)
if err != nil {
return nil, err
}

return data, nil
}
19 changes: 19 additions & 0 deletions data/datasource_stdin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package data

import (
"io/ioutil"
"os"

"github.com/pkg/errors"
)

func readStdin(source *Source, args ...string) ([]byte, error) {
if stdin == nil {
stdin = os.Stdin
}
b, err := ioutil.ReadAll(stdin)
if err != nil {
return nil, errors.Wrapf(err, "Can't read %s", stdin)
}
return b, nil
}
22 changes: 22 additions & 0 deletions data/datasource_stdin_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package data

import (
"strings"
"testing"

"github.com/stretchr/testify/assert"
)

func TestReadStdin(t *testing.T) {
defer func() {
stdin = nil
}()
stdin = strings.NewReader("foo")
out, err := readStdin(nil)
assert.NoError(t, err)
assert.Equal(t, []byte("foo"), out)

stdin = errorReader{}
_, err = readStdin(nil)
assert.Error(t, err)
}
15 changes: 0 additions & 15 deletions data/datasource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"net/http"
"net/url"
"runtime"
"strings"
"testing"

"github.com/hairyhenderson/gomplate/v3/internal/config"
Expand Down Expand Up @@ -173,20 +172,6 @@ func (e errorReader) Read(p []byte) (n int, err error) {
return 0, fmt.Errorf("error")
}

func TestReadStdin(t *testing.T) {
defer func() {
stdin = nil
}()
stdin = strings.NewReader("foo")
out, err := readStdin(nil)
assert.NoError(t, err)
assert.Equal(t, []byte("foo"), out)

stdin = errorReader{}
_, err = readStdin(nil)
assert.Error(t, err)
}

// nolint: megacheck
func TestDefineDatasource(t *testing.T) {
d := &Data{}
Expand Down

0 comments on commit ac32d56

Please sign in to comment.