@@ -567,3 +567,58 @@ func (g *GitHub) UpdateTopics(topics []string, project Project) error {
567567
568568 return nil
569569}
570+
571+ // DeleteAllWebHooks retrieves and deletes all webhooks for the project
572+ func (g * GitHub ) DeleteAllWebHooks (project Project ) error {
573+ ops := github.ListOptions {PerPage : 50 }
574+ hooks , _ , err := g .V3 .Repositories .ListHooks (context .Background (), project .Organization , project .RepositoryName , & ops )
575+ if err != nil {
576+ LogError (err , "Error listing hooks" )
577+ return err
578+ }
579+
580+ for _ , hook := range hooks {
581+ if _ , err := g .V3 .Repositories .DeleteHook (context .Background (), project .Organization , project .RepositoryName , * hook .ID ); err != nil {
582+ LogError (err , "Error removing hook %d" , * hook .ID )
583+ return err
584+ }
585+ }
586+
587+ return nil
588+ }
589+
590+ // ArchiveRepository patches the repo and archives it
591+ func (g * GitHub ) ArchiveRepository (project Project ) error {
592+ if project .IsArchived {
593+ return nil
594+ }
595+
596+ repo := github.Repository {
597+ Archived : github .Bool (true ),
598+ }
599+
600+ if _ , _ , err := g .V3 .Repositories .Edit (context .Background (), project .Organization , project .RepositoryName , & repo ); err != nil {
601+ LogError (err , "Error archiving repository %s" , project .RepositoryName )
602+ return err
603+ }
604+
605+ return nil
606+ }
607+
608+ // Transfer moves the repository to another organization
609+ func (g * GitHub ) Transfer (project Project , organization string ) error {
610+ if project .Organization == organization {
611+ return nil
612+ }
613+
614+ transfer := github.TransferRequest {
615+ NewOwner : organization ,
616+ }
617+
618+ if _ , _ , err := g .V3 .Repositories .Transfer (context .Background (), project .Organization , project .RepositoryName , transfer ); err != nil {
619+ LogError (err , "Error transfering repository %s" , project .RepositoryName )
620+ return err
621+ }
622+
623+ return nil
624+ }
0 commit comments