mnussbaum.base16-builder-ansible
base16-builder-ansible 
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 tę 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 tę wartość na nazwę grupy schematów, które znajdują się w jednym repozytorium (tzn. rodzina), aby zbudować tylko tę 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 tę 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 tę 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
Do zrobienia
- Równoległe pobieranie z repozytoriów Git
- Umożliwienie użycia niedopuszczonych schematów Base16
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