mnussbaum.base16-builder-ansible
base16-builder-ansible 
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
Por hacer
- Paralelizar las descargas de git
- Permitir que los esquemas no reclamados de Base16 también sean utilizados
Builds and updates Base16 color schemes and templates so that you can install them into config files and render them into own dotfile templates
ansible-galaxy install mnussbaum.base16-builder-ansible