use std::sync::Arc;
use crate::cli::browse::BrowseOptions;
use crate::config::Config;
use crate::remote;
use crate::Result;
pub fn execute(
options: BrowseOptions,
config: Arc<Config>,
domain: String,
path: String,
) -> Result<()> {
match options {
BrowseOptions::Repo => {
let remote_url = format!("https://{}/{}", domain, path);
Ok(open::that(remote_url)?)
}
BrowseOptions::MergeRequests => {
let remote = remote::get_project(domain, path, config, false)?;
Ok(open::that(remote.get_url(BrowseOptions::MergeRequests))?)
}
BrowseOptions::MergeRequestId(id) => {
let remote = remote::get_project(domain, path, config, false)?;
Ok(open::that(
remote.get_url(BrowseOptions::MergeRequestId(id)),
)?)
}
BrowseOptions::Pipelines => {
let remote = remote::get_project(domain, path, config, false)?;
Ok(open::that(remote.get_url(BrowseOptions::Pipelines))?)
}
BrowseOptions::PipelineId(id) => {
let remote = remote::get_project(domain, path, config, false)?;
Ok(open::that(remote.get_url(BrowseOptions::PipelineId(id)))?)
}
BrowseOptions::Releases => {
let remote = remote::get_project(domain, path, config, false)?;
Ok(open::that(remote.get_url(BrowseOptions::Releases))?)
}
BrowseOptions::Manual => Ok(open::that(crate::USER_GUIDE_URL)?),
}
}