하위 폴더 복사 누락 수정

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