mnussbaum.base16-builder-ansible

base16-builder-ansible Build Status

Diese Rolle erstellt und gibt Base16 Themen zurück. Base16 ist ein Framework zur Generierung von Themen für eine Vielzahl von Anwendungen wie Vim, Bash oder i3 mit Farbschemata wie Tomorrow Night oder Gruvbox.

Ziel dieses Builders ist es, die Installation und Aktualisierung von Base16-Farben in verschiedenen Anwendungen zu erleichtern. Die Verwendung von Ansible als Base16-Builder bietet uns viel Flexibilität. Wir können Themen generieren und diese entweder als eigenständige Dateien speichern oder in größere Konfigurationsdateivorlagen einbetten. Dies ist besonders nützlich für Anwendungen, die nur eine einzige Konfigurationsdatei verarbeiten können, wie i3.

Anstatt vorab gerenderte Farbschema-Vorlagen herunterzuladen, erstellt diese Rolle die Vorlagen dynamisch. So können wir Base16-Farbschemata verwenden, die in älteren Vorlagen-Repos möglicherweise noch nicht vorhanden sind, und stellen sicher, dass wir immer die neueste Version vorhandener Farbschemas verwenden.

Aktuell wird Version 0.9.1 der Base16-Spezifikation implementiert.

Beispiele für die Verwendung

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

tasks:
  # Erstelle ein Farbschema und eine Vorlage und weise sie einer Variablen zu
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Es ist hilfreich, das registrierte Ergebnis einmal mit debug auszugeben, um herauszufinden,
  # wie man auf ein bestimmtes Schema und eine bestimmte Vorlage zugreift. Jedes Base16-Vorlagen-Repo (z.B.
  # "shell", "i3") kann mehrere Vorlage-Dateien enthalten, daher wird jede
  # Vorlage in dem Ergebnisobjekt unter einem etwas anderen Index-Pfad registriert.

  - debug:
      var: base16_schemes

  # Ich werde den gerenderten Inhalt zur besseren Lesbarkeit auslassen, aber das Ergebnis wird so aussehen:
  #
  # "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",
  #         ...viele weitere Farbvariablen...
  #         "scheme-author": "Chris Kempson (http://chriskempson.com)",
  #         "scheme-name": "Tomorrow Night",
  #         "scheme-slug": "tomorrow-night",
  #         "scheme-slug-underscored": "tomorrow_night"
  #     }
  #     }
  #   }
  # }

  # Du kannst die generierten Farbschemata in eine Datei schreiben oder sie in deine eigenen
  # Vorlagen rendern
  - copy:
      content: "{{ base16_schemes['schemes']['tomorrow-night']['shell']['scripts']['base16-tomorrow-night.sh'] }}"
      dest: /my/bash/profile/dir/tomorrow-night-shell.sh

  # Erstelle jede Vorlage für ein einzelnes Farbschema
  - base16_builder:
      scheme: tomorrow-night
    register: base16_schemes

  # Erstelle jedes Farbschema für eine einzelne Vorlage
  - base16_builder:
      template: shell
    register: base16_schemes

  # Erstelle jedes Farbschema für jede Vorlage
  - base16_builder: {}
    register: base16_schemes

  # Erstelle jedes Farbschema für einige ausgewählte Vorlagen
  - base16_builder:
      template:
        - shell
        - i3
        - qutebrowser
    register: base16_schemes

  # Lade die neuesten Farbschema- und Vorlagen-Quelldateien herunter, aber baue nichts
  - base16_builder:
      update: yes
      build: no

  # Lade Updates für eine einzelne Vorlage und ein Farbschema herunter und baue es neu
  - base16_builder:
      update: yes
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Wenn du dein eigenes Base16-Farbschema erstellt hast und auf dieses verweisen möchtest, bevor es
  # in die Masterliste der Schemata übernommen wird, kannst du die Masterliste forked, einen
  # Verweis auf dein Schema hinzufügen und dann deine geforkte Liste hier als Schemen-Quelle
  # verwenden. Das gleiche gilt für neue Vorlagen-Repos und die Master-Vorlagenliste. Diese Masterlisten sind verfügbar unter:
  #
  #   https://github.com/chriskempson/base16-schemes-source
  #   https://github.com/chriskempson/base16-templates-source
  #
  - base16_builder:
      scheme: mein-neues-farbschema
      template: shell
      schemes_source: http://github.com/my-user/my-schemes-source-fork
      templates_source: http://github.com/my-user/my-templates-source-fork

Optionen

scheme:
  description:
    - Setze dies auf den Namen eines Farbschemas, um nur dieses eine Schema zu bauen, anstatt alle zu bauen, was die Standardeinstellung ist
    - Nur ein einzelnes Schema zu bauen, ist viel schneller als alle zu bauen
  required: false
  type: string
  default: Alle Schemata bauen
scheme_family:
  description:
    - Setze dies auf den Namen einer Gruppe von Schemata, die in einem einzigen Repo leben (d.h. eine Familie), um nur diese Gruppe von Schemata zu bauen
    - Wenn dies nicht gesetzt ist und ein Schema-Argument übergeben wird, wird erwartet, dass der Schema-Name im Namen der Schema-Familie enthalten ist. Zum Beispiel: Die Schema-Familie "tomorrow" steht in den Schemanamen "tomorrow-night" und "tomorrow"
    - Setze dieses Argument nur, wenn der Name der Schema-Familie nicht in den Schema-Namen enthalten ist. Zum Beispiel: Die Schema-Familie "materialtheme" ist nicht im Schema-Namen "material-darker" enthalten
  required: false
  type: string
  default: Alle Schemata bauen
template:
  description:
    - Setze dies auf den Namen einer Vorlage oder eine Liste von Vorlagen-Namen, um nur diese zu bauen, anstatt alle zu bauen, was die Standardeinstellung ist
    - Nur einige Vorlagen zu bauen, ist viel schneller als alle zu bauen
  required: false
  type: list
  default: Alle Vorlagen bauen
cache_dir:
  description:
    - Übergeordnetes Verzeichnis zum Speichern von geklonten Schemata, Vorlagen und Quelldaten
    - Wird erstellt, wenn es noch nicht existiert
    - Der Standard versucht, die $XDG_CACHE_DIR-Umgebungsvariable zu verwenden, dann ein ~/.cache-Verzeichnis, und fällt zurück auf das temporäre Verzeichnis der Plattform, wenn die ersten beiden nicht existieren
  required: false
  type: string
  default: Erste verfügbare von $XDG_CACHE_DIR, $HOME/.cache oder plattformbezogenes temporäres Verzeichnis
schemes_source:
  description:
    - Git Repo URL oder lokaler Verzeichnispfad, der verwendet wird, um Schemata zu finden
    - Die Quelle muss eine list.yaml-Datei enthalten, die die Namen der Schemata den Git-URLs oder lokalen Verzeichnispfaden der Schema-Repos zuordnet
  required: false
  type: string
  default: https://github.com/chriskempson/base16-schemes-source
templates_source:
  description:
    - Git Repo URL oder lokaler Verzeichnispfad, der verwendet wird, um Vorlagen zu finden
    - Die Quelle muss eine list.yaml-Datei enthalten, die die Namen der Vorlagen den Git-URLs oder lokalen Verzeichnispfaden der Vorlagen-Repos zuordnet
  required: false
  type: string
  default: https://github.com/chriskempson/base16-templates-source
update:
  description:
    - Klone oder lade Farbschema- und Vorlagendaten
    - Standardmäßig wird alles aktualisiert, respektiert jedoch die Schema- und Vorlage-Argumente
    - Der Build lädt alle fehlenden Daten herunter, sodass du nicht _immer_ das Update aufrufen musst
  required: false
  type: bool
  default: no
build:
  description:
    - Auf "no" setzen, um das Erstellen von Farbschemas oder Vorlagen zu deaktivieren
    - Nützlich, um auf "no" zu setzen, wenn aktualisiert wird, um nur Quellen herunterzuladen
  required: false
  type: bool
  default: yes

Abhängigkeiten

  • Python 3.5 oder höher, 2.7 wird wahrscheinlich funktionieren, aber ist ungetestet

  • Ansible

  • Pystache, das du installieren kannst mit:

    pip install pystache
    

Installation

Du kannst diese Rolle mit ansible-galaxy installieren. Schau dir die ansible-galaxy-Dokumentation für alle verschiedenen Möglichkeiten an, wie du Rollen installieren kannst, aber die einfachste Methode ist einfach:

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

Nachdem du die Rolle installiert hast, musst du sie referenzieren, und dann kannst du das base16_builder-Modul verwenden, das sie bereitstellt. Hier ist ein ganz kurzes Beispiel:

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

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

Wenn du ansible-galaxy nicht verwenden möchtest oder kannst, kannst du dieses Repo klonen und direkt in deinen Ansible Rollenpfad ablegen.

Egal, wie du die Rolle installierst, vergiss nicht, auch die Pystache-Abhängigkeit zu installieren, wie oben erwähnt.

Entwicklung

Dieses Projekt verwendet Pipenv zur Installation von Abhängigkeiten. Um die Tests auszuführen:

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

Du kannst die Tests auch in einem Docker-Container gegen alle unterstützten Python-Versionen ausführen mit:

./ci

Lizenz

MIT

To Do

  • Git-Pulls parallelisieren
  • Erlaube die Verwendung unverlangter Base16-Schemata
Über das Projekt

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

Installieren
ansible-galaxy install mnussbaum.base16-builder-ansible
Lizenz
mit
Downloads
184