"github.com/hjson/hjson-go"
"go.cypherpunks.ru/netstring/v2"
+ "go.stargrave.org/sgblog"
"golang.org/x/crypto/blake2b"
"golang.org/x/tools/blog/atom"
"gopkg.in/src-d/go-git.v4"
const (
PageEntries = 50
- WhenFmt = "2006-01-02 15:04:05Z07:00"
AtomFeed = "feed.atom"
)
var (
- Version = "0.2.0"
sha1DigestRe = regexp.MustCompilePOSIX("([0-9a-f]{40,40})")
defaultLinks = []string{}
repo *git.Repository
Branch string
Title string
- BaseURL string
URLPrefix string
- AtomId string
- AtomAuthor string
+ AtomBaseURL string
+ AtomId string
+ AtomAuthor string
CSS string
Webmaster string
</head>
<body>
`,
- Version, title,
+ sgblog.Version, title,
strings.Join(append(defaultLinks, additional...), "\n "),
)
}
panic(err)
}
etagHash.Write([]byte("SGBLOG"))
+ etagHash.Write([]byte(sgblog.Version))
etagHash.Write([]byte(cfg.GitPath))
etagHash.Write([]byte(cfg.Branch))
etagHash.Write([]byte(cfg.Title))
- etagHash.Write([]byte(cfg.BaseURL))
etagHash.Write([]byte(cfg.URLPrefix))
+ etagHash.Write([]byte(cfg.AtomBaseURL))
etagHash.Write([]byte(cfg.AtomId))
etagHash.Write([]byte(cfg.AtomAuthor))
}
defaultLinks = append(defaultLinks, `<link rel="top" href="`+cfg.URLPrefix+`/" title="top">`)
- atomURL := cfg.BaseURL + cfg.URLPrefix + "/" + AtomFeed
+ atomURL := cfg.AtomBaseURL + cfg.URLPrefix + "/" + AtomFeed
defaultLinks = append(defaultLinks, `<link rel="alternate" title="Atom feed" href="`+atomURL+`" type="application/atom+xml">`)
repo, err = git.PlainOpen(cfg.GitPath)
var table bytes.Buffer
table.WriteString(
- "<table border=1>\n<tr>" +
+ "<table border=1>\n" +
+ "<caption>Comments</caption>\n<tr>" +
"<th>N</th>" +
"<th>When</th>" +
"<th>Title</th>" +
- "<th size=\"5%\">L</th>" +
- "<th size=\"5%\">C</th>" +
+ `<th size="5%"><a title="Lines">L</a></th>` +
+ `<th size="5%"><a title="Comments">C</a></th>` +
"<th>Linked to</th></tr>\n")
for _, entry := range entries {
commentN++
"<td>%s</td>"+
"<td>%d</td><td>%s</td>"+
"<td>%s</td></tr>\n",
- commentN, entry.commit.Author.When.Format(WhenFmt),
+ commentN, entry.commit.Author.When.Format(sgblog.WhenFmt),
makeA(cfg.URLPrefix+"/"+entry.commit.Hash.String(), lines[0]),
len(lines)-2,
commentsValue,
href = cfg.URLPrefix + "/"
}
links = append(links, `<link rel="prev" href="`+href+`" title="newer">`)
- refs.WriteString(makeA(href, " [prev]"))
+ refs.WriteString("\n" + makeA(href, "[prev]"))
}
if !logEnded {
href = cfg.URLPrefix + "/?offset=" + strconv.Itoa(offset+PageEntries)
links = append(links, `<link rel="next" href="`+href+`" title="older">`)
- refs.WriteString(makeA(href, " [next]"))
+ refs.WriteString("\n" + makeA(href, "[next]"))
}
os.Stdout.Write([]byte(startHeader(etagHash, gzipWriter != nil)))
ID: "urn:uuid:" + feedId,
Link: []atom.Link{{
Rel: "alternate",
- Href: cfg.BaseURL + cfg.URLPrefix + "/" + commit.Hash.String(),
+ Href: cfg.AtomBaseURL + cfg.URLPrefix + "/" + commit.Hash.String(),
}},
Published: atom.Time(commit.Author.When),
Updated: atom.Time(commit.Author.When),
checkETag(etagHash)
lines := msgSplit(commit.Message)
title := lines[0]
- when := commit.Author.When.Format(WhenFmt)
+ when := commit.Author.When.Format(sgblog.WhenFmt)
os.Stdout.Write([]byte(startHeader(etagHash, gzipWriter != nil)))
links := []string{}
var parent string
}
out.Write([]byte(startHTML(fmt.Sprintf("%s (%s)", title, when), links)))
if cfg.AboutURL != "" {
- out.Write([]byte(fmt.Sprintf("[%s] ", makeA(cfg.AboutURL, "about"))))
+ out.Write([]byte(fmt.Sprintf("[%s]\n", makeA(cfg.AboutURL, "about"))))
}
+ out.Write([]byte(fmt.Sprintf("[%s]\n", makeA(cfg.URLPrefix+"/", "index"))))
if parent != "" {
out.Write([]byte(fmt.Sprintf(
- "[%s] ",
+ "[%s]\n",
makeA(cfg.URLPrefix+"/"+parent, "older"),
)))
}
out.Write([]byte(fmt.Sprintf(
- "[<tt>%s</tt>] [<tt>%s</tt>]<hr/>\n<h2>%s</h2>\n<pre>\n",
+ "[<tt><a title=\"When\">%s</a></tt>]\n"+
+ "[<tt><a title=\"Hash\">%s</a></tt>]\n"+
+ "<hr/>\n<h2>%s</h2>\n<pre>\n",
when, commit.Hash.String(), title,
)))
for _, line := range lines[2:] {