urls.go
1package pgit
2
3import (
4 "fmt"
5 "html/template"
6 "path/filepath"
7 "strings"
8)
9
10func (c *Config) GetSummaryURL() template.URL {
11 url := c.RootRelative + "index.html"
12 return template.URL(url)
13}
14
15func (c *Config) GetRefsURL() template.URL {
16 url := c.RootRelative + "refs.html"
17 return template.URL(url)
18}
19
20func GetRevIDForURL(info RevInfo) string {
21 return info.Name()
22}
23
24func GetTreeBaseDir(info RevInfo) string {
25 subdir := GetRevIDForURL(info)
26 return filepath.Join("/", "tree", subdir)
27}
28
29func GetLogBaseDir(info RevInfo) string {
30 subdir := GetRevIDForURL(info)
31 return filepath.Join("/", "logs", subdir)
32}
33
34func GetFileBaseDir(info RevInfo) string {
35 return filepath.Join(GetTreeBaseDir(info), "item")
36}
37
38func GetFileDir(info RevInfo, fname string) string {
39 return filepath.Join(GetFileBaseDir(info), fname)
40}
41
42func (c *Config) GetFileURL(info RevInfo, fname string) template.URL {
43 return c.CompileURL(GetFileBaseDir(info), fname)
44}
45
46func (c *Config) CompileURL(dir, fname string) template.URL {
47 purl := c.RootRelative + strings.TrimPrefix(dir, "/")
48 url := filepath.Join(purl, fname)
49 return template.URL(url)
50}
51
52func (c *Config) GetTreeURL(info RevInfo) template.URL {
53 dir := GetTreeBaseDir(info)
54 return c.CompileURL(dir, "index.html")
55}
56
57func (c *Config) GetLogsURL(info RevInfo) template.URL {
58 dir := GetLogBaseDir(info)
59 return c.CompileURL(dir, "index.html")
60}
61
62func (c *Config) GetCommitURL(commitID string) template.URL {
63 url := fmt.Sprintf("%scommits/%s.html", c.RootRelative, commitID)
64 return template.URL(url)
65}
66
67func (c *Config) GetURLs() *SiteURLs {
68 return &SiteURLs{
69 HomeURL: c.HomeURL,
70 CloneURL: c.CloneURL,
71 RefsURL: c.GetRefsURL(),
72 SummaryURL: c.GetSummaryURL(),
73 IssuesURL: c.GetIssuesURL(),
74 }
75}
76
77func (c *Config) GetIssuesURL() template.URL {
78 url := c.RootRelative + "issues/open/index.html"
79 return template.URL(url)
80}
81
82func (c *Config) GetIssueURL(issueID string) template.URL {
83 url := fmt.Sprintf("%sissues/%s.html", c.RootRelative, issueID)
84 return template.URL(url)
85}