feat: Add functionality for opening commit hashes

pull/1/head
sgoudham 2 years ago
parent f830f914c5
commit 9426dec6ce
Signed by: hammy
GPG Key ID: 44E818FD5457EEA4

@ -54,7 +54,7 @@ impl<'a> GitView<'a> {
// Extract protocol, domain and urlpath // Extract protocol, domain and urlpath
let url = self.parse_git_url(&git_url)?; let url = self.parse_git_url(&git_url)?;
// Generate final url to open in the web browser // Generate final url to open in the web browser
let final_url = self.generate_final_url(&remote_ref, &url); let final_url = self.generate_final_url(&remote_ref, &url, &git)?;
// Display OR Open the URL // Display OR Open the URL
if self.is_print { if self.is_print {
@ -222,13 +222,30 @@ impl<'a> GitView<'a> {
} }
} }
fn generate_final_url(&self, remote_ref: &str, url: &Url) -> String { fn generate_final_url(
// if self.commit.unwrap() == "latest" { &self,
// () remote_ref: &str,
// } else { url: &Url,
// () git: &impl GitTrait,
// } ) -> Result<String, AppError> {
let mut open_url = format!("{}://{}/{}", url.protocol, url.domain, url.path);
// Handle commit flag
if let Some(commit) = self.commit {
if commit == "latest" {
let commit_hash = match git.get_current_commit()? {
GitOutput::Ok(hash) => Ok(hash),
GitOutput::Err(err) => Err(AppError::new(ErrorType::CommandFailed, err)),
}?;
open_url.push_str(format!("/tree/{}", commit_hash).as_str());
} else {
open_url.push_str(format!("/tree/{}", commit).as_str());
}
return Ok(open_url);
}
// Handle issue flag and no flags
let branch_ref = match &url.domain { let branch_ref = match &url.domain {
Domain::GitHub => { Domain::GitHub => {
if self.is_issue { if self.is_issue {
@ -240,13 +257,11 @@ impl<'a> GitView<'a> {
Domain::BitBucket => todo!(), Domain::BitBucket => todo!(),
}; };
let mut open_url = format!("{}://{}/{}", url.protocol, url.domain, url.path);
if remote_ref == "master" || remote_ref == "main" { if remote_ref == "master" || remote_ref == "main" {
open_url Ok(open_url)
} else { } else {
open_url.push_str(&branch_ref); open_url.push_str(&branch_ref);
open_url Ok(open_url)
} }
} }
} }

Loading…
Cancel
Save