codeberg_cli/actions/repo/
open.rs1use miette::{Context, IntoDiagnostic};
2
3use crate::actions::GlobalArgs;
4use crate::types::context::BergContext;
5use crate::types::git::OwnerRepo;
6
7use clap::Parser;
8
9#[derive(Parser, Debug)]
11pub struct RepoOpenArgs {}
12
13impl RepoOpenArgs {
14 pub async fn run(self, general_args: GlobalArgs) -> miette::Result<()> {
15 let ctx = BergContext::new(self, general_args).await?;
16
17 let OwnerRepo { owner, repo } = ctx.owner_repo()?;
18
19 let base_url = ctx
20 .config
21 .url()
22 .context("error while retrieving the base url for opening in browser")?;
23 let repo_url = base_url
24 .join(format!("{}/{}", owner, repo).as_str())
25 .into_diagnostic()
26 .context("error while constructing whole repo url for opening in browser")?;
27 webbrowser::open(repo_url.as_str())
28 .into_diagnostic()
29 .context("error while opening repo url in browser")?;
30
31 Ok(())
32 }
33}