하위 폴더 복사 누락 수정

This commit is contained in:
2023-06-29 14:13:04 +09:00
parent 45ab15d345
commit 15dd1e544c

View File

@ -11,11 +11,21 @@ import (
"time" "time"
) )
func copy(src, dst string) error { func copy(src, dst string, stdlog *log.Logger) error {
fi, err := os.Stat(src) fi, err := os.Stat(src)
if err != nil { if err != nil {
return err return err
} }
if fi.IsDir() {
entries, _ := os.ReadDir(src)
for _, ent := range entries {
if err := copy(path.Join(src, ent.Name()), path.Join(dst, ent.Name()), stdlog); err != nil {
return err
}
}
return nil
}
inmode := fi.Mode() inmode := fi.Mode()
in, err := os.Open(src) in, err := os.Open(src)
@ -45,6 +55,7 @@ func copy(src, dst string) error {
return err return err
} }
stdlog.Println("file copied :", src, dst)
return nil return nil
} }
@ -70,38 +81,21 @@ func main() {
stdlog.Println("target is terminated") stdlog.Println("target is terminated")
selfext, _ := os.Executable() // replacer 제거. 내가 돌고 있으므로 복사는 안된다.
selfext = path.Base(selfext) // 내가 실행되기 전에 이미 복사가 되서 나는 최신 버전임
nextArgs := args[4:] os.Remove(path.Join(args[2], os.Args[0]))
entries, _ := os.ReadDir(args[2]) if err := copy(args[2], "", stdlog); err != nil {
for _, ent := range entries { stdlog.Fatal(err)
if ent.Name() == selfext { }
continue
}
if ent.IsDir() { nextArgs := args[4:]
if err := os.MkdirAll(ent.Name(), 0775); err != nil { if bt, _ := os.ReadFile("@args"); len(bt) > 0 {
stdlog.Fatal(err) var tempArgs []string
} if json.Unmarshal(bt, &tempArgs) == nil {
} else { nextArgs = tempArgs
if ent.Name() == "@args" {
var tempArgs []string
argfile, _ := os.Open(path.Join(args[2], ent.Name()))
dec := json.NewDecoder(argfile)
if dec.Decode(&tempArgs) == nil {
nextArgs = tempArgs
}
} else {
err := copy(path.Join(args[2], ent.Name()), ent.Name())
if err != nil {
stdlog.Println("copy failed :", path.Join(args[2], ent.Name()), ent.Name())
stdlog.Fatal(err)
} else {
stdlog.Println("file copied :", path.Join(args[2], ent.Name()), ent.Name())
}
}
} }
} }
os.Remove("@args")
err := os.RemoveAll(args[2]) err := os.RemoveAll(args[2])
if err != nil { if err != nil {