mnussbaum.base16-builder-ansible

base16-builder-ansible Estado de compilación

Este rol construye y devuelve temas de Base16. Base16 es un marco para generar temas para una amplia variedad de aplicaciones como Vim, Bash o i3, con esquemas de color como Tomorrow Night o Gruvbox.

El objetivo de este generador es facilitar la instalación y actualización de colores Base16 en una amplia gama de aplicaciones. Usar Ansible como generador de Base16 nos brinda mucha flexibilidad. Podemos generar temas y escribirlos como archivos independientes o incrustar el tema en plantillas de archivos de configuración más grandes. Esto es especialmente útil para aplicaciones que solo pueden manejar un solo archivo de configuración, como i3.

En lugar de descargar plantillas de esquemas de color pre-renderizadas, este rol las construye en el momento. Esto nos permite usar esquemas de color Base16 que los repositorios de plantillas más antiguos pueden no haber adoptado aún, además de asegurarnos que siempre estamos utilizando la última versión de los esquemas de color existentes.

Actualmente implementa la versión 0.9.1 de la especificación Base16.

Ejemplos de uso

---
roles:
  - mnussbaum.base16-builder-ansible

tasks:
  # Construye un único esquema de color y plantilla y lo asigna a una variable
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Es útil imprimir el resultado registrado una vez con debug para averiguar cómo
  # acceder a cualquier esquema y plantilla en particular. Cada repositorio de plantillas 
  # de Base16 (por ejemplo, "shell", "i3") puede incluir múltiples archivos de plantilla
  # para renderizar, así que cada repositorio de plantillas registrará su salida en una ruta 
  # de índice ligeramente diferente en el objeto de resultado.

  - debug:
      var: base16_schemes

  # Omitiré los contenidos renderizados por razones de legibilidad, pero el resultado se verá así:
  #
  # "base16_schemes": {
  #   "changed": true,
  #   "failed": false,
  #   "schemes": {
  #     "tomorrow-night": {
  #       "shell": {
  #         "scripts": {
  #           "base16-tomorrow-night.sh": "#!/bin/sh\n# base16-shell ..."
  #         }
  #       },
  #       "scheme-variables": {
  #         "base00-dec-b": "0.12941176470588237",
  #         "base00-dec-g": "0.12156862745098039",
  #         "base00-dec-r": "0.11372549019607843",
  #         "base00-hex": "1d1f21",
  #         "base00-hex-b": "21",
  #         "base00-hex-g": "1f",
  #         "base00-hex-r": "1d",
  #         "base00-rgb-b": "33",
  #         "base00-rgb-g": "31",
  #         "base00-rgb-r": "29",
  #         ...Muchos más variables de color...
  #         "scheme-author": "Chris Kempson (http://chriskempson.com)",
  #         "scheme-name": "Tomorrow Night",
  #         "scheme-slug": "tomorrow-night",
  #         "scheme-slug-underscored": "tomorrow_night"
  #     }
  #     }
  #   }
  # }

  # Puedes escribir los esquemas de color generados en un archivo o renderizarlos en tus
  # propias plantillas
  - copy:
      content: "{{ base16_schemes['schemes']['tomorrow-night']['shell']['scripts']['base16-tomorrow-night.sh'] }}"
      dest: /mi/directorio/perfil/bash/tomorrow-night-shell.sh

  # Construir todas las plantillas para un único esquema de color
  - base16_builder:
      scheme: tomorrow-night
    register: base16_schemes

  # Construir todos los esquemas de color para una sola plantilla
  - base16_builder:
      template: shell
    register: base16_schemes

  # Construir todos los esquemas de color para todas las plantillas
  - base16_builder: {}
    register: base16_schemes

  # Construir todos los esquemas de color para algunas plantillas seleccionadas
  - base16_builder:
      template:
        - shell
        - i3
        - qutebrowser
    register: base16_schemes

  # Descargar los últimos esquemas de color y archivos fuente de plantilla, pero no construir nada
  - base16_builder:
      update: yes
      build: no

  # Descargar actualizaciones para reconstruir una sola plantilla y esquema
  - base16_builder:
      update: yes
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Si creas tu propio esquema de color Base16 y quieres hacer referencia a él antes de que 
  # sea incluido en la lista maestra de esquemas, puedes bifurcar la lista maestra, agregar una
  # referencia a tu esquema, y luego usar tu bifurcación de lista como la fuente de esquemas
  # aquí. Lo mismo se aplica a nuevos repositorios de plantillas y la lista maestra de 
  # plantillas. Estas listas maestras están disponibles en:
  #
  #   https://github.com/chriskempson/base16-schemes-source
  #   https://github.com/chriskempson/base16-templates-source
  #
  - base16_builder:
      scheme: mi-nuevo-esquema-de-color
      template: shell
      schemes_source: http://github.com/mi-usuario/mi-bifurcacion-fuente-esquemas
      templates_source: http://github.com/mi-usuario/mi-bifurcacion-fuente-plantillas

Opciones

scheme:
  description:
    - Establece esto al nombre de un esquema de color para construir solo ese esquema, en lugar de construir todos, que es el valor por defecto
    - Construir solo un esquema es mucho más rápido que construir todos
  required: false
  type: string
  default: Construir todos los esquemas
scheme_family:
  description:
    - Establece esto al nombre de un grupo de esquemas que viven en un solo repositorio (es decir, una familia) para construir solo ese grupo de esquemas
    - Si esto no se establece, y se pasa un argumento de esquema, se espera que el nombre del esquema esté presente en el nombre de la familia de esquemas. Por ejemplo, la familia de esquemas "tomorrow" está presente en los nombres de esquema "tomorrow-night" y "tomorrow"
    - Solo establece este argumento si el nombre de la familia de esquemas no está incluido en los nombres de los esquemas. Por ejemplo, la familia de esquemas "materialtheme" no está incluida en el nombre de esquema "material-darker"
  required: false
  type: string
  default: Construir todos los esquemas
template:
  description:
    - Establece esto al nombre de una plantilla o a una lista de nombres de plantillas para construir solo ellas en lugar de construir todas, que es el valor por defecto
    - Construir solo unas pocas plantillas es mucho más rápido que construir todas
  required: false
  type: list
  default: Construir todas las plantillas
cache_dir:
  description:
    - Directorio principal para almacenar datos clonados de esquemas, plantillas y fuentes
    - Se creará si no existe ya
    - El valor por defecto busca la variable de entorno $XDG_CACHE_DIR, luego un directorio ~/.cache, y vuelve al directorio temporal de la plataforma si los dos primeros no existen
  required: false
  type: string
  default: Primer disponible de $XDG_CACHE_DIR, $HOME/.cache o directorio temporal derivado de la plataforma
schemes_source:
  description:
    - URL del repositorio Git o ruta de directorio local utilizada para encontrar esquemas
    - La fuente debe incluir un archivo list.yaml que mapea nombres de esquemas a URLs de repositorios Git o rutas de directorios locales
  required: false
  type: string
  default: https://github.com/chriskempson/base16-schemes-source
templates_source:
  description:
    - URL del repositorio Git o ruta de directorio local utilizada para encontrar plantillas
    - La fuente debe incluir un archivo list.yaml que mapea nombres de plantillas a URLs de repositorios Git o rutas de directorios locales
  required: false
  type: string
  default: https://github.com/chriskempson/base16-templates-source
update:
  description:
    - Clonar o actualizar fuentes de esquemas de color y plantillas
    - Por defecto actualizará todos los esquemas y plantillas, pero respetará los argumentos de esquema y plantilla
    - Build descargará cualquier dato que falte, por lo que nunca _necesitas_ llamar a update
  required: false
  type: bool
  default: no
build:
  description:
    - Establecer a "no" para deshabilitar la construcción de cualquier esquema o plantilla de color
    - Útil para establecer en "no" cuando se usa con update para solo descargar fuentes
  required: false
  type: bool
  default: yes

Dependencias

  • Python 3.5 o superior, 2.7 probablemente funcionará, pero no ha sido probado

  • Ansible

  • Pystache, que puedes instalar con:

    pip install pystache
    

Instalación

Puedes instalar este rol con ansible-galaxy. Consulta la documentación de ansible-galaxy para todas las diferentes formas en las que puedes instalar roles, pero la más simple es solo:

$ ansible-galaxy install mnussbaum.base16-builder-ansible

Después de haber instalado el rol, necesitas hacer referencia a él y luego puedes usar el módulo base16_builder que proporciona. Aquí hay un ejemplo muy corto de esto:

---
roles:
  - mnussbaum.base16-builder-ansible

tasks:
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

Si no quieres, o no puedes, usar ansible-galaxy, entonces puedes clonar este repositorio y colocarlo directamente en tu ruta de roles de Ansible.

De cualquier forma en la que instales el rol, no olvides también instalar la dependencia Pystache como se mencionó anteriormente.

Desarrollo

Este proyecto utiliza Pipenv para instalar dependencias. Para ejecutar las pruebas:

pip install --user pipenv
pipenv install --dev
pipenv run nose2

También puedes ejecutar las pruebas en un contenedor Docker contra todas las versiones de Python compatibles con:

./ci

Licencia

MIT

Por hacer

  • Paralelizar las descargas de git
  • Permitir que los esquemas no reclamados de Base16 también sean utilizados
Acerca del proyecto

Builds and updates Base16 color schemes and templates so that you can install them into config files and render them into own dotfile templates

Instalar
ansible-galaxy install mnussbaum.base16-builder-ansible
Licencia
mit
Descargas
184
Propietario