1.2.1 • Published 4 years ago

@alu0101227610/gh-repo-rename v1.2.1

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

Creacion de una extension utilizando GraphQL

Repo Rename

Github Command Line

Antonella García Alvarez

alu0101227610

GraphQL

Es un lenguaje de consultas (query), y alteracion de la informacion de un servicio web. Es un medio de comunicacion entre nosotros y un servicio web (pagina web). Nos facilita el trabajo solicitando al servicio web solo el objeto que necesitamos, sin averiguar donde estan a diferencia de como hemos accedidos a ellos antes con el JSON.

  • Formato de las consultas

Para realizar un query o un mutation, la estructura sera algo parecido a esto:

[query|mutation] nombre (argumentos) {
  Operacion
}

La operacion empieza cuando ponemos si la operacion es un query o un mutation. Lo siguiente sera el nombre de la operacion, y si queremos ponemos los argumentos que necesitaremos para trabajar. En este caso necesitamos el dueño u owneranizacion y el nombre del repositorio al que queremos acceder.

  • Como implementar graphQL con Java Script

Para empezar, guardamos las variables que necesitamos en algo mas general. Es decir, en lugar de poner la owneranizacion la referenciamos. En nuestra extension, para conseguir el ID del repositorio, implementamos esta query que guardamos en una variable getrepoID

const getrepoID = (owner, name) => `
query getrepoID{
    repository(owner: "${owner}", name: "${name}"){
      id
    }
  }
 `;

Otra consultas que realizamos para el desarrollo de la extension rename es la de conseguir el nombre del repo, y en su defecto, cambiarlo:

const renamerepo = (id, newName) => `   
  mutation renamerepo{
    updateRepository(input: 
      {
        name: "${newName}"
        repositoryId: "${id}"
      }
    ) {
      repository{
        name
      }
    }
  }
`;

Como vemos, esta consulta es una mutacion. Ya que altera el nombre del repositorio que le indiquemos; Para poder ejecutar estas consultas como siempre añadimos la libreria shelljs.

const shell = require('shelljs')

Y luego, implementando un shell.exec llamamos a la api de graphql a traves de github command line.

r = shell.exec(`gh api graphql -f query='${renamerepo(ID, name)}' --jq '.data.updateRepository.repository.name'` , 
  {silent: true}
);

Lo que vemos al final de la llamada, es un silent:true. Sirve para que no se vea nada reflejado en la terminal, para limpiar un poco la ejecucion del codigo.

Uso

Nuevamente, adjunto las opciones disponibles en nuestra extension que se ejecuta cuando la llamamos, o cuando ejecutamos la extension sin haber puesto los argumentos necesarios.

Usage: gh-repo-rename [options]

Options:
  -V, --version             output the version number
  -o, --owner <owneranization>  specifies the owneranization
  -r, --repo <reponame>     specifies the repository
  -n, --name <name>         name
  -h, --help                display help for command