about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSumner Evans <me@sumnerevans.com>2021-05-20 13:17:29 -0600
committerAlyssa Ross <hi@alyssa.is>2021-05-24 13:25:49 +0000
commitd0b52edacec6a01b65b86b0e8bb5575470f1a775 (patch)
tree8576cf04f61c9bb0662e148d7a501fd03605065b
parent4398773a589bf59df5fa4f9c6eff3d3f1c1ab441 (diff)
downloadpr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar.gz
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar.bz2
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar.lz
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar.xz
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.tar.zst
pr-tracker-d0b52edacec6a01b65b86b0e8bb5575470f1a775.zip
Add title to PR information display
Also refactor MergeInfo -> PrInfo.

Reviewed-by: Alyssa Ross <hi@alyssa.is>
Tested-by: Alyssa Ross <hi@alyssa.is>
-rw-r--r--src/github.rs19
-rw-r--r--src/main.rs11
-rw-r--r--src/pr_info.graphql (renamed from src/merge_commit.graphql)4
-rw-r--r--templates/page.html15
4 files changed, 34 insertions, 15 deletions
diff --git a/src/github.rs b/src/github.rs
index fd24d23..1128f95 100644
--- a/src/github.rs
+++ b/src/github.rs
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: AGPL-3.0-or-later WITH GPL-3.0-linking-exception
 // SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is>
+// SPDX-FileCopyrightText: 2021 Sumner Evans <me@sumnerevans.com>
 
 use std::ffi::OsStr;
 use std::fmt::{self, Display, Formatter};
@@ -63,12 +64,12 @@ const FIRST_KNOWN_NULL_MERGE_COMMIT: &str = "2013-10-20T15:50:06Z";
 #[derive(GraphQLQuery)]
 #[graphql(
     schema_path = "vendor/github_schema.graphql",
-    query_path = "src/merge_commit.graphql",
+    query_path = "src/pr_info.graphql",
     response_derives = "Debug"
 )]
-struct MergeCommitQuery;
+struct PrInfoQuery;
 
-type PullRequest = merge_commit_query::MergeCommitQueryRepositoryPullRequest;
+type PullRequest = pr_info_query::PrInfoQueryRepositoryPullRequest;
 
 impl PullRequest {
     fn merge_commit_oid(&self) -> Option<&str> {
@@ -97,8 +98,9 @@ pub enum PullRequestStatus {
 }
 
 #[derive(Debug)]
-pub struct MergeInfo {
+pub struct PrInfo {
     pub branch: String,
+    pub title: String,
     pub status: PullRequestStatus,
 }
 
@@ -118,8 +120,8 @@ impl<'a> GitHub<'a> {
         Ok(HeaderValue::from_bytes(value)?)
     }
 
-    pub async fn merge_info_for_nixpkgs_pr(&self, pr: i64) -> Result<MergeInfo, Error> {
-        let query = MergeCommitQuery::build_query(merge_commit_query::Variables {
+    pub async fn pr_info_for_nixpkgs_pr(&self, pr: i64) -> Result<PrInfo, Error> {
+        let query = PrInfoQuery::build_query(pr_info_query::Variables {
             owner: "NixOS".to_string(),
             repo: "nixpkgs".to_string(),
             number: pr,
@@ -148,7 +150,7 @@ impl<'a> GitHub<'a> {
             return Err(Error::Response(status));
         }
 
-        let data: GitHubGraphQLResponse<merge_commit_query::ResponseData> = dbg!(response)
+        let data: GitHubGraphQLResponse<pr_info_query::ResponseData> = dbg!(response)
             .body_json()
             .await
             .map_err(Error::Deserialization)?;
@@ -168,8 +170,9 @@ impl<'a> GitHub<'a> {
             PullRequestStatus::Open
         };
 
-        Ok(MergeInfo {
+        Ok(PrInfo {
             branch: pr.base_ref_name,
+            title: pr.title,
             status,
         })
     }
diff --git a/src/main.rs b/src/main.rs
index 22023a8..0b70a15 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: AGPL-3.0-or-later WITH GPL-3.0-linking-exception
 // SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is>
+// SPDX-FileCopyrightText: 2021 Sumner Evans <me@sumnerevans.com>
 
 mod branches;
 mod github;
@@ -70,6 +71,7 @@ static GITHUB_TOKEN: Lazy<OsString> = Lazy::new(|| {
 struct PageTemplate {
     error: Option<String>,
     pr_number: Option<String>,
+    pr_title: Option<String>,
     closed: bool,
     tree: Option<Tree>,
     source_url: String,
@@ -97,7 +99,7 @@ async fn track_pr(pr_number: Option<String>, status: &mut u16, page: &mut PageTe
 
     let github = GitHub::new(&GITHUB_TOKEN, &CONFIG.user_agent);
 
-    let merge_info = match github.merge_info_for_nixpkgs_pr(pr_number_i64).await {
+    let pr_info = match github.pr_info_for_nixpkgs_pr(pr_number_i64).await {
         Err(github::Error::NotFound) => {
             *status = 404;
             page.error = Some(format!("No such nixpkgs PR #{}.", pr_number_i64));
@@ -114,18 +116,19 @@ async fn track_pr(pr_number: Option<String>, status: &mut u16, page: &mut PageTe
     };
 
     page.pr_number = Some(pr_number);
+    page.pr_title = Some(pr_info.title);
 
-    if matches!(merge_info.status, PullRequestStatus::Closed) {
+    if matches!(pr_info.status, PullRequestStatus::Closed) {
         page.closed = true;
         return;
     }
 
     let nixpkgs = Nixpkgs::new(&CONFIG.path, &CONFIG.remote);
-    let tree = Tree::make(merge_info.branch.to_string(), &merge_info.status, &nixpkgs).await;
+    let tree = Tree::make(pr_info.branch.to_string(), &pr_info.status, &nixpkgs).await;
 
     if let github::PullRequestStatus::Merged {
         merge_commit_oid, ..
-    } = merge_info.status
+    } = pr_info.status
     {
         if merge_commit_oid.is_none() {
             page.error = Some("For older PRs, GitHub doesn't tell us the merge commit, so we're unable to track this PR past being merged.".to_string());
diff --git a/src/merge_commit.graphql b/src/pr_info.graphql
index 76d12ec..fb533a0 100644
--- a/src/merge_commit.graphql
+++ b/src/pr_info.graphql
@@ -1,9 +1,11 @@
 # SPDX-License-Identifier: AGPL-3.0-or-later WITH GPL-3.0-linking-exception
 # SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is>
+# SPDX-FileCopyrightText: 2021 Sumner Evans <me@sumnerevans.com>
 
-query MergeCommitQuery($owner: String!, $repo: String!, $number: Int!) {
+query PrInfoQuery($owner: String!, $repo: String!, $number: Int!) {
   repository(owner: $owner, name: $repo) {
     pullRequest(number: $number) {
+      title
       baseRefName
       mergeCommit {
         oid
diff --git a/templates/page.html b/templates/page.html
index d433e41..404977b 100644
--- a/templates/page.html
+++ b/templates/page.html
@@ -1,12 +1,18 @@
 <!-- SPDX-License-Identifier: AGPL-3.0-or-later WITH GPL-3.0-linking-exception -->
 <!-- SPDX-FileCopyrightText: 2021 Alyssa Ross <hi@alyssa.is> -->
+<!-- SPDX-FileCopyrightText: 2021 Sumner Evans <me@sumnerevans.com> -->
 
 <!doctype html>
 <html lang="en">
   <head>
     {% match pr_number %}
     {%- when Some with (pr_number) -%}
+    {% match pr_title %}
+    {%- when Some with (pr_title) -%}
+    <title>Nixpkgs PR #{{ pr_number }} ("{{ pr_title }}") progress</title>
+    {%- else -%}
     <title>Nixpkgs PR #{{ pr_number }} progress</title>
+    {%- endmatch -%}
     {%- else -%}
     <title>Nixpkgs PR progress tracker</title>
     {% endmatch %}
@@ -179,8 +185,13 @@
           <span class="state-accepted">✅</span>
           {%- endif -%}
           PR <a href="https://github.com/NixOS/nixpkgs/pull/{{ pr_number }}">#{{ pr_number }}</a>
-          {%- if closed -%}
-          closed
+          {% match pr_title %}
+          {%- when Some with (pr_title) -%}
+          ("{{ pr_title }}")
+          {%- else -%}
+          {%- endmatch -%}
+          {% if closed -%}
+          (closed)
           {%- endif -%}
         </li>