Bläddra i källkod

Refactor store.New

Signed-off-by: Ulysses Souza <[email protected]>
Ulysses Souza 5 år sedan
förälder
incheckning
3380c9d459
3 ändrade filer med 23 tillägg och 8 borttagningar
  1. 1 1
      cli/main.go
  2. 21 6
      context/store/store.go
  3. 1 1
      context/store/store_test.go

+ 1 - 1
cli/main.go

@@ -118,7 +118,7 @@ func main() {
 		logrus.Fatal(err)
 	}
 
-	s, err := store.New(opts.Config)
+	s, err := store.New(store.WithRoot(opts.Config))
 	if err != nil {
 		logrus.Fatal(err)
 	}

+ 21 - 6
context/store/store.go

@@ -72,9 +72,27 @@ type store struct {
 	root string
 }
 
+type StoreOpt func(*store)
+
+func WithRoot(root string) StoreOpt {
+	return func(s *store) {
+		s.root = root
+	}
+}
+
 // New returns a configured context store
-func New(root string) (Store, error) {
-	cd := filepath.Join(root, contextsDir)
+func New(opts ...StoreOpt) (Store, error) {
+	home, err := os.UserHomeDir()
+	if err != nil {
+		return nil, err
+	}
+	s := &store {
+		root: home,
+	}
+	for _, opt := range opts {
+		opt(s)
+	}
+	cd := filepath.Join(s.root, contextsDir)
 	if _, err := os.Stat(cd); os.IsNotExist(err) {
 		if err = os.Mkdir(cd, 0755); err != nil {
 			return nil, err
@@ -86,10 +104,7 @@ func New(root string) (Store, error) {
 			return nil, err
 		}
 	}
-
-	return &store{
-		root: root,
-	}, nil
+	return s, nil
 }
 
 // Get returns the context with the given name

+ 1 - 1
context/store/store_test.go

@@ -48,7 +48,7 @@ func (suite *StoreTestSuite) BeforeTest(suiteName, testName string) {
 	dir, err := ioutil.TempDir("", "store")
 	require.Nil(suite.T(), err)
 
-	store, err := New(dir)
+	store, err := New(WithRoot(dir))
 	require.Nil(suite.T(), err)
 
 	suite.dir = dir