Te presentamos los pasos básicos de cómo automatizar el perfil de GitHub Readme, siendo que la nueva función Readme de la página de perfil de GitHub está aportando valor a los sitios.
Aunque la función Markdown esté más enfocada al contenido de texto estático estándar, eso no impide que las personas creativas trabajen para crear un archivo Readme para pasar al siguiente nivel. Puedes incluir GIF e imágenes para movimiento y “pizazz” (los cuáles están cubiertos en GitHub Flavor Markdown), pero hay algo más dinámico.
Dado que está en el centro del perfil GitHub, Readme es una buena oportunidad para que la gente vea qué es y cómo funciona, así como para mostrar algunos aspectos de su trabajo.
Mantenerlo actualizado no tiene que ser un problema, gracias a las herramientas de entrega continua como GitHub Actions.
El archivo actual Readme se actualiza diariamente con un enlace a una publicación direccionada. Así es como debe tener una actualización automática de Readme.md; con acciones Go y GitHub.
Archivos con Go
Python puede ser buena herramienta, pero para algunas cosas Go es funcional. Para crear README.md, se puede obtener algo de contenido estático de un archivo existente y combinarlo con un nuevo contenido dinámico que generaremos con Go.
Así es como veremos en un archivo llamado static.mdy y lo pondremos en forma string:
// Unwrap Markdown content
content, err := ioutil.ReadFile(«static.md»)
if err != nil {
log.Fatalf(«cannot read file: %v», err)
return err
}
// Make it a string
stringyContent := string(content)
Vemos que las posibilidades del contenido dinámico solo están limitadas por la imaginación, aquí, se podrá usar el paquete reciente .github.com/mmcdole/gofeed para leer el feed RSS y obtener la publicación más reciente.
fp := gofeed.NewParser()
feed, err := fp.ParseURL(«https://victoria.dev/index.xml»)
if err != nil {
log.Fatalf(«error getting feed: %v», err)
}
// Get the freshest item
rssItem := feed.Items[0]
Para unir estos bits y producir mayores bondades, usamos fmt.Sprintf() para crear una cadena formateada.
// Whisk together static and dynamic content until stiff peaks form
blog := «Read my latest blog post: **[» + rssItem.Title + «](» + rssItem.Link + «)**»
data := fmt.Sprintf(«%s\n%s\n», stringyContent, blog)
Posteriormente, para crear un nuevo archivo a partir de esta mezcla, utilizaremos os.Create() y agregaremos file.Sync() para asegurarnos de que el Readme se escriba.
// Prepare file with a light coating of os
file, err := os.Create(«README.md»)
if err != nil {
return err
}
defer file.Close()
// Bake at n bytes per second until golden brown
_, err = io.WriteString(file, data)
if err != nil {
return err
}
return file.Sync()
Se puede hacer que esto suceda a diario con una acción de GitHub.
Correr el programa Go y calendarizar con acciones
Puedes crear un flujo de trabajo de acción de GitHub que se active tanto en un empuje a su masterrama como en una programación diaria. Aquí hay una porción del .github/workflows/update.yamlque define esto:
Puedes crear un flujo de trabajo con GitHub Action con ambos disparadores y poner una sucursal master en un horario determinado. Esta porción .github/workflows/update.yaml define esto:
on:
push:
branches:
– master
schedule:
– cron: ‘0 11 * * *’
Para ejecutar el programa Go que reconstruye el archivo README, necesitaremos una copia de nuestros archivos. Usaremos actions/checkout para esto:
steps:
– name: 🍽️ Get working copy
uses: actions/checkout@master
with:
fetch-depth: 1
Este paso ejecutará el programa Go:
– name: 🍳 Shake & bake README
run: |
cd ${GITHUB_WORKSPACE}/update/
go run main.go
Finalmente, llevaremos los archivos actualizados a nuestro repositorio. Para obtener información sobre las variables puedes visitar esta liga
– name: 🚀 Deploy
run: |
git config user.name «${GITHUB_ACTOR}»
git config user.email «${GITHUB_ACTOR}@users.noreply.github.com»
git add .
git commit -am «Update dynamic content»
git push –all -f https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git
Ahora ya se puede avanzar y agregar todo tipo de elementos dinámicos limpios a la página, sólo hay que tener cuidado con los GIF.
Leíste: Cómo automatizar el perfil de GitHub Readme, te recomendamos: Consejos para diseño en HTML y CSS accesibles
Te invitamos a que nos sigas en nuestras redes sociales: Facebook, Twitter, Instagram y Youtube con el perfil: @tortugacode