// CopyToDir will copy all elements specified in the froms slice into the // directory inside the current ACI specified by the to string. func (a *ACBuild) CopyToDir(froms []string, to string) (err error) { if err = a.lock(); err != nil { return err } defer func() { if err1 := a.unlock(); err == nil { err = err1 } }() target := path.Join(a.CurrentACIPath, aci.RootfsDir, to) targetInfo, err := os.Stat(target) switch { case os.IsNotExist(err): err := os.MkdirAll(target, 0755) if err != nil { return err } case err != nil: return err case !targetInfo.IsDir(): return fmt.Errorf("target %q is not a directory", to) } for _, from := range froms { _, file := path.Split(from) tmptarget := path.Join(target, file) err := fileutil.CopyTree(from, tmptarget, uid.NewBlankUidRange()) if err != nil { return err } } return nil }
func (a *ACBuild) beginFromLocalDirectory(start string) error { err := os.MkdirAll(a.CurrentACIPath, 0755) if err != nil { return err } err = fileutil.CopyTree(start, path.Join(a.CurrentACIPath, aci.RootfsDir), uid.NewBlankUidRange()) if err != nil { return err } return a.writeEmptyManifest() }
// Copy will copy the directory/file at from to the path to inside the untarred // ACI at acipath. func Copy(acipath, from, to string) error { target := path.Join(acipath, aci.RootfsDir, to) dir, _ := path.Split(target) if dir != "" { err := os.MkdirAll(dir, 0755) if err != nil { return err } } return fileutil.CopyTree(from, target, uid.NewBlankUidRange()) }
// Copy will copy the directory/file at from to the path to inside the untarred // ACI at a.CurrentACIPath. func (a *ACBuild) Copy(from, to string) (err error) { if err = a.lock(); err != nil { return err } defer func() { if err1 := a.unlock(); err == nil { err = err1 } }() target := path.Join(a.CurrentACIPath, aci.RootfsDir, to) dir, _ := path.Split(target) if dir != "" { err := os.MkdirAll(dir, 0755) if err != nil { return err } } return fileutil.CopyTree(from, target, uid.NewBlankUidRange()) }