mnussbaum.base16-builder-ansible

base16-builder-ansible État de construction

Ce rôle construit et renvoie des thèmes Base16. Base16 est un cadre pour générer des thèmes pour une grande variété d'applications comme Vim, Bash ou i3, avec des schémas de couleurs comme Tomorrow Night ou Gruvbox.

L'objectif de cet outil est de faciliter l'installation et la mise à jour des couleurs Base16 dans de nombreuses applications. Utiliser Ansible comme constructeur Base16 nous donne beaucoup de flexibilité. Nous pouvons générer des thèmes et soit les écrire comme des fichiers autonomes, soit intégrer le thème dans des modèles de fichiers de configuration plus grands. C'est particulièrement utile pour les applications qui ne peuvent gérer qu'un seul fichier de configuration, comme i3.

Au lieu de télécharger des modèles de schémas de couleurs pré-rendus, ce rôle les construit à la volée. Cela nous permet d'utiliser des schémas de couleurs Base16 que d'anciens dépôts de modèles n'auraient peut-être pas encore ajoutés, tout en garantissant que nous utilisons toujours la dernière version des schémas de couleurs existants.

Actuellement, il implémente la version 0.9.1 de la spécification Base16.

Exemples d'utilisation

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

tasks:
  # Construire un seul schéma de couleurs et modèle et l'assigner à une variable
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Il est utile d'imprimer le résultat enregistré une fois avec debug pour comprendre comment
  # accéder à un schéma et un modèle particuliers. Chaque dépôt de modèles Base16 (par exemple,
  # "shell", "i3") peut inclure plusieurs fichiers de modèle à rendre, donc chaque
  # dépôt de modèles enregistrera leur sortie à un chemin d'index légèrement différent dans
  # l'objet de résultat.

  - debug:
      var: base16_schemes

  # Je vais passer les contenus rendus pour des raisons de lisibilité, mais le résultat ressemblera à ceci :
  #
  # "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",
  #         ...
  #         "scheme-author": "Chris Kempson (http://chriskempson.com)",
  #         "scheme-name": "Tomorrow Night",
  #         "scheme-slug": "tomorrow-night",
  #     }
  #     }
  #   }
  # }

  # Vous pouvez écrire les schémas de couleurs générés dans un fichier ou les rendre dans vos
  # propres modèles
  - copy:
      content: "{{ base16_schemes['schemes']['tomorrow-night']['shell']['scripts']['base16-tomorrow-night.sh'] }}"
      dest: /mon/dossier/profil/bash/tomorrow-night-shell.sh

  # Construire chaque modèle pour un seul schéma de couleurs
  - base16_builder:
      scheme: tomorrow-night
    register: base16_schemes

  # Construire chaque schéma de couleurs pour un seul modèle
  - base16_builder:
      template: shell
    register: base16_schemes

  # Construire chaque schéma de couleurs pour chaque modèle
  - base16_builder: {}
    register: base16_schemes

  # Construire chaque schéma de couleurs pour quelques modèles sélectionnés
  - base16_builder:
      template:
        - shell
        - i3
        - qutebrowser
    register: base16_schemes

  # Télécharger les derniers fichiers sources de schéma de couleurs et de modèle, mais ne construit rien
  - base16_builder:
      update: yes
      build: no

  # Télécharger les mises à jour pour et reconstruire un seul modèle et schéma
  - base16_builder:
      update: yes
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Si vous créez votre propre schéma de couleurs Base16 et souhaitez le faire référence avant qu'il
  # ne soit intégré dans la liste principale des schémas, vous pouvez forker la liste principale, ajouter une
  # référence à votre schéma, puis utiliser votre liste fork comme source de schémas ici. Il en va de même pour les nouveaux dépôts de modèles et la liste principale
  # des modèles. Ces listes principales sont disponibles sur :
  #
  #   https://github.com/chriskempson/base16-schemes-source
  #   https://github.com/chriskempson/base16-templates-source
  #
  - base16_builder:
      scheme: ma-nouvelle-couleur
      template: shell
      schemes_source: http://github.com/mon-utilisateur/mon-sources-de-schéma-fork
      templates_source: http://github.com/mon-utilisateur/mes-sources-de-modèles-fork

Options

scheme:
  description:
    - Définissez ceci sur le nom d'un schéma de couleurs pour ne construire que ce schéma, plutôt que de construire tous, ce qui est le défaut
    - Ne construire qu'un seul schéma est beaucoup plus rapide que de construire tous
  required: false
  type: string
  default: Construire tous les schémas
scheme_family:
  description:
    - Définissez ceci sur le nom d'un groupe de schémas qui vivent dans un seul dépôt (c'est-à-dire une famille) pour ne construire que ce groupe de schémas
    - Si cela n'est pas défini, et qu'un argument de schéma est passé, il est attendu que le nom du schéma soit présent dans le nom de la famille de schéma. Par exemple, la famille de schémas "tomorrow" est présente dans les noms de schéma "tomorrow-night" et "tomorrow"
    - Ne définissez cet argument que si le nom de la famille de schémas n'est pas inclus dans les noms de schéma. Par exemple, la famille de schémas "materialtheme" n'est pas incluse dans le nom de schéma "material-darker"
  required: false
  type: string
  default: Construire tous les schémas
template:
  description:
    - Définissez ceci sur le nom d'un modèle ou une liste de noms de modèles pour ne les construire que, au lieu de tous, ce qui est le défaut
    - Ne construire que quelques modèles est beaucoup plus rapide que de construire tous
  required: false
  type: list
  default: Construire tous les modèles
cache_dir:
  description:
    - Répertoire parent pour stocker les données clonées de schéma, modèle et source
    - Il sera créé s'il n'existe pas déjà
    - La valeur par défaut recherche la variable d'environnement $XDG_CACHE_DIR, puis un répertoire ~/.cache, et revient au répertoire temporaire de la plateforme si les deux premiers n'existent pas
  required: false
  type: string
  default: Premier disponible de $XDG_CACHE_DIR, $HOME/.cache, ou répertoire temporaire dérivé de la plateforme
schemes_source:
  description:
    - URL de dépôt Git ou chemin de répertoire local utilisé pour trouver des schémas
    - La source doit inclure un fichier list.yaml qui mappe les noms de schéma aux URL Git de dépôt de schéma ou aux chemins de répertoire locaux
  required: false
  type: string
  default: https://github.com/chriskempson/base16-schemes-source
templates_source:
  description:
    - URL de dépôt Git ou chemin de répertoire local utilisé pour trouver des modèles
    - La source doit inclure un fichier list.yaml qui mappe les noms de modèles aux URL Git de dépôt de modèle ou aux chemins de répertoire locaux
  required: false
  type: string
  default: https://github.com/chriskempson/base16-templates-source
update:
  description:
    - Cloner ou tirer les sources des schémas de couleurs et des modèles
    - Par défaut, mettra à jour tous les schémas et modèles, mais respectera les arguments de schémas et de modèles
    - La construction téléchargera toutes les données manquantes, donc vous n'avez jamais besoin d'appeler la mise à jour
  required: false
  type: bool
  default: no
build:
  description:
    - Définir sur "no" pour désactiver la construction de tout schéma de couleurs ou modèle
    - Utile à définir sur "no" lorsqu'il est utilisé avec mise à jour pour ne télécharger que les sources
  required: false
  type: bool
  default: yes

Dépendances

  • Python 3.5 ou supérieur, 2.7 fonctionnera probablement, mais n'est pas testé

  • Ansible

  • Pystache, que vous pouvez installer avec :

    pip install pystache
    

Installation

Vous pouvez installer ce rôle avec ansible-galaxy. Consultez la documentation ansible-galaxy pour toutes les différentes façons d'installer des rôles, mais la plus simple est juste :

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

Après avoir installé le rôle, vous devez le référencer, puis vous pouvez utiliser le module base16_builder qu'il fournit. Voici un très court exemple :

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

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

Si vous ne voulez pas, ou ne pouvez pas, utiliser ansible-galaxy, vous pouvez cloner ce dépôt et le déposer directement dans votre chemin de rôles Ansible.

Dans tous les cas, n'oubliez pas d'installer également la dépendance Pystache mentionnée ci-dessus.

Développement

Ce projet utilise Pipenv pour installer les dépendances. Pour exécuter les tests :

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

Vous pouvez également exécuter les tests dans un conteneur Docker contre toutes les versions de Python prises en charge avec :

./ci

Licence

MIT

À faire

  • Paralléliser les tirages git
  • Permettre également d'utiliser les schémas Base16 non réclamés
À propos du projet

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

Installer
ansible-galaxy install mnussbaum.base16-builder-ansible
Licence
mit
Téléchargements
184
Propriétaire