in astro/terraform/session.go [132:169]
func cloneTree(existingPath string, newPath string) error {
existingPathDeref, err := filepath.EvalSymlinks(existingPath)
if err != nil {
return err
}
newPathDeref, err := filepath.EvalSymlinks(newPath)
if err != nil {
return err
}
find := exec.Command("find", ".",
"!", "-path", "*/.terraform/*",
"!", "-name", ".terraform",
"!", "-path", "*/.astro/*",
"!", "-name", ".astro",
"!", "-name", "terraform.tfstate*",
)
find.Dir = existingPathDeref
cpio := exec.Command("cpio", "-pl", newPathDeref)
cpio.Dir = existingPathDeref
cpio.Stdin, err = find.StdoutPipe()
if err != nil {
return err
}
if err := find.Start(); err != nil {
return err
}
if err := cpio.Start(); err != nil {
return err
}
if err := find.Wait(); err != nil {
return err
}
return cpio.Wait()
}