# HG changeset patch # User pyon@macmini # Date 1574769862 -32400 # Node ID 43adde439537b9651fdcba0d3166c817a3584aff # Parent a2e33e922a54b90dbba124a2688bc694f7e387fc ver.up: gf.go diff -r a2e33e922a54 -r 43adde439537 src/gf/gf.go --- a/src/gf/gf.go Thu Nov 21 02:12:18 2019 +0900 +++ b/src/gf/gf.go Tue Nov 26 21:04:22 2019 +0900 @@ -1,7 +1,7 @@ /* -Last Change: 2019-11-21 Thu 02:11:35. +Last Change: 2019-11-25 月 13:55:58. - gf.go: Get Files (ver.0.6) + gf.go: Get Files (ver.0.7) ./gf.json: server & file list e.g. @@ -14,7 +14,8 @@ "mahjong.html", "gammon", "gammon/backgammon.html" - ] + ], + "Backup": false } TODO: @@ -33,9 +34,10 @@ "path" "path/filepath" "net/http" + "time" ) -const version = "0.6" +const version = "0.7" const defaultjson = "gf.json" const samplejson = `{ "Server": { @@ -45,7 +47,8 @@ "Files": [ "mahjong.html", "gammon/backgammon.html" - ] + ], + "Backup": false }` type SV struct { @@ -60,6 +63,7 @@ type GF struct { Server SV Files []string + Backup bool } type HO struct { // html object @@ -133,6 +137,30 @@ print_msg(fmt.Sprintf("%d files downloading", n)) } + if gf.Backup { + bkdir := "backup" + time.Now().Format("200601021504") + if err := os.Mkdir(bkdir, 0755); err != nil { + log.Fatal(err) + } + for _, f := range gf.Files { + file := path.Base(f) + if _, err := os.Stat(file); os.IsNotExist(err) { + continue + } + if err := os.Link(file, filepath.Join(bkdir, file)); err != nil { + log.Fatal(err) + } + } + files, err := ioutil.ReadDir(bkdir) + if err != nil { + log.Fatal(err) + } + if len(files) == 0 { + os.Remove(bkdir) + } + + } + ch := make(chan string) for _, f := range gf.Files { go http_gets(gf.Server.String(), f, ch)