this repo has no description
1{{ define "title" }} 2 {{ .Pull.Title }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 3{{ end }} 4 5{{ define "extrameta" }} 6 {{ $title := printf "%s &middot; pull #%d &middot; %s" .Pull.Title .Pull.PullId .RepoInfo.FullName }} 7 {{ $url := printf "https://tangled.org/%s/pulls/%d" .RepoInfo.FullName .Pull.PullId }} 8 9 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 10{{ end }} 11 12{{ define "repoContentLayout" }} 13 <div class="grid grid-cols-1 md:grid-cols-10 gap-4 w-full"> 14 <div class="col-span-1 md:col-span-8"> 15 <section class="bg-white dark:bg-gray-800 p-6 rounded relative w-full mx-auto dark:text-white"> 16 {{ block "repoContent" . }}{{ end }} 17 </section> 18 {{ block "repoAfter" . }}{{ end }} 19 </div> 20 <div class="col-span-1 md:col-span-2 flex flex-col gap-6"> 21 {{ template "repo/fragments/labelPanel" 22 (dict "RepoInfo" $.RepoInfo 23 "Defs" $.LabelDefs 24 "Subject" $.Pull.PullAt 25 "State" $.Pull.Labels) }} 26 {{ template "repo/fragments/participants" $.Pull.Participants }} 27 </div> 28 </div> 29{{ end }} 30 31{{ define "repoContent" }} 32 {{ template "repo/pulls/fragments/pullHeader" . }} 33 34 {{ if .Pull.IsStacked }} 35 <div class="mt-8"> 36 {{ template "repo/pulls/fragments/pullStack" . }} 37 </div> 38 {{ end }} 39{{ end }} 40 41{{ define "repoAfter" }} 42 <section id="submissions" class="mt-4"> 43 <div class="flex flex-col gap-4"> 44 {{ block "submissions" . }} {{ end }} 45 </div> 46 </section> 47 48 <div id="pull-close"></div> 49 <div id="pull-reopen"></div> 50{{ end }} 51 52{{ define "submissions" }} 53 {{ $lastIdx := sub (len .Pull.Submissions) 1 }} 54 {{ $targetBranch := .Pull.TargetBranch }} 55 {{ $repoName := .RepoInfo.FullName }} 56 {{ range $idx, $item := .Pull.Submissions }} 57 {{ with $item }} 58 <details {{ if eq $idx $lastIdx }}open{{ end }}> 59 <summary id="round-#{{ .RoundNumber }}" class="list-none cursor-pointer"> 60 <div class="flex flex-wrap gap-2 items-stretch"> 61 <!-- round number --> 62 <div class="rounded bg-white dark:bg-gray-800 drop-shadow-sm px-3 py-2 dark:text-white"> 63 <span class="flex items-center">{{ i "hash" "w-4 h-4" }}{{ .RoundNumber }}</span> 64 </div> 65 <!-- round summary --> 66 <div class="flex-1 rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400"> 67 <span class="gap-1 flex items-center"> 68 {{ $owner := resolve $.Pull.OwnerDid }} 69 {{ $re := "re" }} 70 {{ if eq .RoundNumber 0 }} 71 {{ $re = "" }} 72 {{ end }} 73 <span class="hidden md:inline">{{$re}}submitted</span> 74 by {{ template "user/fragments/picHandleLink" $.Pull.OwnerDid }} 75 <span class="select-none before:content-['\00B7']"></span> 76 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a> 77 <span class="select-none before:content-['·']"></span> 78 {{ $s := "s" }} 79 {{ if eq (len .Comments) 1 }} 80 {{ $s = "" }} 81 {{ end }} 82 {{ len .Comments }} comment{{$s}} 83 </span> 84 </div> 85 86 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 87 hx-boost="true" 88 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}"> 89 {{ i "file-diff" "w-4 h-4" }} 90 <span class="hidden md:inline">diff</span> 91 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 92 </a> 93 {{ if ne $idx 0 }} 94 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group" 95 hx-boost="true" 96 href="/{{ $.RepoInfo.FullName }}/pulls/{{ $.Pull.PullId }}/round/{{.RoundNumber}}/interdiff"> 97 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }} 98 <span class="hidden md:inline">interdiff</span> 99 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 100 </a> 101 {{ end }} 102 <span id="interdiff-error-{{.RoundNumber}}"></span> 103 </div> 104 </summary> 105 106 {{ if .IsFormatPatch }} 107 {{ $patches := .AsFormatPatch }} 108 {{ $round := .RoundNumber }} 109 <details class="group py-2 md:ml-[3.5rem] text-gray-500 dark:text-gray-400 flex flex-col gap-2 relative text-sm"> 110 <summary class="py-1 list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 111 {{ $s := "s" }} 112 {{ if eq (len $patches) 1 }} 113 {{ $s = "" }} 114 {{ end }} 115 <div class="group-open:hidden flex items-center gap-2 ml-2"> 116 {{ i "chevrons-up-down" "w-4 h-4" }} expand {{ len $patches }} commit{{$s}} 117 </div> 118 <div class="hidden group-open:flex items-center gap-2 ml-2"> 119 {{ i "chevrons-down-up" "w-4 h-4" }} hide {{ len $patches }} commit{{$s}} 120 </div> 121 </summary> 122 {{ range $patches }} 123 <div id="commit-{{.SHA}}" class="py-1 px-2 relative w-full md:max-w-3/5 md:w-fit flex flex-col"> 124 <div class="flex items-center gap-2"> 125 {{ i "git-commit-horizontal" "w-4 h-4" }} 126 <div class="text-sm text-gray-500 dark:text-gray-400"> 127 <!-- attempt to resolve $fullRepo: this is possible only on non-deleted forks and branches --> 128 {{ $fullRepo := "" }} 129 {{ if and $.Pull.IsForkBased $.Pull.PullSource.Repo }} 130 {{ $fullRepo = printf "%s/%s" $owner $.Pull.PullSource.Repo.Name }} 131 {{ else if $.Pull.IsBranchBased }} 132 {{ $fullRepo = $.RepoInfo.FullName }} 133 {{ end }} 134 135 <!-- if $fullRepo was resolved, link to it, otherwise just span without a link --> 136 {{ if $fullRepo }} 137 <a href="/{{ $fullRepo }}/commit/{{ .SHA }}" class="font-mono text-gray-500 dark:text-gray-400">{{ slice .SHA 0 8 }}</a> 138 {{ else }} 139 <span class="font-mono">{{ slice .SHA 0 8 }}</span> 140 {{ end }} 141 </div> 142 <div class="flex items-center"> 143 <span>{{ .Title | description }}</span> 144 {{ if gt (len .Body) 0 }} 145 <button 146 class="py-1/2 px-1 mx-2 bg-gray-200 hover:bg-gray-400 rounded dark:bg-gray-700 dark:hover:bg-gray-600" 147 hx-on:click="document.getElementById('body-{{$round}}-{{.SHA}}').classList.toggle('hidden')" 148 > 149 {{ i "ellipsis" "w-3 h-3" }} 150 </button> 151 {{ end }} 152 </div> 153 </div> 154 {{ if gt (len .Body) 0 }} 155 <p id="body-{{$round}}-{{.SHA}}" class="hidden mt-1 text-sm pb-2"> 156 {{ nl2br .Body }} 157 </p> 158 {{ end }} 159 </div> 160 {{ end }} 161 </details> 162 {{ end }} 163 164 165 <div class="md:pl-[3.5rem] flex flex-col gap-2 mt-2 relative"> 166 {{ range $cidx, $c := .Comments }} 167 <div id="comment-{{$c.ID}}" class="bg-white dark:bg-gray-800 rounded drop-shadow-sm py-2 px-4 relative w-full"> 168 {{ if gt $cidx 0 }} 169 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 170 {{ end }} 171 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 172 {{ template "user/fragments/picHandleLink" $c.OwnerDid }} 173 <span class="before:content-['·']"></span> 174 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a> 175 </div> 176 <div class="prose dark:prose-invert"> 177 {{ $c.Body | markdown }} 178 </div> 179 </div> 180 {{ end }} 181 182 {{ block "pipelineStatus" (list $ .) }} {{ end }} 183 184 {{ if eq $lastIdx .RoundNumber }} 185 {{ block "mergeStatus" $ }} {{ end }} 186 {{ block "resubmitStatus" $ }} {{ end }} 187 {{ end }} 188 189 {{ if $.LoggedInUser }} 190 {{ template "repo/pulls/fragments/pullActions" (dict "LoggedInUser" $.LoggedInUser "Pull" $.Pull "RepoInfo" $.RepoInfo "RoundNumber" .RoundNumber "MergeCheck" $.MergeCheck "ResubmitCheck" $.ResubmitCheck "Stack" $.Stack) }} 191 {{ else }} 192 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-2 relative flex gap-2 items-center w-fit"> 193 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 194 sign up 195 </a> 196 <span class="text-gray-500 dark:text-gray-400">or</span> 197 <a href="/login" class="underline">login</a> 198 to add to the discussion 199 </div> 200 {{ end }} 201 </div> 202 </details> 203 {{ end }} 204 {{ end }} 205{{ end }} 206 207{{ define "mergeStatus" }} 208 {{ if .Pull.State.IsClosed }} 209 <div class="bg-gray-50 dark:bg-gray-700 border border-black dark:border-gray-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 210 <div class="flex items-center gap-2 text-black dark:text-white"> 211 {{ i "ban" "w-4 h-4" }} 212 <span class="font-medium">closed without merging</span 213 > 214 </div> 215 </div> 216 {{ else if .Pull.State.IsMerged }} 217 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 218 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300"> 219 {{ i "git-merge" "w-4 h-4" }} 220 <span class="font-medium">pull request successfully merged</span 221 > 222 </div> 223 </div> 224 {{ else if .Pull.State.IsDeleted }} 225 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 226 <div class="flex items-center gap-2 text-red-500 dark:text-red-300"> 227 {{ i "git-pull-request-closed" "w-4 h-4" }} 228 <span class="font-medium">This pull has been deleted (possibly by jj abandon or jj squash)</span> 229 </div> 230 </div> 231 {{ else if and .MergeCheck .MergeCheck.Error }} 232 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 233 <div class="flex items-center gap-2 text-red-500 dark:text-red-300"> 234 {{ i "triangle-alert" "w-4 h-4" }} 235 <span class="font-medium">{{ .MergeCheck.Error }}</span> 236 </div> 237 </div> 238 {{ else if and .MergeCheck .MergeCheck.IsConflicted }} 239 <div class="bg-red-50 dark:bg-red-900 border border-red-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 240 <div class="flex flex-col gap-2 text-red-500 dark:text-red-300"> 241 <div class="flex items-center gap-2"> 242 {{ i "triangle-alert" "w-4 h-4" }} 243 <span class="font-medium">merge conflicts detected</span> 244 </div> 245 {{ if gt (len .MergeCheck.Conflicts) 0 }} 246 <ul class="space-y-1"> 247 {{ range .MergeCheck.Conflicts }} 248 {{ if .Filename }} 249 <li class="flex items-center"> 250 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }} 251 <span class="font-mono">{{ .Filename }}</span> 252 </li> 253 {{ else if .Reason }} 254 <li class="flex items-center"> 255 {{ i "file-warning" "w-4 h-4 mr-1.5 text-red-500 dark:text-red-300" }} 256 <span>{{.Reason}}</span> 257 </li> 258 {{ end }} 259 {{ end }} 260 </ul> 261 {{ end }} 262 </div> 263 </div> 264 {{ else if .MergeCheck }} 265 <div class="bg-green-50 dark:bg-green-900 border border-green-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 266 <div class="flex items-center gap-2 text-green-500 dark:text-green-300"> 267 {{ i "circle-check-big" "w-4 h-4" }} 268 <span class="font-medium">no conflicts, ready to merge</span> 269 </div> 270 </div> 271 {{ end }} 272{{ end }} 273 274{{ define "resubmitStatus" }} 275 {{ if .ResubmitCheck.Yes }} 276 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm px-6 py-2 relative w-fit"> 277 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300"> 278 {{ i "triangle-alert" "w-4 h-4" }} 279 <span class="font-medium">this branch has been updated, consider resubmitting</span> 280 </div> 281 </div> 282 {{ end }} 283{{ end }} 284 285{{ define "pipelineStatus" }} 286 {{ $root := index . 0 }} 287 {{ $submission := index . 1 }} 288 {{ $pipeline := index $root.Pipelines $submission.SourceRev }} 289 {{ with $pipeline }} 290 {{ $id := .Id }} 291 {{ if .Statuses }} 292 <div class="max-w-80 grid grid-cols-1 bg-white dark:bg-gray-800 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700"> 293 {{ range $name, $all := .Statuses }} 294 <a href="/{{ $root.RepoInfo.FullName }}/pipelines/{{ $id }}/workflow/{{ $name }}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 295 <div 296 class="flex gap-2 items-center justify-between p-2"> 297 {{ $lastStatus := $all.Latest }} 298 {{ $kind := $lastStatus.Status.String }} 299 300 <div id="left" class="flex items-center gap-2 flex-shrink-0"> 301 {{ template "repo/pipelines/fragments/workflowSymbol" $all }} 302 {{ $name }} 303 </div> 304 <div id="right" class="flex items-center gap-2 flex-shrink-0"> 305 <span class="font-bold">{{ $kind }}</span> 306 {{ if .TimeTaken }} 307 {{ template "repo/fragments/duration" .TimeTaken }} 308 {{ else }} 309 {{ template "repo/fragments/shortTimeAgo" $lastStatus.Created }} 310 {{ end }} 311 </div> 312 </div> 313 </a> 314 {{ end }} 315 </div> 316 {{ end }} 317 {{ end }} 318{{ end }}