this repo has no description
1{{ define "title" }}
2 {{ .Tab }} settings ·
3 {{ .RepoInfo.FullName }}
4{{ end }}
5
6{{ define "repoContent" }}
7 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2">
8 <div class="col-span-1">
9 {{ template "repo/settings/fragments/sidebar" . }}
10 </div>
11 <div class="col-span-1 md:col-span-3 flex flex-col gap-6 p-2">
12 {{ template "spindleSettings" . }}
13 {{ if $.CurrentSpindle }}
14 {{ template "secretSettings" . }}
15 {{ end }}
16 <div id="operation-error" class="text-red-500 dark:text-red-400"></div>
17 </div>
18 </section>
19{{ end }}
20
21{{ define "spindleSettings" }}
22 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
23 <div class="col-span-1 md:col-span-2">
24 <h2 class="text-sm pb-2 uppercase font-bold">Spindle</h2>
25 <p class="text-gray-500 dark:text-gray-400">
26 Choose a spindle to execute your workflows on. Only repository owners
27 can configure spindles. Spindles can be selfhosted,
28 <a
29 class="text-gray-500 dark:text-gray-400 underline"
30 href="https://tangled.sh/@tangled.sh/core/blob/master/docs/spindle/hosting.md">
31 click to learn more.
32 </a>
33 </p>
34 </div>
35 {{ if not $.RepoInfo.Roles.IsOwner }}
36 <div
37 class="col-span-1 md:col-span-1 md:justify-self-end group flex gap-2 items-stretch">
38 {{ or $.CurrentSpindle "No spindle configured" }}
39 </div>
40 {{ else }}
41 <form
42 hx-post="/{{ $.RepoInfo.FullName }}/settings/spindle"
43 class="col-span-1 md:col-span-1 md:justify-self-end group flex gap-2 items-stretch">
44 <select
45 id="spindle"
46 name="spindle"
47 required
48 class="p-1 max-w-64 border border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700">
49 {{/* For some reason, we can't use an empty string in a <select> in all scenarios unless it is preceded by a disabled select?? No idea, could just be a Firefox thing? */}}
50 <option
51 value="[[none]]"
52 class="py-1"
53 {{ if not $.CurrentSpindle }}selected{{ end }}>
54 {{ if not $.CurrentSpindle }}
55 Choose a spindle
56 {{ else }}
57 Disable pipelines
58 {{ end }}
59 </option>
60 {{ range $.Spindles }}
61 <option
62 value="{{ . }}"
63 class="py-1"
64 {{ if eq . $.CurrentSpindle }}selected{{ end }}>
65 {{ . }}
66 </option>
67 {{ end }}
68 </select>
69 <button
70 class="btn flex gap-2 items-center"
71 type="submit"
72 {{ if not $.RepoInfo.Roles.IsOwner }}disabled{{ end }}>
73 {{ i "check" "size-4" }}
74 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
75 </button>
76 </form>
77 {{ end }}
78 </div>
79{{ end }}
80
81{{ define "secretSettings" }}
82 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center">
83 <div class="col-span-1 md:col-span-2">
84 <h2 class="text-sm pb-2 uppercase font-bold">SECRETS</h2>
85 <p class="text-gray-500 dark:text-gray-400">
86 Secrets are accessible in workflow runs via environment variables.
87 Anyone with collaborator access to this repository can add and use
88 secrets in workflow runs.
89 </p>
90 </div>
91 <div class="col-span-1 md:col-span-1 md:justify-self-end">
92 {{ template "addSecretButton" . }}
93 </div>
94 </div>
95 <div
96 class="flex flex-col rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 w-full">
97 {{ range .Secrets }}
98 {{ template "repo/settings/fragments/secretListing" (list $ .) }}
99 {{ else }}
100 <div class="flex items-center justify-center p-2 text-gray-500">
101 no secrets added yet
102 </div>
103 {{ end }}
104 </div>
105{{ end }}
106
107{{ define "addSecretButton" }}
108 <button
109 class="btn flex items-center gap-2"
110 popovertarget="add-secret-modal"
111 popovertargetaction="toggle">
112 {{ i "plus" "size-4" }}
113 add secret
114 </button>
115 <div
116 id="add-secret-modal"
117 popover
118 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-gray-200 dark:border-gray-700 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50">
119 {{ template "addSecretModal" . }}
120 </div>
121{{ end }}
122
123{{ define "addSecretModal" }}
124 <form
125 hx-put="/{{ $.RepoInfo.FullName }}/settings/secrets"
126 hx-indicator="#spinner"
127 hx-swap="none"
128 class="flex flex-col gap-2">
129 <p class="uppercase p-0">ADD SECRET</p>
130 <p class="text-sm text-gray-500 dark:text-gray-400">
131 Secrets are available as environment variables in the workflow.
132 </p>
133 <input
134 type="text"
135 id="secret-key"
136 name="key"
137 required
138 placeholder="SECRET_NAME" />
139 <textarea
140 type="text"
141 id="secret-value"
142 name="value"
143 required
144 placeholder="secret value"></textarea>
145 <div class="flex gap-2 pt-2">
146 <button
147 type="button"
148 popovertarget="add-secret-modal"
149 popovertargetaction="hide"
150 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300">
151 {{ i "x" "size-4" }} cancel
152 </button>
153 <button type="submit" class="btn w-1/2 flex items-center">
154 <span class="inline-flex gap-2 items-center">
155 {{ i "plus" "size-4" }} add
156 </span>
157 <span id="spinner" class="group">
158 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
159 </span>
160 </button>
161 </div>
162 <div id="add-secret-error" class="text-red-500 dark:text-red-400"></div>
163 </form>
164{{ end }}