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

Commit cdb285d

Browse files
committed
support blog translate
1 parent 5daaa2a commit cdb285d

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

blog.go

+6-13
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,16 @@ package main
66

77
import (
88
"fmt"
9-
"go/build"
109
"log"
1110
"net/http"
1211
"os"
13-
"path/filepath"
14-
"runtime"
1512
"strings"
1613
"sync"
1714

1815
"golang.org/x/tools/godoc/redirect"
1916

2017
"github.com/chai2010/golangdoc/blog"
18+
"github.com/chai2010/golangdoc/local"
2119
)
2220

2321
const (
@@ -41,27 +39,22 @@ func init() {
4139
}
4240

4341
func blogInit() {
44-
// Binary distributions will include the blog content in "/blog".
45-
root := filepath.Join(runtime.GOROOT(), "blog")
46-
47-
// Prefer content from go.blog repository if present.
48-
if pkg, err := build.Import(blogRepo, "", build.FindOnly); err == nil {
49-
root = pkg.Dir
50-
}
42+
blogFS := local.BlogFS(*lang)
5143

5244
// If content is not available fall back to redirect.
53-
if fi, err := os.Stat(root); err != nil || !fi.IsDir() {
45+
if fi, err := blogFS.Lstat("/"); err != nil || !fi.IsDir() {
5446
fmt.Fprintf(os.Stderr, "Blog content not available locally. "+
5547
"To install, run \n\tgo get %v\n", blogRepo)
5648
blogServer = http.HandlerFunc(blogRedirectHandler)
5749
return
5850
}
5951

6052
s, err := blog.NewServer(blog.Config{
53+
RootFS: blogFS,
6154
BaseURL: blogPath,
6255
BasePath: strings.TrimSuffix(blogPath, "/"),
63-
ContentPath: filepath.Join(root, "content"),
64-
TemplatePath: filepath.Join(root, "template"),
56+
ContentPath: "content",
57+
TemplatePath: "template",
6558
HomeArticles: 5,
6659
PlayEnabled: playEnabled,
6760
})

local/init.go

+11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package local
66

77
import (
88
"archive/zip"
9+
"go/build"
910
"log"
1011
"os"
1112
"path/filepath"
@@ -59,11 +60,13 @@ func Init(goRoot, goZipFile, goTemplateDir, goPath string) {
5960

6061
defaultRootFS = getNameSpace(zipfs.New(rc, goZipFile), goRoot)
6162
defaultDocFS = getNameSpace(defaultRootFS, "/doc")
63+
defaultBlogFS = getNameSpace(defaultRootFS, "/blog")
6264
defaultLocalFS = getNameSpace(defaultRootFS, "/"+Default)
6365
} else {
6466
if goRoot != "" && goRoot != runtime.GOROOT() {
6567
defaultRootFS = getNameSpace(vfs.OS(goRoot), "/")
6668
defaultDocFS = getNameSpace(defaultRootFS, "/doc")
69+
defaultBlogFS = getNameSpace(defaultRootFS, "/blog")
6770
defaultLocalFS = getNameSpace(defaultRootFS, "/"+Default)
6871
}
6972
}
@@ -76,6 +79,14 @@ func Init(goRoot, goZipFile, goTemplateDir, goPath string) {
7679
for _, p := range filepath.SplitList(goPath) {
7780
defaultRootFS.Bind("/src", vfs.OS(p), "/src", vfs.BindAfter)
7881
}
82+
83+
// Prefer content from go.blog repository if present.
84+
if _, err := defaultBlogFS.Lstat("/"); err != nil {
85+
const blogRepo = "golang.org/x/blog"
86+
if pkg, err := build.Import(blogRepo, "", build.FindOnly); err == nil {
87+
defaultBlogFS = getNameSpace(defaultRootFS, pkg.Dir)
88+
}
89+
}
7990
}
8091

8192
func getNameSpace(fs vfs.FileSystem, ns string) vfs.NameSpace {

0 commit comments

Comments
 (0)