summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCyborus <cyborus@noreply.codeberg.org>2024-07-25 21:37:32 +0200
committerCyborus <cyborus@noreply.codeberg.org>2024-07-25 21:37:32 +0200
commit0ca2a4042211349459421453e1711687ec2d0c41 (patch)
tree08a039948dea0c6a94b8a1f90be9eae204a5a522
parentMerge pull request '`repo create` should not take `RepoArg` for name argument... (diff)
parentfeat: `repo delete` (diff)
downloadforgejo-cli-0ca2a4042211349459421453e1711687ec2d0c41.tar.xz
forgejo-cli-0ca2a4042211349459421453e1711687ec2d0c41.zip
Merge pull request '`repo delete`' (#99) from repo-delete into main
Reviewed-on: https://codeberg.org/Cyborus/forgejo-cli/pulls/99
-rw-r--r--src/repo.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/repo.rs b/src/repo.rs
index 336e868..f870add 100644
--- a/src/repo.rs
+++ b/src/repo.rs
@@ -326,6 +326,9 @@ pub enum RepoCommand {
Unstar {
repo: RepoArg,
},
+ Delete {
+ repo: RepoArg,
+ },
Browse {
name: Option<RepoArg>,
#[clap(long, short = 'R')]
@@ -663,6 +666,24 @@ impl RepoCommand {
.await?;
println!("Removed star from {}/{}", name.owner(), name.name());
}
+ RepoCommand::Delete { repo } => {
+ let repo = RepoInfo::get_current(host_name, Some(&repo), None)?;
+ let api = keys.get_api(&repo.host_url()).await?;
+ let name = repo.name().unwrap();
+ print!(
+ "Are you sure you want to delete {}/{}? (y/N) ",
+ name.owner(),
+ name.name()
+ );
+ let user_response = crate::readline("").await?;
+ let yes = matches!(user_response.trim(), "y" | "Y" | "yes" | "Yes");
+ if yes {
+ api.repo_delete(name.owner(), name.name()).await?;
+ println!("Deleted {}/{}", name.owner(), name.name());
+ } else {
+ println!("Did not delete");
+ }
+ }
RepoCommand::Browse { name, remote } => {
let repo = RepoInfo::get_current(host_name, name.as_ref(), remote.as_deref())?;
let mut url = repo.host_url().clone();