comparison src/gf/gf.go @ 37:43adde439537

ver.up: gf.go
author pyon@macmini
date Tue, 26 Nov 2019 21:04:22 +0900
parents a2e33e922a54
children
comparison
equal deleted inserted replaced
36:a2e33e922a54 37:43adde439537
1 /* 1 /*
2 Last Change: 2019-11-21 Thu 02:11:35. 2 Last Change: 2019-11-25 月 13:55:58.
3 3
4 gf.go: Get Files (ver.0.6) 4 gf.go: Get Files (ver.0.7)
5 5
6 ./gf.json: server & file list 6 ./gf.json: server & file list
7 e.g. 7 e.g.
8 { 8 {
9 "Server": { 9 "Server": {
12 }, 12 },
13 "Files": [ 13 "Files": [
14 "mahjong.html", 14 "mahjong.html",
15 "gammon", 15 "gammon",
16 "gammon/backgammon.html" 16 "gammon/backgammon.html"
17 ] 17 ],
18 "Backup": false
18 } 19 }
19 20
20 TODO: 21 TODO:
21 + reserve dirtree option [-r] 22 + reserve dirtree option [-r]
22 + gunzip/untar option 23 + gunzip/untar option
31 "log" 32 "log"
32 "os" 33 "os"
33 "path" 34 "path"
34 "path/filepath" 35 "path/filepath"
35 "net/http" 36 "net/http"
37 "time"
36 ) 38 )
37 39
38 const version = "0.6" 40 const version = "0.7"
39 const defaultjson = "gf.json" 41 const defaultjson = "gf.json"
40 const samplejson = `{ 42 const samplejson = `{
41 "Server": { 43 "Server": {
42 "Address": "hoge.com", 44 "Address": "hoge.com",
43 "Port": "80" 45 "Port": "80"
44 }, 46 },
45 "Files": [ 47 "Files": [
46 "mahjong.html", 48 "mahjong.html",
47 "gammon/backgammon.html" 49 "gammon/backgammon.html"
48 ] 50 ],
51 "Backup": false
49 }` 52 }`
50 53
51 type SV struct { 54 type SV struct {
52 Address string 55 Address string
53 Port string 56 Port string
58 } 61 }
59 62
60 type GF struct { 63 type GF struct {
61 Server SV 64 Server SV
62 Files []string 65 Files []string
66 Backup bool
63 } 67 }
64 68
65 type HO struct { // html object 69 type HO struct { // html object
66 Status string 70 Status string
67 StatusCode int 71 StatusCode int
131 n := len(gf.Files) 135 n := len(gf.Files)
132 if n > 1 { 136 if n > 1 {
133 print_msg(fmt.Sprintf("%d files downloading", n)) 137 print_msg(fmt.Sprintf("%d files downloading", n))
134 } 138 }
135 139
140 if gf.Backup {
141 bkdir := "backup" + time.Now().Format("200601021504")
142 if err := os.Mkdir(bkdir, 0755); err != nil {
143 log.Fatal(err)
144 }
145 for _, f := range gf.Files {
146 file := path.Base(f)
147 if _, err := os.Stat(file); os.IsNotExist(err) {
148 continue
149 }
150 if err := os.Link(file, filepath.Join(bkdir, file)); err != nil {
151 log.Fatal(err)
152 }
153 }
154 files, err := ioutil.ReadDir(bkdir)
155 if err != nil {
156 log.Fatal(err)
157 }
158 if len(files) == 0 {
159 os.Remove(bkdir)
160 }
161
162 }
163
136 ch := make(chan string) 164 ch := make(chan string)
137 for _, f := range gf.Files { 165 for _, f := range gf.Files {
138 go http_gets(gf.Server.String(), f, ch) 166 go http_gets(gf.Server.String(), f, ch)
139 } 167 }
140 168