From 9be99d20fbc176c80923cdcf51cc15589e3d6482 Mon Sep 17 00:00:00 2001 From: Sergey Romanov Date: Sat, 21 Nov 2015 22:57:59 +0500 Subject: [PATCH] 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) {