From 94c595be43a6d914444a6b9af32df467a4825774 Mon Sep 17 00:00:00 2001 From: Sergey Romanov Date: Sat, 21 Nov 2015 22:36:00 +0500 Subject: [PATCH 1/2] Add Options for New method --- scribble.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/scribble.go b/scribble.go index 6e84d8e..259f27c 100644 --- a/scribble.go +++ b/scribble.go @@ -35,10 +35,19 @@ type ( } ) +type Options struct { + Logger +} + // New creates a new scribble database at the desired directory location, and // returns a *Driver to then use for interacting with the database -func New(dir string, logger Logger) (driver *Driver, err error) { - +func New(dir string, opt *Options) (driver *Driver, err error) { + var options Options + if opt == nil { + options = Options{} + } else { + options = *opt + } // dir = filepath.Clean(dir) @@ -50,18 +59,18 @@ func New(dir string, logger Logger) (driver *Driver, err error) { } // - if logger == nil { - logger = lumber.NewConsoleLogger(lumber.INFO) + if options.Logger == nil { + options.Logger = lumber.NewConsoleLogger(lumber.INFO) } // driver = &Driver{ dir: dir, mutexes: make(map[string]sync.Mutex), - log: logger, + log: options.Logger, } - logger.Info("Creating scribble database at '%v'...\n", dir) + options.Logger.Info("Creating scribble database at '%v'...\n", dir) // create database return driver, os.MkdirAll(dir, 0755) From 9be99d20fbc176c80923cdcf51cc15589e3d6482 Mon Sep 17 00:00:00 2001 From: Sergey Romanov Date: Sat, 21 Nov 2015 22:57:59 +0500 Subject: [PATCH 2/2] Set experimental option ExistDir --- scribble.go | 10 +++++++++- scribble_test.go | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/scribble.go b/scribble.go index 259f27c..7ea7359 100644 --- a/scribble.go +++ b/scribble.go @@ -35,8 +35,11 @@ type ( } ) +// Options uses for specification of working golang-scribble type Options struct { Logger + // ExistDir not creates new directory before start + ExistDir bool } // New creates a new scribble database at the desired directory location, and @@ -53,7 +56,8 @@ func New(dir string, opt *Options) (driver *Driver, err error) { // ensure the database location doesn't already exist (we don't want to overwrite // any existing files/database) - if _, err := os.Stat(dir); err == nil { + _, err = os.Stat(dir) + if err == nil && !options.ExistDir { fmt.Printf("Unable to create database, '%s' already exists. Please specify a different location.\n", dir) os.Exit(1) } @@ -72,6 +76,10 @@ func New(dir string, opt *Options) (driver *Driver, err error) { options.Logger.Info("Creating scribble database at '%v'...\n", dir) + // + if options.ExistDir && err == nil { + return driver, nil + } // create database return driver, os.MkdirAll(dir, 0755) } diff --git a/scribble_test.go b/scribble_test.go index 116c7b4..071dd26 100644 --- a/scribble_test.go +++ b/scribble_test.go @@ -48,6 +48,14 @@ func TestNew(t *testing.T) { } } +// Checking opening exist dir +func TestNewExist(t *testing.T) { + var err error + if db, err = New(database, &Options{ExistDir: true}); err != nil { + panic(err) + } +} + // func TestWriteAndRead(t *testing.T) {