annotate src/gf/gf.go @ 58:62ae9daac43a

start develop horori/eraline.
author pyon@macmini
date Thu, 06 Aug 2020 19:50:15 +0900
parents 43adde439537
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
1 /*
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
2 Last Change: 2019-11-25 月 13:55:58.
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
3
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
4 gf.go: Get Files (ver.0.7)
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
5
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
6 ./gf.json: server & file list
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
7 e.g.
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
8 {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
9 "Server": {
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
10 "Address": "hoge.com",
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
11 "Port": "80"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
12 },
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
13 "Files": [
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
14 "mahjong.html",
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
15 "gammon",
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
16 "gammon/backgammon.html"
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
17 ],
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
18 "Backup": false
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
19 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
20
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
21 TODO:
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
22 + reserve dirtree option [-r]
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
23 + gunzip/untar option
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
24 */
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
25 package main
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
26
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
27 import (
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
28 "encoding/json"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
29 "fmt"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
30 "flag"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
31 "io/ioutil"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
32 "log"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
33 "os"
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
34 "path"
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
35 "path/filepath"
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
36 "net/http"
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
37 "time"
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
38 )
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
39
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
40 const version = "0.7"
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
41 const defaultjson = "gf.json"
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
42 const samplejson = `{
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
43 "Server": {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
44 "Address": "hoge.com",
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
45 "Port": "80"
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
46 },
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
47 "Files": [
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
48 "mahjong.html",
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
49 "gammon/backgammon.html"
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
50 ],
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
51 "Backup": false
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
52 }`
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
53
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
54 type SV struct {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
55 Address string
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
56 Port string
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
57 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
58
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
59 func (sv SV) String() string {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
60 return sv.Address + ":" + sv.Port
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
61 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
62
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
63 type GF struct {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
64 Server SV
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
65 Files []string
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
66 Backup bool
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
67 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
68
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
69 type HO struct { // html object
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
70 Status string
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
71 StatusCode int
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
72 Content []byte
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
73 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
74
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
75 // option valiables
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
76 var (
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
77 ver bool
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
78 quiet bool
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
79 jsonfile string
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
80 sample bool
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
81 somefile string
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
82 tdir string
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
83 )
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
84
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
85 func init() {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
86 flag.BoolVar(&ver, "v", false, "version.")
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
87 flag.BoolVar(&quiet, "s", false, "silence.")
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
88 flag.StringVar(&jsonfile, "j", defaultjson, "specify json file.")
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
89 flag.BoolVar(&sample, "p", false, "print json sample.")
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
90 flag.StringVar(&somefile, "o", "", "get specity file.")
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
91 flag.StringVar(&tdir, "d", "", "specity save directory.")
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
92 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
93
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
94 func main() {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
95 flag.Parse()
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
96
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
97 if ver {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
98 fmt.Println("gf", version)
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
99 flag.PrintDefaults()
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
100 os.Exit(0)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
101 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
102
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
103 if sample {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
104 fmt.Println(samplejson)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
105 os.Exit(0)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
106 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
107
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
108 if somefile != "" {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
109 ho, err := http_get(somefile)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
110 if err != nil {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
111 log.Fatal(err)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
112 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
113 fmt.Print(string(ho.Content))
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
114 os.Exit(0)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
115 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
116
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
117 content, err := ioutil.ReadFile(jsonfile)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
118 if err != nil {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
119 log.Fatal(err)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
120 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
121
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
122 var gf GF
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
123
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
124 err = json.Unmarshal(content, &gf)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
125 if err != nil {
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
126 log.Fatal(err)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
127 }
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
128
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
129 if tdir != "" {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
130 if err := os.Mkdir(tdir, 0755); err != nil {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
131 log.Fatal(err)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
132 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
133 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
134
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
135 n := len(gf.Files)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
136 if n > 1 {
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
137 print_msg(fmt.Sprintf("%d files downloading", n))
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
138 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
139
37
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
140 if gf.Backup {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
141 bkdir := "backup" + time.Now().Format("200601021504")
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
142 if err := os.Mkdir(bkdir, 0755); err != nil {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
143 log.Fatal(err)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
144 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
145 for _, f := range gf.Files {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
146 file := path.Base(f)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
147 if _, err := os.Stat(file); os.IsNotExist(err) {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
148 continue
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
149 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
150 if err := os.Link(file, filepath.Join(bkdir, file)); err != nil {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
151 log.Fatal(err)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
152 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
153 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
154 files, err := ioutil.ReadDir(bkdir)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
155 if err != nil {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
156 log.Fatal(err)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
157 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
158 if len(files) == 0 {
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
159 os.Remove(bkdir)
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
160 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
161
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
162 }
43adde439537 ver.up: gf.go
pyon@macmini
parents: 36
diff changeset
163
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
164 ch := make(chan string)
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
165 for _, f := range gf.Files {
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
166 go http_gets(gf.Server.String(), f, ch)
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
167 }
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
168
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
169 for range gf.Files {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
170 print_msg(<-ch)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
171 }
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
172 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
173
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
174 func http_get(url string) (HO, error) {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
175 var ho HO
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
176
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
177 res, err := http.Get(url)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
178 if err != nil {
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
179 return ho, err
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
180 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
181
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
182 content, err := ioutil.ReadAll(res.Body)
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
183 res.Body.Close()
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
184 if err != nil {
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
185 return ho, err
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
186 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
187
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
188 ho.Status = res.Status
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
189 ho.StatusCode = res.StatusCode
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
190 ho.Content = content
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
191
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
192 return ho, nil
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
193 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
194
36
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
195 func http_gets(server, file string, ch chan<- string) {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
196 msg := " getting " + file + "... "
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
197
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
198 url := "http://" + server + "/" + file
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
199
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
200 ho, err := http_get(url)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
201 if err != nil {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
202 ch <- msg + fmt.Sprint(err)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
203 return
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
204 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
205
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
206 if ho.StatusCode == http.StatusOK {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
207 file = path.Base(file)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
208 if tdir != "" {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
209 file = filepath.Join(tdir, file)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
210 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
211 if err := ioutil.WriteFile(file, ho.Content, 0644); err != nil {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
212 ch <- msg + fmt.Sprint(err)
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
213 return
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
214 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
215 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
216
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
217 ch <- msg + "[" + ho.Status + "]"
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
218 }
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
219
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
220 func print_msg(msg string) {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
221 if !quiet {
a2e33e922a54 ver up gf.go.
pyon@macmini
parents: 35
diff changeset
222 fmt.Println(msg)
35
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
223 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
224 }
a4a54931b6fa add gf.go.
pyon@macmini
parents:
diff changeset
225