summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/new.go7
-rw-r--r--helpers/path.go29
2 files changed, 35 insertions, 1 deletions
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)