From 6b8244ba67cede0c2c95bde695cf3c54002bce74 Mon Sep 17 00:00:00 2001 From: spf13 Date: Mon, 19 May 2014 09:16:40 -0400 Subject: [PATCH] new site works in an empty directory now --- commands/new.go | 7 ++++++- helpers/path.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/commands/new.go b/commands/new.go index 1c3e8e9e5..68ddbb4f6 100644 --- a/commands/new.go +++ b/commands/new.go @@ -110,7 +110,12 @@ func NewSite(cmd *cobra.Command, args []string) { } if x, _ := helpers.Exists(createpath); x { - jww.FATAL.Fatalln(createpath, "already exists") + y, _ := helpers.IsDir(createpath) + if z, _ := helpers.IsEmpty(createpath); y && z { + jww.INFO.Println(createpath, "already exists and is empty") + } else { + jww.FATAL.Fatalln(createpath, "already exists and is not empty") + } } mkdir(createpath, "layouts") diff --git a/helpers/path.go b/helpers/path.go index 119974a3c..0cd56e0d9 100644 --- a/helpers/path.go +++ b/helpers/path.go @@ -72,6 +72,35 @@ func DirExists(path string) (bool, error) { return false, err } +func IsDir(path string) (bool, error) { + fi, err := os.Stat(path) + if err != nil { + return false, err + } + return fi.IsDir(), nil +} + +func IsEmpty(path string) (bool, error) { + if b, _ := Exists(path); !b { + return false, fmt.Errorf("%q path does not exist", path) + } + fi, err := os.Stat(path) + if err != nil { + return false, err + } + if fi.IsDir() { + f, err := os.Open(path) + if err != nil { + return false, err + } + list, err := f.Readdir(-1) + f.Close() + return len(list) == 0, nil + } else { + return fi.Size() == 0, nil + } +} + // Check if File / Directory Exists func Exists(path string) (bool, error) { _, err := os.Stat(path)