codeberg_cli/actions/repo/
open.rs1use anyhow::Context;
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) -> anyhow::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 .context("error while constructing whole repo url for opening in browser")?;
26 webbrowser::open(repo_url.as_str()).context("error while opening repo url in browser")?;
27
28 Ok(())
29 }
30}