julio 29, 2020

Cómo automatizar el perfil de GitHub Readme

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.

GitHub Readme
GitHub Readme

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