@@ -18,6 +18,7 @@ import (
1818
1919type DeleteOptions struct {
2020 HttpClient func () (* http.Client , error )
21+ BaseRepo func () (ghrepo.Interface , error )
2122 IO * iostreams.IOStreams
2223 RepoArg string
2324 Confirmed bool
@@ -27,21 +28,27 @@ func NewCmdDelete(f *cmdutil.Factory, runF func(*DeleteOptions) error) *cobra.Co
2728 opts := & DeleteOptions {
2829 IO : f .IOStreams ,
2930 HttpClient : f .HttpClient ,
31+ BaseRepo : f .BaseRepo ,
3032 }
3133
3234 cmd := & cobra.Command {
33- Use : "delete <repository>" ,
35+ Use : "delete [ <repository>] " ,
3436 Short : "Delete a repository" ,
3537 Long : `Delete a GitHub repository.
3638
39+ With no argument, deletes the current repository. Otherwise, deletes the specified repository.
40+
3741Deletion requires authorization with the "delete_repo" scope.
3842To authorize, run "gh auth refresh -s delete_repo"` ,
39- Args : cmdutil . ExactArgs ( 1 , "cannot delete: repository argument required" ),
43+ Args : cobra . MaximumNArgs ( 1 ),
4044 RunE : func (cmd * cobra.Command , args []string ) error {
41- opts .RepoArg = args [0 ]
45+ if len (args ) > 0 {
46+ opts .RepoArg = args [0 ]
47+ }
4248 if ! opts .IO .CanPrompt () && ! opts .Confirmed {
43- return cmdutil .FlagErrorf ("could not prompt: confirmation with prompt or --confirm flag required" )
49+ return cmdutil .FlagErrorf ("--confirm required when not running interactively " )
4450 }
51+
4552 if runF != nil {
4653 return runF (opts )
4754 }
@@ -60,21 +67,27 @@ func deleteRun(opts *DeleteOptions) error {
6067 }
6168 apiClient := api .NewClientFromHTTP (httpClient )
6269
63- repoSelector := opts .RepoArg
6470 var toDelete ghrepo.Interface
6571
66- if ! strings . Contains ( repoSelector , "/" ) {
67- currentUser , err := api . CurrentLoginName ( apiClient , ghinstance . Default () )
72+ if opts . RepoArg == "" {
73+ toDelete , err = opts . BaseRepo ( )
6874 if err != nil {
6975 return err
7076 }
71- repoSelector = currentUser + "/" + repoSelector
72- }
73- toDelete , err = ghrepo .FromFullName (repoSelector )
74- if err != nil {
75- return fmt .Errorf ("argument error: %w" , err )
77+ } else {
78+ repoSelector := opts .RepoArg
79+ if ! strings .Contains (repoSelector , "/" ) {
80+ currentUser , err := api .CurrentLoginName (apiClient , ghinstance .Default ())
81+ if err != nil {
82+ return err
83+ }
84+ repoSelector = currentUser + "/" + repoSelector
85+ }
86+ toDelete , err = ghrepo .FromFullName (repoSelector )
87+ if err != nil {
88+ return fmt .Errorf ("argument error: %w" , err )
89+ }
7690 }
77-
7891 fullName := ghrepo .FullName (toDelete )
7992
8093 if ! opts .Confirmed {
0 commit comments