resources: file: Small fixups and force additions
This commit is contained in:
@@ -443,27 +443,27 @@ func (obj *FileRes) fileCheckApply(apply bool, src io.ReadSeeker, dst string, sh
|
|||||||
return sha256sum, false, dstFile.Sync()
|
return sha256sum, false, dstFile.Sync()
|
||||||
}
|
}
|
||||||
|
|
||||||
// dirCheckApply is the CheckApply operation for an empty directory
|
// dirCheckApply is the CheckApply operation for an empty directory.
|
||||||
func (obj *FileRes) dirCheckApply(apply bool) (bool, error) {
|
func (obj *FileRes) dirCheckApply(apply bool) (bool, error) {
|
||||||
// Check if the path exists and is a directory
|
// check if the path exists and is a directory
|
||||||
st, err := os.Stat(obj.path)
|
st, err := os.Stat(obj.path)
|
||||||
if err != nil && !os.IsNotExist(err) {
|
if err != nil && !os.IsNotExist(err) {
|
||||||
return false, errwrap.Wrapf(err, "Error checking file resource existence")
|
return false, errwrap.Wrapf(err, "error checking file resource existence")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err == nil && st.IsDir() {
|
if err == nil && st.IsDir() {
|
||||||
return true, nil // Already a directory, nothing to do
|
return true, nil // already a directory, nothing to do
|
||||||
}
|
}
|
||||||
if err == nil && !st.IsDir() && !obj.Force {
|
if err == nil && !st.IsDir() && !obj.Force {
|
||||||
return false, fmt.Errorf("Can't force file into dir: %s", obj.path)
|
return false, fmt.Errorf("can't force file into dir: %s", obj.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !apply {
|
if !apply {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// The path exists and is not a directory
|
// the path exists and is not a directory
|
||||||
// Delete the file if force is given
|
// delete the file if force is given
|
||||||
if err == nil && !st.IsDir() {
|
if err == nil && !st.IsDir() {
|
||||||
log.Printf("dirCheckApply: Removing (force): %s", obj.path)
|
log.Printf("dirCheckApply: Removing (force): %s", obj.path)
|
||||||
if err := os.Remove(obj.path); err != nil {
|
if err := os.Remove(obj.path); err != nil {
|
||||||
@@ -471,7 +471,7 @@ func (obj *FileRes) dirCheckApply(apply bool) (bool, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the empty directory
|
// create the empty directory
|
||||||
var mode os.FileMode
|
var mode os.FileMode
|
||||||
if obj.Mode != "" {
|
if obj.Mode != "" {
|
||||||
mode, err = obj.mode()
|
mode, err = obj.mode()
|
||||||
@@ -482,8 +482,13 @@ func (obj *FileRes) dirCheckApply(apply bool) (bool, error) {
|
|||||||
mode = os.ModePerm
|
mode = os.ModePerm
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.Mkdir(obj.path, mode)
|
if obj.Force {
|
||||||
return false, err
|
// FIXME: respect obj.Recurse here...
|
||||||
|
// TODO: add recurse limit here
|
||||||
|
return false, os.MkdirAll(obj.path, mode)
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, os.Mkdir(obj.path, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
// syncCheckApply is the CheckApply operation for a source and destination dir.
|
// syncCheckApply is the CheckApply operation for a source and destination dir.
|
||||||
|
|||||||
Reference in New Issue
Block a user