Skip to content

Commit dafe617

Browse files
runningcodeclaude
andcommitted
Address PR feedback: improve get_github_pr_number function
- Rename function from get_default_pr_number to get_github_pr_number for clarity - Simplify nested conditional logic for better readability - Add qualifier to help text about GitHub Actions environment requirement - Move function from upload.rs to vcs.rs for better organization 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent e6e98aa commit dafe617

File tree

2 files changed

+25
-27
lines changed

2 files changed

+25
-27
lines changed

src/commands/build/upload.rs

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,10 @@ use crate::utils::fs::TempDir;
2424
use crate::utils::fs::TempFile;
2525
use crate::utils::progress::ProgressBar;
2626
use crate::utils::vcs::{
27-
self, get_provider_from_remote, get_repo_from_remote, git_repo_head_ref, git_repo_remote_url,
27+
self, get_github_pr_number, get_provider_from_remote, get_repo_from_remote, git_repo_head_ref,
28+
git_repo_remote_url,
2829
};
2930

30-
fn get_default_pr_number() -> Option<u32> {
31-
std::env::var("GITHUB_REF").ok().and_then(|github_ref| {
32-
if let Ok(event_name) = std::env::var("GITHUB_EVENT_NAME") {
33-
if event_name == "pull_request" && github_ref.starts_with("refs/pull/") {
34-
let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?;
35-
if let Ok(pr_number) = pr_number_str.parse::<u32>() {
36-
debug!("Auto-detected PR number from GitHub Actions: {}", pr_number);
37-
Some(pr_number)
38-
} else {
39-
None
40-
}
41-
} else {
42-
None
43-
}
44-
} else {
45-
None
46-
}
47-
})
48-
}
49-
5031
pub fn make_command(command: Command) -> Command {
5132
#[cfg(all(target_os = "macos", target_arch = "aarch64"))]
5233
const HELP_TEXT: &str =
@@ -105,7 +86,7 @@ pub fn make_command(command: Command) -> Command {
10586
Arg::new("pr_number")
10687
.long("pr-number")
10788
.value_parser(clap::value_parser!(u32))
108-
.help("The pull request number to use for the upload. If not provided, the PR number will be automatically detected from GitHub Actions environment variables.")
89+
.help("The pull request number to use for the upload. If not provided and running in a GitHub Actions environment, the PR number will be automatically detected from GitHub Actions environment variables.")
10990
)
11091
.arg(
11192
Arg::new("build_configuration")
@@ -196,7 +177,7 @@ pub fn execute(matches: &ArgMatches) -> Result<()> {
196177
let pr_number = matches
197178
.get_one::<u32>("pr_number")
198179
.copied()
199-
.or_else(get_default_pr_number);
180+
.or_else(get_github_pr_number);
200181

201182
let build_configuration = matches.get_one("build_configuration").map(String::as_str);
202183
let release_notes = matches.get_one("release_notes").map(String::as_str);
@@ -622,20 +603,20 @@ mod tests {
622603
}
623604

624605
#[test]
625-
fn test_get_default_pr_number() {
606+
fn test_get_github_pr_number() {
626607
std::env::set_var("GITHUB_EVENT_NAME", "pull_request");
627608
std::env::set_var("GITHUB_REF", "refs/pull/123/merge");
628609

629-
let pr_number = get_default_pr_number();
610+
let pr_number = get_github_pr_number();
630611
assert_eq!(pr_number, Some(123));
631612

632613
std::env::set_var("GITHUB_EVENT_NAME", "push");
633-
let pr_number = get_default_pr_number();
614+
let pr_number = get_github_pr_number();
634615
assert_eq!(pr_number, None);
635616

636617
std::env::set_var("GITHUB_EVENT_NAME", "pull_request");
637618
std::env::set_var("GITHUB_REF", "refs/heads/main");
638-
let pr_number = get_default_pr_number();
619+
let pr_number = get_github_pr_number();
639620
assert_eq!(pr_number, None);
640621

641622
std::env::remove_var("GITHUB_EVENT_NAME");

src/utils/vcs.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,23 @@ pub fn git_repo_head_ref(repo: &git2::Repository) -> Result<String> {
249249
}
250250
}
251251

252+
/// Attempts to get the PR number from GitHub Actions environment variables.
253+
/// Returns the PR number if running in a GitHub Actions pull request environment.
254+
pub fn get_github_pr_number() -> Option<u32> {
255+
let github_ref = std::env::var("GITHUB_REF").ok()?;
256+
let event_name = std::env::var("GITHUB_EVENT_NAME").ok()?;
257+
258+
if event_name != "pull_request" || !github_ref.starts_with("refs/pull/") {
259+
return None;
260+
}
261+
262+
let pr_number_str = github_ref.strip_prefix("refs/pull/")?.split('/').next()?;
263+
264+
let pr_number = pr_number_str.parse::<u32>().ok()?;
265+
debug!("Auto-detected PR number from GitHub Actions: {}", pr_number);
266+
Some(pr_number)
267+
}
268+
252269
fn find_reference_url(repo: &str, repos: &[Repo]) -> Result<Option<String>> {
253270
let mut non_git = false;
254271
for configured_repo in repos {

0 commit comments

Comments
 (0)