changeset 37:43adde439537

ver.up: gf.go
author pyon@macmini
date Tue, 26 Nov 2019 21:04:22 +0900
parents a2e33e922a54
children 05bdd37e3000
files src/gf/gf.go
diffstat 1 files changed, 33 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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)