summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--routes/routes.go35
-rw-r--r--routes/template.go2
-rw-r--r--static/style.css60
-rw-r--r--templates/index.html2
-rw-r--r--templates/log.html18
-rw-r--r--templates/nav.html3
-rw-r--r--templates/repo.html56
-rw-r--r--templates/tree.html53
8 files changed, 168 insertions, 61 deletions
diff --git a/routes/routes.go b/routes/routes.go
index 5a8d686..f52e86a 100644
--- a/routes/routes.go
+++ b/routes/routes.go
@@ -45,13 +45,7 @@ func (d *deps) Index(w http.ResponseWriter, r *http.Request) {
return
}
- var desc string
- db, err := os.ReadFile(filepath.Join(path, "description"))
- if err == nil {
- desc = string(db)
- } else {
- desc = ""
- }
+ desc := getDescription(path)
infos = append(infos, info{
Name: dir.Name(),
@@ -83,7 +77,7 @@ func (d *deps) RepoIndex(w http.ResponseWriter, r *http.Request) {
return
}
- files, err := gr.FileTree("")
+ commits, err := gr.Commits()
if err != nil {
d.Write500(w)
log.Println(err)
@@ -109,12 +103,25 @@ func (d *deps) RepoIndex(w http.ResponseWriter, r *http.Request) {
return
}
+ tpath := filepath.Join(d.c.Dirs.Templates, "*")
+ t := template.Must(template.ParseGlob(tpath))
+
+ if len(commits) >= 5 {
+ commits = commits[:5]
+ }
+
data := make(map[string]any)
data["name"] = name
data["ref"] = mainBranch
data["readme"] = readmeContent
+ data["commits"] = commits
+ data["desc"] = getDescription(path)
+
+ if err := t.ExecuteTemplate(w, "repo", data); err != nil {
+ log.Println(err)
+ return
+ }
- d.listFiles(files, data, w)
return
}
@@ -283,3 +290,13 @@ func (d *deps) ServeStatic(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, f)
}
+
+func getDescription(path string) (desc string) {
+ db, err := os.ReadFile(filepath.Join(path, "description"))
+ if err == nil {
+ desc = string(db)
+ } else {
+ desc = ""
+ }
+ return
+}
diff --git a/routes/template.go b/routes/template.go
index dc1ec35..6af5cfe 100644
--- a/routes/template.go
+++ b/routes/template.go
@@ -37,7 +37,7 @@ func (d *deps) listFiles(files []git.NiceTree, data map[string]any, w http.Respo
data["files"] = files
data["meta"] = d.c.Meta
- if err := t.ExecuteTemplate(w, "repo", data); err != nil {
+ if err := t.ExecuteTemplate(w, "tree", data); err != nil {
log.Println(err)
return
}
diff --git a/static/style.css b/static/style.css
index 5581e3a..df2c81c 100644
--- a/static/style.css
+++ b/static/style.css
@@ -6,12 +6,16 @@
--gray: #6a6a6a;
--dark: #444;
--darker: #222;
+
+ --sans-font: "InterVar", -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", sans-serif;
+ --display-font: "InterDisplay", -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", sans-serif;
+ --mono-font: monospace;
}
html {
background: var(--light);
-webkit-text-size-adjust: none;
- font-family: "InterVar", -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", sans-serif;
+ font-family: var(--sans-font);
}
::selection {
@@ -38,7 +42,7 @@ main, footer {
}
main h1, h2, h3, .small-heading {
- font-family: "InterDisplay", -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", sans-serif;
+ font-family: var(--display-font);
font-weight: 500;
}
@@ -94,19 +98,65 @@ a:hover {
.index {
display: grid;
- grid-template-columns: 6em 1fr 7em;
+ grid-template-columns: 6em 1fr minmax(0, 7em);
grid-row-gap: 0.5em;
+ min-width: 0;
}
.index-headings {
display: grid;
- grid-template-columns: 6em 1fr 7em;
+ grid-template-columns: 6em 1fr minmax(0, 7em);
padding-bottom: 1.2em;
padding-top: 1.2em;
+ min-width: 0;
+}
+
+.desc {
+ color: var(--gray);
+ font-style: italic;
+}
+
+.tree {
+ display: grid;
+ grid-template-columns: 8em minmax(0, 1fr);
+ grid-row-gap: 0.5em;
+ grid-column-gap: 1em;
+ min-width: 0;
+}
+
+.log {
+ display: grid;
+ grid-template-columns: 20rem minmax(0, 1fr);
+ grid-row-gap: 0.8em;
+ grid-column-gap: 8rem;
+ margin-bottom: 2em;
+ padding-bottom: 1em;
+ border-bottom: 1.5px solid var(--medium-gray);
}
-@media (max-width: 385px) {
+.log pre {
+ white-space: pre-wrap;
+}
+
+.mode {
+ font-family: var(--mono-font);
+}
+
+.readme pre {
+ white-space: pre-wrap;
+}
+
+@media (max-width: 600px) {
.index {
grid-row-gap: 0.8em;
}
+
+ .log {
+ grid-template-columns: 1fr;
+ grid-row-gap: 0em;
+ }
+
+ .commit-info:not(:last-child) {
+ padding-bottom: 1.5rem;
+ }
}
diff --git a/templates/index.html b/templates/index.html
index 02c62ef..25cedfb 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -16,7 +16,7 @@
<div class="index">
{{ range .info }}
<div><a href="/{{ .Name }}">{{ .Name }}</a></div>
- <div>{{ .Desc }}</div>
+ <div class="desc">{{ .Desc }}</div>
<div>{{ .Idle }}</div>
{{ end }}
</div>
diff --git a/templates/log.html b/templates/log.html
index de7b200..c4ee9c3 100644
--- a/templates/log.html
+++ b/templates/log.html
@@ -9,13 +9,17 @@
<body>
{{ template "nav" . }}
<main>
- {{ $repo := .name }}
- {{ range .commits }}
- <p><a href="/{{ $repo }}/commit/{{ .Hash.String }}">{{ slice .Hash.String 0 8 }}<a>
- &mdash; {{ .Author.Name }}
- <span title="{{ .Author.When }}">{{ .Author.When.Format "Mon, 02 Jan 2006 15:04:05 -0700" }}</span></p>
- <p><pre>{{ .Message }}</pre></p>
- {{ end }}
+ {{ $repo := .repo }}
+ <div class="log">
+ {{ range .commits }}
+ <div>
+ <div><a href="/{{ $repo }}/commit/{{ .Hash.String }}">{{ slice .Hash.String 0 8 }}</a></div>
+ <div>{{ .Author.When.Format "Mon, 02 Jan 2006 15:04:05 -0700" }}</div>
+ <pre>{{ .Message }}</pre>
+ </div>
+ <div class="commit-info">{{ .Author.Name }} <span style="color: var(--gray);">{{ .Author.Email }}</span></div>
+ {{ end }}
+ </div>
</main>
</body>
</html>
diff --git a/templates/nav.html b/templates/nav.html
index d0d384d..51c9a34 100644
--- a/templates/nav.html
+++ b/templates/nav.html
@@ -1,9 +1,8 @@
{{ define "nav" }}
<nav>
<ul>
- <li><a href="/">all repos</a>
{{ if .name }}
- <li><a href="/{{ .name }}">{{ .name }}</a>
+ <li><a href="/{{ .name }}">summary</a>
<li><a href="/{{ .name }}/refs">refs</a>
{{ if .ref }}
<li><a href="/{{ .name }}/tree/{{ .ref }}/">tree</a>
diff --git a/templates/repo.html b/templates/repo.html
index ddc3f01..d4e3e46 100644
--- a/templates/repo.html
+++ b/templates/repo.html
@@ -1,50 +1,34 @@
{{ define "repo" }}
<html>
+ <title>{{ .name }}
+ {{ if .parent }}
+ &mdash; {{ .parent }}
+ {{ end }}
+ </title>
{{ template "head" . }}
<header>
- <h1>{{ .meta.Title }}</h1>
- <h2>{{ .meta.Description }}</h2>
+ <h2>
+ <a href="/">all repos</a>
+ &mdash; {{ .name }}
+ </h2>
+ <h3 class="desc">{{ .desc }}</h3>
</header>
<body>
{{ template "nav" . }}
<main>
{{ $repo := .name }}
- {{ $ref := .ref }}
- {{ $parent := .parent }}
-
- <table>
- <tr>
- <td></td>
- <td><a href="../">..</a>
- </tr>
- {{ range .files }}
- {{ if .IsFile }}
- <tr>
- <td><code>{{ .Mode }}</code></td>
- <td>
- {{ if $parent }}
- <a href="/{{ $repo }}/blob/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}</a>
- {{ else }}
- <a href="/{{ $repo }}/blob/{{ $ref }}/{{ .Name }}">{{ .Name }}</a>
- {{ end }}
- </td>
- </tr>
- {{ else }}
- <tr>
- <td><code>{{ .Mode }}</code></td>
- <td>
- {{ if $parent }}
- <a href="/{{ $repo }}/tree/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}/</a>
- {{ else }}
- <a href="/{{ $repo }}/tree/{{ $ref }}/{{ .Name }}">{{ .Name }}/</a>
- {{ end }}
- </td>
- </tr>
+ <div class="log">
+ {{ range .commits }}
+ <div>
+ <div><a href="/{{ $repo }}/commit/{{ .Hash.String }}">{{ slice .Hash.String 0 8 }}</a></div>
+ <div>{{ .Author.When.Format "Mon, 02 Jan 2006 15:04:05 -0700" }}</div>
+ <pre>{{ .Message }}</pre>
+ </div>
+ <div class="commit-info">{{ .Author.Name }} <span style="color: var(--gray);">{{ .Author.Email }}</span></div>
{{ end }}
- {{ end }}
- </table>
- <article>
+ </div>
+ <article class="readme">
<pre>
{{- if .readme }}{{ .readme }}{{- end -}}
</pre>
diff --git a/templates/tree.html b/templates/tree.html
new file mode 100644
index 0000000..b63a23e
--- /dev/null
+++ b/templates/tree.html
@@ -0,0 +1,53 @@
+{{ define "tree" }}
+<html>
+ <title>{{ .name }}
+ {{ if .parent }}
+ &mdash; {{ .parent }}
+ {{ end }}
+ </title>
+{{ template "head" . }}
+
+ <header>
+ <h1>{{ .meta.Title }}</h1>
+ <h2>{{ .meta.Description }}</h2>
+ </header>
+ <body>
+ {{ template "nav" . }}
+ <main>
+ {{ $repo := .name }}
+ {{ $ref := .ref }}
+ {{ $parent := .parent }}
+
+ <div class="tree">
+ {{ if $parent }}
+ <div></div>
+ <div><a href="../">..</a></div>
+ {{ end }}
+ {{ range .files }}
+ <div class="mode">{{ .Mode }}</div>
+ <div>
+ {{ if .IsFile }}
+ {{ if $parent }}
+ <a href="/{{ $repo }}/blob/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="/{{ $repo }}/blob/{{ $ref }}/{{ .Name }}">{{ .Name }}</a>
+ {{ end }}
+ {{ else }}
+ {{ if $parent }}
+ <a href="/{{ $repo }}/tree/{{ $ref }}/{{ $parent }}/{{ .Name }}">{{ .Name }}/</a>
+ {{ else }}
+ <a href="/{{ $repo }}/tree/{{ $ref }}/{{ .Name }}">{{ .Name }}/</a>
+ {{ end }}
+ {{ end }}
+ </div>
+ {{ end }}
+ </div>
+ <article>
+ <pre>
+ {{- if .readme }}{{ .readme }}{{- end -}}
+ </pre>
+ </article>
+ </main>
+ </body>
+</html>
+{{ end }}