Skip to content
This repository was archived by the owner on Aug 24, 2022. It is now read-only.

Commit 033e8a5

Browse files
committed
修复 goroot.zip 打包工具, 支持指定翻译目录
1 parent 86b1f5a commit 033e8a5

File tree

3 files changed

+79
-9
lines changed

3 files changed

+79
-9
lines changed

appengine/main.go

Lines changed: 77 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ package main
1414

1515
import (
1616
"archive/zip"
17+
"flag"
1718
"fmt"
1819
"io/ioutil"
1920
"log"
@@ -23,7 +24,27 @@ import (
2324
"strings"
2425
)
2526

27+
const (
28+
GODOC_LOCAL_ROOT = "GODOC_LOCAL_ROOT"
29+
)
30+
31+
var (
32+
flagGoroot = flag.String("goroot", runtime.GOROOT(), "Go root directory")
33+
flagLocalRoot = flag.String("godoc-local-root", "", "Godoc translations root, default is $(GOROOT)/translations")
34+
)
35+
2636
func main() {
37+
flag.Parse()
38+
39+
if *flagLocalRoot == "" {
40+
if s := os.Getenv(GODOC_LOCAL_ROOT); s != "" {
41+
*flagLocalRoot = s
42+
}
43+
}
44+
if *flagLocalRoot == "" || *flagLocalRoot == "translations" {
45+
*flagLocalRoot = *flagGoroot + "/translations"
46+
}
47+
2748
file, err := os.Create("goroot.zip")
2849
if err != nil {
2950
log.Fatal("os.Create: ", err)
@@ -41,21 +62,20 @@ func main() {
4162
if _, err = f.Write([]byte("")); err != nil {
4263
log.Fatal(err)
4364
}
44-
45-
filepath.Walk(runtime.GOROOT(), func(path string, info os.FileInfo, err error) error {
65+
filepath.Walk(*flagGoroot, func(path string, info os.FileInfo, err error) error {
4666
if err != nil {
4767
log.Fatal("filepath.Walk: ", err)
4868
}
4969
if info.IsDir() {
5070
return nil
5171
}
52-
relpath, err := filepath.Rel(runtime.GOROOT(), path)
72+
relpath, err := filepath.Rel(*flagGoroot, path)
5373
if err != nil {
5474
log.Fatal("filepath.Rel: ", err)
5575
}
5676

5777
filename := filepath.ToSlash(relpath)
58-
if isIngoreFile(filename) {
78+
if isIngoreFile(filename) || isTranslationsFile(filename) {
5979
return nil
6080
}
6181

@@ -75,23 +95,73 @@ func main() {
7595
fmt.Printf("%s\n", filename)
7696
return nil
7797
})
98+
99+
// create /goroot/translations/
100+
f, err = zipFile.Create("goroot/translations/")
101+
if err != nil {
102+
log.Fatal(err)
103+
}
104+
if _, err = f.Write([]byte("")); err != nil {
105+
log.Fatal(err)
106+
}
107+
filepath.Walk(*flagLocalRoot, func(path string, info os.FileInfo, err error) error {
108+
if err != nil {
109+
log.Fatal("filepath.Walk: ", err)
110+
}
111+
if info.IsDir() {
112+
return nil
113+
}
114+
relpath, err := filepath.Rel(*flagLocalRoot, path)
115+
if err != nil {
116+
log.Fatal("filepath.Rel: ", err)
117+
}
118+
119+
filename := filepath.ToSlash(relpath)
120+
if isIngoreFile(filename) {
121+
return nil
122+
}
123+
124+
data, err := ioutil.ReadFile(path)
125+
if err != nil {
126+
log.Fatal("ioutil.ReadFile: ", err)
127+
}
128+
129+
f, err := zipFile.Create("goroot/translations/" + filename)
130+
if err != nil {
131+
log.Fatal(err)
132+
}
133+
if _, err = f.Write(data); err != nil {
134+
log.Fatal(err)
135+
}
136+
137+
fmt.Printf("translations/%s\n", filename)
138+
return nil
139+
})
140+
78141
fmt.Printf("Done\n")
79142
}
80143

144+
func isTranslationsFile(path string) bool {
145+
if strings.HasPrefix(path, "translations") {
146+
return true
147+
}
148+
return false
149+
}
150+
81151
func isIngoreFile(path string) bool {
82152
if strings.HasPrefix(path, "bin") {
83153
return true
84154
}
85155
if strings.HasPrefix(path, "pkg") {
86156
return true
87157
}
88-
if strings.HasPrefix(path, "translations/.git") {
158+
if strings.HasPrefix(path, ".git") {
89159
return true
90160
}
91-
if strings.HasPrefix(path, "translations/talks") {
161+
if strings.HasPrefix(path, "talks") {
92162
return true
93163
}
94-
if strings.HasPrefix(path, "translations/tour") {
164+
if strings.HasPrefix(path, "tour") {
95165
return true
96166
}
97167
switch strings.ToLower(filepath.Ext(path)) {

appinit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func init() {
2929
log.Printf("index files = %s", flagIndexFilenames)
3030

3131
// Determine file system to use.
32-
local.Init(flagZipGoroot, flagZipFilename, "", "")
32+
local.Init(flagZipGoroot, local.Default, flagZipFilename, "", "")
3333
fs.Bind("/", local.RootFS(), "/", vfs.BindReplace)
3434
fs.Bind("/lib/godoc", local.StaticFS(*flagLang), "/", vfs.BindReplace)
3535
fs.Bind("/doc", local.DocumentFS(*flagLang), "/", vfs.BindReplace)

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ var (
8282
// file system roots
8383
// TODO(gri) consider the invariant that goroot always end in '/'
8484
flagGoroot = flag.String("goroot", runtime.GOROOT(), "Go root directory")
85-
flagLocalRoot = flag.String("godoc-local-root", "", "Godoc translates root, default is $(GOROOT)/translates")
85+
flagLocalRoot = flag.String("godoc-local-root", "", "Godoc translations root, default is $(GOROOT)/translations")
8686

8787
// layout control
8888
flagTabWidth = flag.Int("tabwidth", 4, "tab width")

0 commit comments

Comments
 (0)