...
1 package utils
2
3 import (
4 "fmt"
5 "io/ioutil"
6 "os"
7 )
8
9 var ()
10
11
12
13
14 func RecreateSafely(dirname string) error {
15 fname := dirname + "/.goeasyops-dir"
16
17
18 if FileExists(dirname) {
19 files, err := ioutil.ReadDir(dirname)
20 if err == nil {
21 if len(files) == 0 {
22 err = os.Chmod(dirname, 0777)
23 if err != nil {
24 return err
25 }
26 err = WriteFile(fname, make([]byte, 0))
27 return err
28 }
29 }
30 }
31
32
33 var err error
34 if FileExists(dirname) {
35 if FileExists(fname) {
36 err = RemoveAll(dirname)
37 if err != nil {
38 return err
39 }
40 } else {
41 return fmt.Errorf("not recreating dir \"%s\", it exists already, but .goeasyops-dir does not.", dirname)
42 }
43 }
44 if FileExists(dirname) {
45 return fmt.Errorf("Attempt to delete dir \"%s\" failed", dirname)
46 }
47 err = os.MkdirAll(dirname, 0777)
48 if err != nil {
49 return err
50 }
51 err = WriteFile(fname, make([]byte, 0))
52 return err
53 }
54
View as plain text