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>
}