1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
{% extends "layout.html" %}
{% block title %}{{ release.tag_name }} · {{ owner.username }}/{{ repo.name }} — kitgit{% endblock %}
{% block content %}
<section class="kg-section">
<div class="kg-release-head">
<div>
<h1 class="kg-title">
{% if release.is_draft %}<span class="kg-badge">draft</span>{% endif %}
{% if release.is_prerelease %}<span class="kg-badge kg-badge--pre">pre-release</span>{% endif %}
{{ release.title }}
</h1>
<p class="kg-meta">
<img class="kg-avatar kg-avatar--sm" src="{{ author_avatar }}" alt="" />
<code>{{ release.tag_name }}</code>
· by <a href="/{{ author.username }}">{{ author.username }}</a>
· {{ release.created_at }}
{% if !tag_target.is_empty() %}
· <a href="/{{ owner.username }}/{{ repo.name }}/commit/{{ tag_target }}"><code>{{ tag_short }}</code></a>
{% endif %}
· <a href="/{{ owner.username }}/{{ repo.name }}/tree/{{ release.tag_name }}">browse files</a>
</p>
</div>
{% if access.can_write() %}
<div class="kg-actions">
<a class="kg-btn kg-btn--ghost" href="/{{ owner.username }}/{{ repo.name }}/releases/{{ release.tag_name }}/edit">
<span class="kg-icon" style="--icon:url('/static/icons/pencil.svg')"></span>
edit
</a>
<form method="post" action="/{{ owner.username }}/{{ repo.name }}/releases/{{ release.tag_name }}/delete" onsubmit="return confirm('Delete release {{ release.tag_name }}? Assets will be removed. The git tag is kept.')">
<button class="kg-btn kg-btn--danger-ghost" type="submit">
<span class="kg-icon" style="--icon:url('/static/icons/trash.svg')"></span>
delete
</button>
</form>
</div>
{% endif %}
</div>
{% let tab = "releases" %}
{% let archive_ref = release.tag_name.clone() %}
{% include "partials/repo_tabs.html" %}
<div class="kg-release-layout">
<div class="kg-release-main">
<span class="kg-kicker">release notes</span>
{% if release.body.is_empty() %}
<p class="kg-muted">No release notes.</p>
{% else %}
<article class="kg-readme kg-release-notes">{{ body_html|safe }}</article>
{% endif %}
</div>
<aside class="kg-release-aside">
<span class="kg-kicker">assets</span>
{% if assets.is_empty() %}
<p class="kg-muted">No assets yet.</p>
{% else %}
<ul class="kg-asset-list">
{% for a in assets %}
<li>
<a href="/{{ owner.username }}/{{ repo.name }}/assets/{{ a.id }}">
<span class="kg-icon" style="--icon:url('/static/icons/download.svg')"></span>
{{ a.filename }}
</a>
<span class="kg-meta">{{ a.size_label }}</span>
{% if access.can_write() %}
<form method="post" action="/{{ owner.username }}/{{ repo.name }}/releases/{{ release.tag_name }}/assets/{{ a.id }}/delete" onsubmit="return confirm('Delete {{ a.filename }}?')" style="display:inline">
<button class="kg-btn kg-btn--danger-ghost" type="submit" title="Delete asset">
<span class="kg-icon" style="--icon:url('/static/icons/trash.svg')"></span>
</button>
</form>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
<div class="kg-asset-source">
<a class="kg-btn kg-btn--ghost" href="/{{ owner.username }}/{{ repo.name }}/archive.zip?ref={{ release.tag_name }}">
<span class="kg-icon" style="--icon:url('/static/icons/download.svg')"></span>
Source code (zip)
</a>
</div>
{% if access.can_write() %}
<form class="kg-form kg-asset-upload" method="post" action="/{{ owner.username }}/{{ repo.name }}/releases/{{ release.tag_name }}/upload" enctype="multipart/form-data">
<label>
upload asset
<input type="file" name="asset" required />
</label>
<div class="kg-actions">
<button class="kg-btn" type="submit">
<span class="kg-icon" style="--icon:url('/static/icons/upload.svg')"></span>
upload
</button>
</div>
</form>
{% endif %}
</aside>
</div>
</section>
{% endblock %}