Skip to content
This repository has been archived by the owner on Sep 17, 2024. It is now read-only.
José M. Requena Plens edited this page Dec 14, 2022 · 6 revisions

[WORKING]

Bienvenidx a la wiki del repositorio mastodon_official_profiles.

Aquí podrás encontrar información sobre el funcionamiento interno del repositorio, la automatización para generar los textos informativos y las tablas, etc.

¿Como colaborar?

Realiza un fork y edita el repositorio en tu cuenta, cuando hayas terminado los cambios propón los cambios en este repositorio para que se puedan incorporar.

  • Para añadir nuevas cuentas, edita el archivo ".csv" que corresponda con los datos de cada columna (puedes omitir algunos, pero nombre, cuenta de mastodon, país y fecha de creación son obligatorios). Si no existe aun la categoría o el país en la base de datos, crea el nuevo archivo o carpeta.

  • Puedes colaborar mejorando el código que automatiza la creación de los archivos README o mejorando la web de la tabla dinámica

  • Si tienes alguna otra aportación siempre será bienvenida, esto trata de construirlo en comunidad.

Datos .CSV

Los datos se organizan en archivos csv, cada archivo corresponde a una categoría y estos archivo están agrupados en carpetas de cada país. Si vas a añadir cuentas a la base de datos, edita los archivos csv que hay en las carpetas de los países, los otros csv (MAIN.csv y MAIN_web.csv) se regeneran automáticamente uniendo los archivos de cada país.

También puedes crear nuevas carpetas para países o nuevos archivos para categorías, siéntete libre de aportar cualquier cosa.

Automatización

La automatización permite actualizar los archivos README del repositorio utilizando los archivos .csv y otros archivos como CONTRIBUTORS.yml.

Esta automatización se realiza mediante un script escrito en Python main.py y con GitHub Actions es posible ejecutar el script en los servidores de GitHub y así mantener todo actualizado al instante cuando, por ejemplo, se acepta un Pull Request. Para ejecutar el script, este repositorio utiliza el workflow run_python.yml.

Workflow

Lo que realiza el workflow utilizado en la automatización es:

  1. Espera a cualquier cambio en el repositorio.
  2. Ejecuta un sistema Ubuntu.
  3. Configura el sistema para utilizar Python.
  4. Añade a la cache los paquetes instalados para reducir el tiempo de ejecución en futuras ejecuciones.
  5. Instala los paquetes necesarios indicados en el archivo requirements.txt.
  6. Ejecuta el script main.py.
  7. Crea el commit.
  8. Escribe los cambios en el repositorio.

A continuación se muestra el código completo del workflow.

name: Generate MAIN.CSV and README

on:
  push:
    branches: [ main ]
  workflow_dispatch:

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    # Check out repository under $GITHUB_WORKSPACE, so the job can access it
    - uses: actions/checkout@v3

    # Run using Python 3.11
    - name: Set up Python 3.11
      uses: actions/setup-python@v4
      with:
        python-version: '3.11'
        cache: 'pip'
        architecture: 'x64'

    # Cache dependencies. From:
    # https://github.com/actions/cache/blob/master/examples.md#python---pip
    - uses: actions/cache@v3
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    # Install dependencies with `pip`
    - name: Install requirements
      run: |
        python3 -m pip install --upgrade pip setuptools wheel
        python3 -m pip install -r requirements.txt

    # Run Python script
    - name: Generate data
      run: |
        python3 --version
        python3 main.py

    # Commit files
    - name: commit files
      run: |
        git config --local user.email "[email protected]"
        git config --local user.name "jmrplens"
        git add -A
        git diff-index --quiet HEAD || (git commit -a -m "updated logs" --allow-empty)

    # Push changes to repo
    - name: push changes
      uses: ad-m/github-push-action@master
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}

Archivos automatizados

Los archivos que se generan automáticamente son:

Algunas partes de estos archivos se cargan desde la carpeta .resources, como las distintas partes de los README (cabecera, cuerpo, pie, etc).

Tablas

Las tablas que muestran las cuentas de mastodon en los README según categoría y países se generan con la función _generate que se encuentra en el archivo makereadmes.py.

Colaboradorxs

La tabla de colaboradores que se muestra en los README se construye a partir de los datos incluidos en CONTRIBUTORS.yml. Se estructura del siguiente modo:

  1. name - Nombre
  2. avatar - Fotografia a mostrar
  3. github_user - Si es usuario de GitHub, al añadir su usuario se mostrará un botón para ver las aportaciones realizadas.
  4. links - Una lista de enlaces: web, redes sociales, etc. Se debe escribir el servicio en minúsculas: web, mastodon, instagram, etc.

Es importante mantener la tabulación, sino no se cargarán correctamente los datos. Se puede omitir cualquier dato si no se quiere incluir.

- name: Jaz-Michael King
  avatar: https://avatars.githubusercontent.com/u/3419832
  github_user: jazmichaelking
  links:
    web: https://jaz.co.uk/
    mastodon: https://toot.wales/@jaz
    linkedin: https://www.linkedin.com/in/jmking/
- name: Jorge Saturno
  avatar: https://avatars.githubusercontent.com/u/7603402
  github_user: jorgesat
  links:
    web: https://kumulonimb.us/
    mastodon: [https://red.niboe.info/@jorge,https://scholar.social/@jorge]
    orcid: https://orcid.org/0000-0002-3761-3957
- name: jmrplens
  avatar: https://avatars.githubusercontent.com/u/28966312
  github_user: jmrplens
  links:
    web: https://jmrplens.github.io/
    mastodon: https://red.niboe.info/@jmrplens
    pixelfed: https://pixelfed.social/jmrplens
    linkedin: https://www.linkedin.com/in/jmrplens
    scholar: https://scholar.google.com/citations?user=9b0kPaUAAAAJ
    work: https://www.i3m-stim.i3m.upv.es/research/ultrasound-medical-and-industrial-laboratory-umil/
- name: Lydia Gil
  avatar: https://static.mstdn.science/accounts/avatars/109/349/104/436/155/936/original/6811c637ba69ede6.jpg
  links:
    web: https://socialmediaeninvestigacion.com
    mastodon: https://mstdn.science/@TuSocialMedia
    linkedin: https://www.linkedin.com/in/lydiamargaritagil
    instagram: https://www.instagram.com/tusocialmedia/
    twitter: https://twitter.com/TuSocialMedia
    facebook: https://www.facebook.com/TuSocialMediaCiencia

La función que procesa estos datos se encuentra en makereadmes.py, la función se llama _contributors_table, se ejecuta desde la función _makefooter que se utiliza en las funciones para crear el README principal y los README en inglés y en español.

README's

Como en las anteriores automatizaciones, los archivos README se generan con una función ubicada en el script makereadmes.py.

En el caso del README principal, la función que lo crea es create_main_readme y los README_xx en inglés y español los crea la función create_localised_readme.

Clone this wiki locally