Cómo borrar repositorios GitHub de forma masiva

Problema: tengo más de 100 repositorios que quiero borrar en GitHub. Están creados bajo la organización X. Borrar uno por uno es un infierno: Settings / Danger Zone / Erase / Confirmar borrado tecleando el nombre del repo. Necesito algo más rápido. gh-cli, por ejemplo.

gh cli : GitHub’s official command line tool
https://github.com/cli/cli
Pero no tiene soporte directo para borrar repositorios y menos en batch. It's not a bug, it's a feature:

https://github.com/cli/cli/issues/2461

Pero… leyendo los comentarios de varios usuarios, sí que se puede "programar" usando el comando `gh api`

Puedes ver un listado de todos los proyectos (sí, la org X en la que quiero hacer limpieza de repos viejos es mi universidad)

$ gh api -X GET 'orgs/UPV-EHU-Bilbao/repos' -F per_page=100 –paginate –cache 1h | jq '.[]|.full_name'

Preparar el alias de borrado:
$ gh alias set repo-delete 'api -X DELETE "repos/$1"'
e intentar la eliminación:
$ gh repo-delete UPV-EHU-Bilbao/codespacephp
… para llegar a este error de permisos:

Es necesario actualizar el token para añadirle permiso de borrado de repos. Basta con este comando:
$ gh auth refresh -h http://github.com -s delete_repo

Y ahora sí, el alias funcionará.

$ gh repo-delete UPV-EHU-Bilbao/codespacephp
$

Ojo, no pide confirmación, ejecuta la orden de borrado inmediatamente. Así que si lo metes en un bucle para iterar sobre todos los repos, revisa varias veces el script antes de cargarte todo 🙂

Originally tweeted by juanan (@juanan) on 30 August, 2021.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.