app/views/userPages/repo.scala.html (126 lines of code) (raw):

@import lib.ConfigFinder.ProutConfigFileName @import org.eclipse.jgit.lib.ObjectId @import scala.util.{Failure, Success} @import lib.sentry.SentryApiClient @( proutPresenceQuickCheck: Boolean, repoSnapshot: lib.RepoSnapshot, diagnostic: lib.Diagnostic, sentryApiClientOpt: Option[SentryApiClient] )(implicit req: Request[AnyContent], bot: lib.Bot) @showCommit(commitId: ObjectId) = {<a href="@repoSnapshot.repo.html_url/commit/@commitId.name"><code>@commitId.name.take(7)</code></a>} @showCommits(commitIds: Iterable[ObjectId]) = {@for(commitId<-commitIds) {@showCommit(commitId) }} @configLink(folder: String) = {<a href="@repoSnapshot.repo.html_url/blob/@repoSnapshot.repo.default_branch@folder@ProutConfigFileName">@folder@ProutConfigFileName</a>} @main { <div class="row"> <div class="col-md-6"> @for(permissions <- repoSnapshot.repo.permissions) { <h3>Permissions for @bot.user.atLogin</h3> <ul> <li><em>push</em> @if(permissions.push) { ✅ } else { ❌ Push permission is needed for writing comments and setting labels! } </li> </ul> } <h3>Config files</h3> @if(!proutPresenceQuickCheck) { ❌ Quick check for @ProutConfigFileName failed! @if(repoSnapshot.config.configByFolder.nonEmpty) { GitHub seems to be returning data different to the Git repo itself... } } <p> <ul> @for((folder, configInFolder) <- repoSnapshot.config.configByFolder) { <li>@configLink(folder) @configInFolder.asOpt match { case None => { <span title="Invalid Prout JSON">❌</span> } case Some(validConfig) => { <span title="Parsed as valid Prout JSON">✅</span> <h5>Checkpoints</h5> <ul> @for(checkpoint <- validConfig.checkpointSet) { <li> <b id="checkpoint-@checkpoint.name">@checkpoint.name</b> - <a href="@checkpoint.details.url">@checkpoint.details.url</a> @for(snapshot <- diagnostic.snapshotsByCheckpoint.get(checkpoint)) { @snapshot.commitIdTry match { case Success(idOpt) => { @idOpt match { case Some(commitId) => { Commit Id found : @showCommit(commitId) } case None => { ❌ No commit id found } } } case Failure(error) => { ❌ Could not read from this url, got @error } } @snapshot.checkpoint.details.messages.map { messages => <br/>Custom messages: <ul> @messages.filePaths.map { case (status, path) => <li>@status.getClass.getName: <a href="@repoSnapshot.repo.html_url/blob/@repoSnapshot.repo.default_branch/@path">@path</a></li> } </ul> } } </li> } </ul> @for(sentryConf <- validConfig.sentry) { <h5>Sentry</h5> <ul> @for(sentryProject <- sentryConf.projects) { <li>@sentryProject</li> } </ul> @if(sentryApiClientOpt.isEmpty) { ...but no Sentry credentials are available! ❌ } } } } </li> } </ul> <h3>Merged Pull Requests</h3> <ul> @for(prDetail <- diagnostic.prDetails) { <li><a href="@prDetail.pr.html_url" > <svg viewBox="0 0 16 16" width="16" height="16"><path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path></svg> #@prDetail.pr.number - @prDetail.pr.title</a> <ul> @for(e <- prDetail.everythingByCheckpoint.values) { <li> <a href="#checkpoint-@e.snapshot.checkpoint.name"><b>@e.snapshot.checkpoint.name</b></a> - @e.checkpointStatus, @e.commitVisibility match { case Some(cv) => { @if(cv.seen.nonEmpty) { @showCommits(cv.seen) is deployed } else { @showCommits(cv.unseen) not yet seen } } case None => { could not check commit visibility } } </li> } </ul> </li> } </ul> </div> </div> }