From 71260d56fac54d1725b8970c3acbe65c41dd3a88 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Mon, 1 Feb 2016 15:10:42 +0800 Subject: [PATCH] ingore gitbook data-revision --- Makefile | 2 ++ fix-data-revision.go | 82 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 fix-data-revision.go diff --git a/Makefile b/Makefile index 371a2f7..08fbc5b 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ default: go run update_version.go gitbook build + go run fix-data-revision.go zh2tw: go run zh2tw.go . .md$$ @@ -31,6 +32,7 @@ review: go run zh2tw.go . .md$$ tw2zh gitbook build go run zh2tw.go . .md$$ zh2tw + go run fix-data-revision.go qrcode: go run ./tools/mkqrcode.go diff --git a/fix-data-revision.go b/fix-data-revision.go new file mode 100644 index 0000000..088ea66 --- /dev/null +++ b/fix-data-revision.go @@ -0,0 +1,82 @@ +// Copyright 2015 . All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ingore + +// 修复Gitbook生成html的时间戳. +package main + +import ( + "fmt" + "io/ioutil" + "log" + "os" + "path/filepath" + "regexp" + "strings" + "unicode/utf8" +) + +// 输出目录 +const dir = "_book" + +var ( + // data-revision="Mon Feb 01 2016 10:18:48 GMT+0800 (中国标准时间)" + reDataRevision = regexp.MustCompile(`data\-revision\=\"[^"]+\"`) + goldenDataRevision = `data-revision="Mon Jan 2 15:04:05 -0700 MST 2006"` +) + +func main() { + total := 0 + filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + log.Fatal("filepath.Walk: ", err) + return err + } + if info.IsDir() { + return nil + } + relpath, err := filepath.Rel(dir, path) + if err != nil { + log.Fatal("filepath.Rel: ", err) + return err + } + + if !strings.HasSuffix(relpath, ".html") { + return nil + } + if changed := convertFile(path); changed { + fmt.Printf("%s\n", relpath) + total++ + } + return nil + }) + fmt.Printf("total %d\n", total) +} + +func convertFile(path string) (changed bool) { + abspath, err := filepath.Abs(path) + if err != nil { + log.Fatal("convertFile: filepath.Abs:", err) + } + + oldData, err := ioutil.ReadFile(abspath) + if err != nil { + log.Fatal("convertFile: ioutil.ReadFile:", err) + } + if !utf8.Valid(oldData) { + return false + } + + newData := reDataRevision.ReplaceAll(oldData, []byte(goldenDataRevision)) + if string(newData) == string(oldData) { + return false + } + + err = ioutil.WriteFile(abspath, newData, 0666) + if err != nil { + log.Fatal("convertFile: ioutil.WriteFile:", err) + } + return true +}