Laura Manzini
- Introducción
- gh alias
- alias gh create-repo
- alias gh delete-repo
- Seleccionar las organizaciones a las que se apartenece
- gh org-list
- gh extension
El comando gh
es el comando de GitHub que se emplega en la terminal.
El comando gh alias
se utiliza para semplificar y crear shortcuts para todos los comandos de gh que se utilizan más frecuentemente. La documentación explica como utilizar el comando.
Es importante explicitar todos los arguments y también los flags del comando de lo que se quiere hacer el alias.
El comando base que se utiliza para hacer un alias es el siguiente:
gh alias <comando> [flags]
Los comandos que son disponibles para el utilizo de alias son los siguientes:
- set: para crear un nuevo alias
- delete: para eliminar un alias ya existente
- list: para enumerar los alias
En primero lugar para crear un repositorio sobre gitpod es necesario autenticarse ejecutendo el código:
gh auth login
Será necesario generar un token sobre el perfil de GitHub y luego pegarlo sobre el terminal.
Un vez que nos encontramos en nuestro workspace es posible crear un repositorio ejecutando el código:
gh repo create org/repo
Si quieremos por ejemplo crear un repositorio sobre la organizacion ULL-ESIT-DMSI-1920 ejecutamos el siguiente código:
gh repo create ULL-ESIT-DMSI-1920/prueba-lauramanzini
Para visualizar una lista de los repositorios que estan entre la organización se ejecuta gh repo list ULL-ESIT-DMSI-1920
.
Para crear un comando alias que sea capaz de crear un repositorio sobre una organización que ya existe ejecutamo el comando gh alias set
como sigue:
gh alias set repo-create 'repo create ULL-ESIT-DMSI-1920/$1'
gh repo-create prueba1
Para eliminar un repositorio se utiliza el comando gh api
para tener una lista de los flags que son disponibles para el comando.
El flag -X
nos dice que va a ser posible utilizar uno de los metodos (get,delete ...) para cambiar los repositorios.
Se puede consultar la documentación para eliminar un repositorio se encuentra en las referencias de los repositorios API.
Desde la documentación podemos ver como a través del comando curl
es posible eliminar el repositorio.
Imaginamos de tener un repositorio llamado prueba-lauramanzini
en la organización ULL-ESIT-DMSI-1920
. La documentación indica que utilizando el siguiente código será posible eliminar el dicho repositorio:
curl \
-X DELETE \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/ULL-ESIT-DMSI-1920/prueba-lauramanzini
El comando curl
no va a funcionar por que no se encuentra la documentación necesaria para hacer el cambio. De otra manera se utiliza el comando gh api
:
gh api \
-X DELETE \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/ULL-ESIT-DMSI-1920/prueba-lauramanzini
Para crear un comando alias que pueda eliminar un repositorio seleccionado en una organización utilizamos el comando gh alias set
.
gh alias set repo-delete 'api -X DELETE "/repos/org/$1"'
Nota: Cuando ejecutamos el comando repo-delete será necesario explicitar la organización y también el nombre del repositorio que quieremos eliminar.
Para ver todas las organizaciones a las que pertenezco se consulta la documentación de GitHub y se encuentra el comando gh api /user/memberships/orgs
que nos permite de obtener una lista de todas las afiliaciones a organizaciones.
Añadendo el comando | jq
al final se puede acceder al fichero .json con toda la información sobre las organizaciones a las que el mi perfil de GitHub está asociado.
El fichero json que obtenimos es un fichero muy largo y a veces bastante difícil de entender. Para solucionar este problema se utiliza el comando --paginate
. Ejecutamos:
gh api --paginate /user/memberships/orgs | jq
.
Para obtener las informacciones que están contenida en el fichero json que hemos obtenido es necesario instalar el jq json queries. Esta herramienta nos permite de acceder a la información contenida en qualquier fichero json.
Los comandos más utilizados se pueden consultar al siguiente enlace.
Después de instalar la herramienta se ejecuta el código brew install jq
sobre GitPod:
El fichero json es un array de elementos y para acceder a esos se siguen las siguientes reglas:
- Se utilizan las comillas simples ' ' para indicar los elementos del fichero json que queremos ver
- En los corchetes ponemos la posicción del elemento del array que queremos seleccionar
- Despues de los corchetes ponemos un punto
.
cada vez que queremos acceder a uno de los elementos del elemento del array seleccionado el los corchetes.
Por ejemplo ejecutando el código gh api /user/memberships/orgs | jq '.[0]'
obtenimos la información relativa el primero elemento del array, es decir el elemento que es en la posicción 0 del array.
Una otra manera de obtener las misma informaciones pero en formato diferente es ejecutando el código:
gh api /user/memberships/orgs --jq '.[0]'
Para acceder a las organizaciones a las que apartenezco es necesario acceder en primero al campo organizations y luego al campo login de lo mismo. Se ejecuta:
gh api /user/memberships/orgs jq '.[].organization.login'
.
El objectivo ahora es crear un comando alias que nos permite de acceder a las organizaciones. El comando que se ejecuta para obtener esta información es:
gh api /user/memberships/orgs | jq '.[].organization | .login, .url'
Una vez que hemos encontrado el comando para obtener la información solicitada podemos creare el comando orgs-list ejecutando el código:
gh alias set orgs-list "api /user/memberships/orgs | jq '.[].organization | .login, .url'"
Una gh extension es una extensión de un comando de GitHub CLI que una vez instalada o creada se puede utilizar.
El comando gh extension
tiene 5 comandos:
- create: para crear una nueva gh extension
- install: para instalar una gh extension desde un repositorio que ya existe
- list: muestra la lista de todos los gh extension que se han instalado
- remove: quita una gh extension ya instalada
- upgrade: hace un upgrade de una gh extension ya instalada
Para major información se consulte la documentación de GitHub.
La extension que creo es gh-repo-rename-lauramanzini
.
Se utiliza el metodo gh extension create
para crear una extension del comando que será llamado gh-repo-rename-lauramanzini ejecutando el código:
gh extension create gh-repo-rename-lauramanzini
cd gh-repo-rename-lauramanzini
gh repo create --public ULL-ESIT-DMSI-1920/gh-repo-rename-lauramanzini
Ahora tenemos un repositorio creado en la organización ULL-ESIT-DMSI-1920 que es llamado gh-repo-rename-lauramanzini.
Se puede también hacer un commit sobre este repositorio de la siguiente manera:
git commit -am 'Primer prueba de laura'
git push --set-upstream origin master
Una vez que hemos creado el repositorio en la organización es necesario crear un submodulo entre el repositorio que tenemos con el comando git submodule add <URL>
.
Ejecutamos entoncés en la carpeta gh-cli-lauramanzini el siguiente código:
git submodule add https://github.com/ULL-ESIT-DMSI-1920/gh-repo-rename-lauramanzini.git
Ahora a través del comando ls -la
es posible comprobar la presencia del fichero .gitsubmodules
. Es todavía necesario hacer un commit de los cambio que se han aportado al repositorio. Ejecutamos:
git commit -m Commit16
git push