mnussbaum.base16-builder-ansible

base16-builder-ansible Status Budowy

Ta rola buduje i zwraca motywy Base16. Base16 to framework do generowania motywów dla różnych aplikacji, takich jak Vim, Bash czy i3, z różnymi schematami kolorów, takimi jak Tomorrow Night czy Gruvbox.

Celem tego narzędzia jest ułatwienie instalacji i aktualizacji kolorów Base16 w różnych aplikacjach. Użycie Ansible jako budowniczego Base16 daje nam dużą elastyczność. Możemy generować motywy i zapisywać je jako niezależne pliki lub osadzać je w większych szablonach plików konfiguracyjnych. Jest to szczególnie przydatne dla aplikacji, które mogą obsługiwać tylko jeden plik konfiguracyjny, jak i3.

Zamiast pobierać wstępnie przygotowane szablony schematów kolorów, ta rola buduje je na bieżąco. Dzięki temu możemy korzystać z schematów kolorów Base16, które mogą być niedostępne w starszych repozytoriach szablonów, a także zapewnia to, że zawsze używamy najnowszej wersji istniejących schematów kolorów.

Obecnie implementuje wersję 0.9.1 specyfikacji Base16.

Przykładowe użycia

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

tasks:
  # Budowanie pojedynczego schematu kolorów i szablonu oraz przypisanie go do zmiennej
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Pomocne jest wydrukowanie zarejestrowanego wyniku raz za pomocą debugowania, aby ustalić, jak
  # uzyskać dostęp do konkretnego schematu i szablonu. Każde repozytorium szablonów Base16 (np.
  # "shell", "i3") może zawierać wiele plików szablonów do renderowania, więc każde
  # repozytorium szablonów zarejestruje swój wynik pod nieco inną ścieżką indeksu w
  # obiekcie wynikowym.

  - debug:
      var: base16_schemes

  # Poniżej przedstawiono zagadnienia związane z wyjściem, wynik będzie wyglądał mniej więcej tak:
  #
  # "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",
  #         ...
  #         "scheme-author": "Chris Kempson (http://chriskempson.com)",
  #         "scheme-name": "Tomorrow Night",
  #         "scheme-slug": "tomorrow-night",
  #         "scheme-slug-underscored": "tomorrow_night"
  #     }
  #     }
  #   }
  # }

  # Możesz zapisać wygenerowane schematy kolorów do pliku lub wprowadzić je do własnych
  # szablonów
  - copy:
      content: "{{ base16_schemes['schemes']['tomorrow-night']['shell']['scripts']['base16-tomorrow-night.sh'] }}"
      dest: /my/bash/profile/dir/tomorrow-night-shell.sh

  # Budowanie wszystkich szablonów dla jednego schematu kolorów
  - base16_builder:
      scheme: tomorrow-night
    register: base16_schemes

  # Budowanie każdego schematu kolorów dla jednego szablonu
  - base16_builder:
      template: shell
    register: base16_schemes

  # Budowanie każdego schematu kolorów dla każdego szablonu
  - base16_builder: {}
    register: base16_schemes

  # Budowanie każdego schematu kolorów dla kilku wybranych szablonów
  - base16_builder:
      template:
        - shell
        - i3
        - qutebrowser
    register: base16_schemes

  # Pobieranie najnowszych kolorów i szablonów, ale nie budowanie niczego
  - base16_builder:
      update: yes
      build: no

  # Pobieranie aktualizacji dla i odbudowa jednego szablonu i schematu
  - base16_builder:
      update: yes
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # Jeśli stworzysz własny schemat kolorów Base16 i chcesz go uwzględnić przed jego
  # dodaniem do głównej listy schematów, możesz sklonować tę listę, dodać
  # odniesienie do swojego schematu, a następnie użyć swojego fork jako źródła schematu
  # tutaj. To samo dotyczy nowych repozytoriów szablonów i głównej listy
  # szablonów. Te główne listy są dostępne pod adresem:
  #
  #   https://github.com/chriskempson/base16-schemes-source
  #   https://github.com/chriskempson/base16-templates-source
  #
  - base16_builder:
      scheme: my-brand-new-color-scheme
      template: shell
      schemes_source: http://github.com/my-user/my-schemes-source-fork
      templates_source: http://github.com/my-user/my-templates-source-fork

Opcje

scheme:
  description:
    - Ustaw  wartość na nazwę schematu kolorów, aby zbudować tylko ten jeden schemat, zamiast budować wszystkie, co jest domyślną opcją
    - Budowanie jednego schematu jest znacznie szybsze niż budowanie wszystkich
  required: false
  type: string
  default: Buduj wszystkie schematy
scheme_family:
  description:
    - Ustaw  wartość na nazwę grupy schematów, które znajdują się w jednym repozytorium (tzn. rodzina), aby zbudować tylko  grupę schematów
    - Jeśli ta opcja jest nieustawiona, a przekazany jest argument schematu, to oczekuje się, że nazwa schematu jest obecna w nazwie rodziny schematów. Np. Rodzina schematów "tomorrow" jest obecna w nazwach schematów "tomorrow-night" i "tomorrow"
    - Ustaw  opcję tylko wtedy, gdy nazwa rodziny schematów nie jest zawarta w nazwach schematów. Np. rodzina schematów "materialtheme" nie jest uwzględniona w nazwie schematu "material-darker"
  required: false
  type: string
  default: Buduj wszystkie schematy
template:
  description:
    - Ustaw  wartość na nazwę szablonu lub listę nazw szablonów, aby zbudować je zamiast budować wszystkie, co jest domyślną opcją
    - Budowanie kilku szablonów jest znacznie szybsze niż budowanie wszystkich
  required: false
  type: list
  default: Buduj wszystkie szablony
cache_dir:
  description:
    - Rodzicowski katalog do przechowywania sklonowanych schematów, szablonów i danych źródłowych
    - Zostanie utworzony, jeśli jeszcze nie istnieje
    - Domyślna wartość szuka zmiennej środowiskowej $XDG_CACHE_DIR, a następnie katalogu ~/.cache, a w ostateczności w katalogu tymczasowym systemu, jeśli pierwsze dwa nie istnieją
  required: false
  type: string
  default: Pierwszy dostępny z $XDG_CACHE_DIR, $HOME/.cache lub katalogu tymczasowego zależnego od platformy
schemes_source:
  description:
    - URL repozytorium Git lub lokalna ścieżka katalogu używana do znalezienia schematów
    - Źródło musi zawierać plik list.yaml, który mapuje nazwy schematów na adresy URL repozytoriów Git lub lokalne ścieżki katalogów
  required: false
  type: string
  default: https://github.com/chriskempson/base16-schemes-source
templates_source:
  description:
    - URL repozytorium Git lub lokalna ścieżka katalogu używana do znalezienia szablonów
    - Źródło musi zawierać plik list.yaml, który mapuje nazwy szablonów na adresy URL repozytoriów Git lub lokalne ścieżki katalogów
  required: false
  type: string
  default: https://github.com/chriskempson/base16-templates-source
update:
  description:
    - Klonowanie lub pobieranie kolorów schematów i źródeł szablonów
    - Domyślnie zaktualizuje wszystkie schematy i szablony, ale uwzględni argumenty schematu i szablonu
    - Budowanie pobierze wszelkie brakujące dane, więc nie potrzebujesz wywoływać aktualizacji
  required: false
  type: bool
  default: no
build:
  description:
    - Ustaw "no", aby wyłączyć budowanie jakichkolwiek schematów kolorów lub szablonów
    - Przydatne, aby ustawić "no" podczas używania z aktualizacją, aby tylko pobrać źródła
  required: false
  type: bool
  default: yes

Zależności

  • Python 3.5 lub wyższy, Python 2.7 prawdopodobnie również będzie działać, ale nie był testowany

  • Ansible

  • Pystache, który możesz zainstalować za pomocą:

    pip install pystache
    

Instalacja

Możesz zainstalować tę rolę za pomocą ansible-galaxy. Sprawdź dokumentację ansible-galaxy, aby zobaczyć różne sposoby instalacji ról, ale najprostsza metoda to:

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

Po zainstalowaniu roli musisz ją zareferować, a następnie możesz używać modułu base16_builder, który ona udostępnia. Oto bardzo krótki przykład:

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

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

Jeśli nie chcesz lub nie możesz używać ansible-galaxy, możesz sklonować to repozytorium i umieścić je bezpośrednio w swojej ścieżce ról Ansible.

W każdym przypadku, w którym zainstalujesz rolę, nie zapomnij również zainstalować zależności Pystache, jak wspomniano powyżej.

Rozwój

Ten projekt używa Pipenv do instalacji zależności. Aby uruchomić testy:

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

Możesz także uruchomić testy w kontenerze Docker dla wszystkich wspieranych wersji Pythona za pomocą:

./ci

Licencja

MIT

Do zrobienia

  • Równoległe pobieranie z repozytoriów Git
  • Umożliwienie użycia niedopuszczonych schematów Base16
O projekcie

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

Zainstaluj
ansible-galaxy install mnussbaum.base16-builder-ansible
Licencja
mit
Pobrania
184
Właściciel