...

Source file src/golang.conradwood.net/go-easyops/utils/recreate.go

Documentation: golang.conradwood.net/go-easyops/utils

     1  package utils
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  )
     8  
     9  var ()
    10  
    11  // if dir does not exist: create it and create a file ".filelayouter"
    12  // if dir DOES exist, check for existence of a file  ".filelayouter", if so, recreate
    13  // otherwise error
    14  func RecreateSafely(dirname string) error {
    15  	fname := dirname + "/.goeasyops-dir"
    16  
    17  	// check if directory exists and is empty
    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  	// check if directory exists and has goeasyops marker
    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