Yanapiri
Yanapiri es un vocablo aymara que significa "ayudante" o "el que ayuda".
A partir de este humilde aporte, es también una aplicación de línea de comandos (CLI) para asistir a docentes en ciertas tareas relacionadas al manejo de entregas a través de GitHub Classroom.
Instalación
Yanapiri funciona con Ruby, por lo cual es necesario instalarlo antes. Podés consultar cómo hacerlo en la documentación oficial.
Una vez que tu entorno Ruby esté funcionando, ejecutá lo siguiente:
gem install yanapiri
Luego, por única vez, deberás darle a yanapiri
un access token de GitHub y una organización por defecto sobre la cual trabajar. Para ello, ejecutá el siguiente comando:
yanapiri setup
Uso
Podés ver una lista de los comandos existentes ejecutando yanapiri help
.
Un flujo de trabajo típico sería el siguiente:
yanapiri clonar entrega-1
yanapiri corregir entrega-1 --commit-base 326336a8ba771611 --fecha-limite "2019-05-01 23:59:59"
Otra opción posible, para cuando el commit base no es el mismo para todas las entregas, es especificarlo mediante un índice (con base 1). Por ejemplo, esto tomará como base al tercer commit que tenga el repositorio:
yanapiri corregir entrega-1 --commit-base index:3 --fecha-limite "2019-05-01 23:59:59"
Trabajando con más de una organización
Yanapiri soporta tres formas de configurar la organización:
- global, que se configura con
yanapiri setup
; - local, que se configura con
yanapiri init
; - por parámetro, que se configura con la opción
--orga
.
Para los casos en que se necesite trabajar regularmente con más de una organización (por ejemplo, si tenés varios cursos) conviene utilizar la configuración local.
Un ejemplo de estructura de directorios podría ser el siguiente:
entregas
├── une-objetos1
└── unlu-intro
Para escribir la configuración local, habría que ejecutar yanapiri init
en cada uno de los subdirectorios.
Pruebas locales
Para una prueba rápida, se puede instalar la gema localmente ejecutando rake install
. Esto hará que el comando yanapiri
ejecute el código local.
Durante el desarrollo es más cómodo no tener que correr rake install
ante cada cambio, y para eso el proyecto incluye guard
, una herramienta que se encarga de correrlo ante cada cambio. Basta con ejecutar bundle exec guard
para que funcione (¡no olvides dejar abierta la terminal!).
Releases
Utilizamos la gema bump para generar los releases, en conjunto con gren para actualizar la información en GitHub Releases.
Las versiones se nombran según la especificación Semantic Versioning 2.0.0 y son publicadas automáticamente en RubyGems gracias a Travis.
Para publicar una nueva versión (un patch, en este ejemplo), hay que ejecutar lo siguiente:
rake bump:patch # o bien bump:minor o bump:major
git push --follow-tags
Agradecimientos
Gracias a Elizabeth Arostegui, autora de la cholita que usamos como logo de Yanapiri. Podés ver otros íconos de esa gran colección entrando a su sitio Cosmocollita.