golang製の静的サイトジェネレータである Hugo を使った。
examples/blog がそのまま動いたのでうまくいくかと思いきや、そこそこ面倒くさかった。
configでパーマリンクを指定したとき、日本語が含まれていると生成されるファイルだけパーセントエンコードされリンクが切れる。
それを直そうとcloneしてきたら path.Join 使ってたところがすべて filepath.Join になっててWindowsだとファイル区切りが\になってた。
そもそも url と生成時のファイル生成のパスの扱いが同じ関数で行われている。
結局、
という修正をやって動かしてる。
後者に関してはissueは挙がってたしそのうち直るだろうたぶん。
あとコードのハイライトは pygments 使おうと思ったけどなぜかpタグがcode内にでてくる
function func() { var v; v = 0; v = ‘string’; v = function () {}; }
ので Hilight.js の monokai sublime テーマにした。function func() {
var v;
v = 0;
v = 'string';
v = function () {};
}
静的ファイルの追加が何故か1フォルダしか行われていなかった。 chtimeで権限エラーになっていた。 hugo.go で NewSyncer 後に
syncer.NoTimes = true
を追加することで最終更新日の同期をやめさせて対応した。
diff --git a/commands/hugo.go b/commands/hugo.go
index 6fd7fa2..21dad47 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -227,6 +229,7 @@ func copyStatic() error {
publishDir := helpers.AbsPathify(viper.GetString("PublishDir")) + "/"
syncer := fsync.NewSyncer()
+ syncer.NoTimes = true
syncer.NoTimes = viper.GetBool("notimes")
syncer.SrcFs = hugofs.SourceFs
syncer.DestFs = hugofs.DestinationFS
diff --git a/helpers/url.go b/helpers/url.go
index dd8d750..6b234b4 100644
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -16,7 +16,7 @@ package helpers
import (
"fmt"
"net/url"
- "path/filepath"
+ "path"
"strings"
"github.com/PuerkitoBio/purell"
@@ -68,7 +68,7 @@ func MakePermalink(host, plink string) *url.URL {
panic(fmt.Errorf("Can't make permalink from absolute link %q", plink))
}
- base.Path = filepath.Join(base.Path, p.Path)
+ base.Path = path.Join(base.Path, p.Path)
// path.Join will strip off the last /, so put it back if it was there.
if strings.HasSuffix(p.Path, "/") && !strings.HasSuffix(base.Path, "/") {
@@ -84,7 +84,7 @@ func UrlPrep(ugly bool, in string) string {
return x
} else {
x := PrettifyUrl(SanitizeUrl(in))
- if filepath.Ext(x) == ".xml" {
+ if path.Ext(x) == ".xml" {
return x
}
url, err := purell.NormalizeURLString(x, purell.FlagAddTrailingSlash)
@@ -100,8 +100,8 @@ func UrlPrep(ugly bool, in string) string {
func PrettifyUrl(in string) string {
x := PrettifyPath(in)
- if filepath.Base(x) == "index.html" {
- return filepath.Dir(x)
+ if path.Base(x) == "index.html" {
+ return path.Dir(x)
}
if in == "" {
@@ -115,17 +115,17 @@ func PrettifyUrl(in string) string {
// /section/name/ -> /section/name.html
// /section/name.html -> /section/name.html
func Uglify(in string) string {
- if filepath.Ext(in) == "" {
+ if path.Ext(in) == "" {
if len(in) < 2 {
return "/"
}
// /section/name/ -> /section/name.html
- return filepath.Clean(in) + ".html"
+ return path.Clean(in) + ".html"
} else {
name, ext := FileAndExt(in)
if name == "index" {
// /section/name/index.html -> /section/name.html
- d := filepath.Dir(in)
+ d := path.Dir(in)
if len(d) > 1 {
return d + ext
} else {
@@ -133,7 +133,7 @@ func Uglify(in string) string {
}
} else {
// /section/name.html -> /section/name.html
- return filepath.Clean(in)
+ return path.Clean(in)
}
}
}
diff --git a/hugolib/permalinks.go b/hugolib/permalinks.go
index 642de83..955401c 100644
--- a/hugolib/permalinks.go
+++ b/hugolib/permalinks.go
@@ -146,7 +146,8 @@ func pageToPermalinkTitle(p *Page, _ string) (string, error) {
func pageToPermalinkFilename(p *Page, _ string) (string, error) {
//var extension = p.Source.Ext
//var name = p.Source.Path()[0 : len(p.Source.Path())-len(extension)]
- return helpers.Urlize(p.Source.BaseFileName()), nil
+ return p.Source.BaseFileName(), nil
+ // return helpers.Urlize(p.Source.BaseFileName()), nil
}
// if the page has a slug, return the slug, else return the title