151 lines
6.1 kB
1
{{ define "title" }} commit {{ .Diff.Commit.This }} · {{ .RepoInfo.FullName }} {{ end }}
2
3
{{ define "repoContent" }}
4
5
{{ $repo := .RepoInfo.FullName }}
6
{{ $commit := .Diff.Commit }}
7
{{ $stat := .Diff.Stat }}
8
{{ $diff := .Diff.Diff }}
9
10
<section class="commit">
11
<div id="commit-message">
12
{{ $messageParts := splitN $commit.Message "\n\n" 2 }}
13
<div>
14
<p class="pb-2">{{ index $messageParts 0 }}</p>
15
{{ if gt (len $messageParts) 1 }}
16
<p class="mt-1 cursor-text pb-2 text-sm">{{ nl2br (unwrapText (index $messageParts 1)) }}</p>
17
{{ end }}
18
</div>
19
</div>
20
21
<div class="flex items-center">
22
<p class="text-sm text-gray-500">
23
<a href="mailto:{{ $commit.Author.Email }}" class="no-underline hover:underline text-gray-500">{{ $commit.Author.Name }}</a>
24
<span class="px-1 select-none before:content-['\00B7']"></span>
25
{{ timeFmt $commit.Author.When }}
26
<span class="px-1 select-none before:content-['\00B7']"></span>
27
<span class="font-mono">{{ $stat.FilesChanged }}</span> files <span class="font-mono">(+{{ $stat.Insertions }}, -{{ $stat.Deletions }})</span>
28
<span class="px-1 select-none before:content-['\00B7']"></span>
29
</p>
30
31
<p class="flex items-center text-sm text-gray-500">
32
<a href="/{{ $repo }}/commit/{{ $commit.This }}" class="no-underline hover:underline text-gray-500">{{ slice $commit.This 0 8 }}</a>
33
{{ if $commit.Parent }}
34
<i class="w-3 h-3 mx-1" data-lucide="arrow-left"></i>
35
<a href="/{{ $repo }}/commit/{{ $commit.Parent }}" class="no-underline hover:underline text-gray-500">{{ slice $commit.Parent 0 8 }}</a>
36
{{ end }}
37
</p>
38
</div>
39
40
<div class="diff-stat">
41
<br>
42
<strong class="text-sm uppercase mb-4">Affected files</strong>
43
{{ range $diff }}
44
<ul>
45
{{ if .IsDelete }}
46
<li><a href="#file-{{ .Name.Old }}">{{ .Name.Old }}</a></li>
47
{{ else }}
48
<li><a href="#file-{{ .Name.New }}">{{ .Name.New }}</a></li>
49
{{ end }}
50
</ul>
51
{{ end }}
52
</div>
53
</section>
54
55
{{end}}
56
57
{{ define "repoAfter" }}
58
59
{{ $repo := .RepoInfo.FullName }}
60
{{ $commit := .Diff.Commit }}
61
{{ $stat := .Diff.Stat }}
62
{{ $diff := .Diff.Diff }}
63
64
{{ $this := $commit.This }}
65
{{ $parent := $commit.Parent }}
66
67
{{ $last := sub (len $diff) 1 }}
68
{{ range $idx, $hunk := $diff }}
69
{{ with $hunk }}
70
<section class="mt-6 border border-gray-200 w-full mx-auto rounded bg-white">
71
<div id="file-{{ .Name.New }}">
72
<div id="diff-file">
73
<details open>
74
<summary class="list-none cursor-pointer sticky top-0">
75
<div id="diff-file-header" class="rounded cursor-pointer bg-white flex justify-between">
76
<div id="left-side-items" class="p-2">
77
{{ if .IsNew }}
78
<span class="diff-type p-1 mr-1 font-mono text-sm bg-green-100 rounded text-green-700 select-none">A</span>
79
{{ end }}
80
{{ if .IsDelete }}
81
<span class="diff-type p-1 mr-1 font-mono text-sm bg-red-100 rounded text-red-700 select-none">D</span>
82
{{ end }}
83
{{ if not (or .IsNew .IsDelete) }}
84
<span class="diff-type p-1 mr-1 font-mono bg-gray-100 text-sm rounded text-gray-700 select-none">M</span>
85
{{ end }}
86
87
{{ if .IsDelete }}
88
<a href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.Old }}" class="no-underline hover:underline">{{ .Name.Old }}</a>
89
{{ else }}
90
<a href="/{{ $repo }}/blob/{{ $this }}/{{ .Name.New }}" class="no-underline hover:underline">{{ .Name.New }}</a>
91
{{ end }}
92
</div>
93
94
{{ $iconstyle := "p-1 mx-1 hover:bg-gray-100 rounded" }}
95
<div id="right-side-items" class="p-2 flex items-center">
96
<a title="top of file" href="#file-{{ .Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-up-from-line"></i></a>
97
{{ if gt $idx 0 }}
98
{{ $prev := index $diff (sub $idx 1) }}
99
<a title="previous file" href="#file-{{ $prev.Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-up"></i></a>
100
{{ end }}
101
102
{{ if lt $idx $last }}
103
{{ $next := index $diff (add $idx 1) }}
104
<a title="next file" href="#file-{{ $next.Name.New }}" class="{{ $iconstyle }}"><i class="w-4 h-4" data-lucide="arrow-down"></i></a>
105
{{ end }}
106
</div>
107
108
</div>
109
</summary>
110
111
{{ if .IsDelete }}
112
<p class="text-center text-gray-400 p-4">
113
This file has been deleted in this commit.
114
</p>
115
{{ else }}
116
{{ if .IsBinary }}
117
<p class="text-center text-gray-400 p-4">
118
This is a binary file and will not be displayed.
119
</p>
120
{{ else }}
121
<pre class="overflow-auto">
122
{{- range .TextFragments -}}
123
<div class="bg-gray-100 text-gray-500 select-none">{{ .Header }}</div>
124
{{- range .Lines -}}
125
{{- if eq .Op.String "+" -}}
126
<div class="bg-green-100 text-green-700 p-1"><span class="select-none mx-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
127
{{- end -}}
128
129
{{- if eq .Op.String "-" -}}
130
<div class="bg-red-100 text-red-700 p-1"><span class="select-none mx-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
131
{{- end -}}
132
133
{{- if eq .Op.String " " -}}
134
<div class="bg-white text-gray-500 px"><span class="select-none mx-2">{{ .Op.String }}</span><span>{{ .Line }}</span></div>
135
{{- end -}}
136
137
{{- end -}}
138
{{- end -}}
139
</pre>
140
{{- end -}}
141
{{ end }}
142
143
</details>
144
145
</div>
146
</div>
147
</section>
148
{{ end }}
149
{{ end }}
150
151
{{end}}
152