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}