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