base16-builder-ansible
base16-builder-ansible
Эта роль создает и возвращает темы Base16. Base16 — это фреймворк для генерации тем для самых разнообразных приложений, таких как Vim, Bash или i3, с цветовыми схемами, такими как Tomorrow Night или Gruvbox.
Цель этого сборщика — упростить установку и обновление цветов Base16 для множества приложений. Использование Ansible в качестве сборщика Base16 дает нам много гибкости. Мы можем генерировать темы и либо записывать их в отдельные файлы, либо встраивать тему в более крупные шаблоны конфигурационных файлов. Это особенно полезно для приложений, которые могут обрабатывать только один конфигурационный файл, таких как i3.
Вместо загрузки заранее подготовленных шаблонов цветовых схем, эта роль создает их на лету. Это позволяет нам использовать цветовые схемы Base16, которые старые репозитории шаблонов могли еще не включить, а также гарантирует, что мы всегда используем последнюю версию существующих цветовых схем.
В настоящее время реализует версию 0.9.1 спецификации Base16.
Примеры использования
---
roles:
- mnussbaum.base16-builder-ansible
tasks:
# Создаем одну цветовую схему и шаблон и сохраняем их в переменной
- base16_builder:
scheme: tomorrow-night
template: shell
register: base16_schemes
# Полезно один раз вывести зарегистрированный результат с помощью debug, чтобы понять, как
# получить доступ к какой-либо конкретной схеме и шаблону. Каждый репозиторий шаблонов Base16 (например,
# "shell", "i3") может включать несколько файлов шаблонов для рендеринга, поэтому каждый
# репозиторий шаблонов зарегистрирует свой результат по немного разному индексу в
# объекте результата.
- debug:
var: base16_schemes
# Я опущу рендеренные содержимое для удобочитаемости, но результат будет выглядеть так:
#
# "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",
# "scheme-slug-underscored": "tomorrow_night"
# }
# }
# }
# }
# Вы можете записать сгенерированные цветовые схемы в файл или встроить их в собственные
# шаблоны
- copy:
content: "{{ base16_schemes['schemes']['tomorrow-night']['shell']['scripts']['base16-tomorrow-night.sh'] }}"
dest: /my/bash/profile/dir/tomorrow-night-shell.sh
# Создаем каждый шаблон для одной цветовой схемы
- base16_builder:
scheme: tomorrow-night
register: base16_schemes
# Создаем каждую цветовую схему для одного шаблона
- base16_builder:
template: shell
register: base16_schemes
# Создаем каждую цветовую схему для каждого шаблона
- base16_builder: {}
register: base16_schemes
# Создаем каждую цветовую схему для нескольких выбранных шаблонов
- base16_builder:
template:
- shell
- i3
- qutebrowser
register: base16_schemes
# Загружаем последние файлы источников цветовых схем и шаблонов, но ничего не создаем
- base16_builder:
update: yes
build: no
# Загружаем обновления и пересоздаем один шаблон и схему
- base16_builder:
update: yes
scheme: tomorrow-night
template: shell
register: base16_schemes
# Если вы создаете свою собственную цветовую схему Base16 и хотите сослаться на нее перед
# тем, как она будет включена в основной список схем, вы можете сделать форк основного списка, добавить
# ссылку на свою схему, а затем использовать свой заготовленный список в качестве аргумента источника схем
# здесь. То же самое относится к новым репозиториям шаблонов и к основному списку шаблонов. Основные списки доступны по
#
# 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
Опции
scheme:
description:
- Установите это значение на имя цветовой схемы, чтобы создать только эту одну схему, а не все, что является значением по умолчанию
- Создание одной схемы гораздо быстрее, чем создание всех
required: false
type: string
default: Создать все схемы
scheme_family:
description:
- Установите это значение на имя группы схем, которые находятся в одном репозитории (т.е. семье), чтобы создать только эту группу схем
- Если это значение не установлено, и передали аргумент схемы, ожидается, что имя схемы присутствует в имени семейства схем. Например, семейству схем «tomorrow» соответствуют имена схем «tomorrow-night» и «tomorrow»
- Устанавливайте этот аргумент только если имя семейства схем не включено в названия схем. Например, семейству схем «materialtheme» не соответствует имя схемы «material-darker»
required: false
type: string
default: Создать все схемы
template:
description:
- Установите это значение на имя шаблона или список имен шаблонов, чтобы создать их, а не создавать все, что является значением по умолчанию
- Создание нескольких шаблонов гораздо быстрее, чем создание всех
required: false
type: list
default: Создать все шаблоны
cache_dir:
description:
- Родительский каталог для хранения клонированных схем, шаблонов и данных источников
- Он будет создан, если еще не существует
- По умолчанию ищет переменную окружения $XDG_CACHE_DIR, затем каталог ~/.cache, и в случае их отсутствия используется временный каталог платформы
required: false
type: string
default: Первый доступный из $XDG_CACHE_DIR, $HOME/.cache или временного каталога платформы
schemes_source:
description:
- URL Git репозитория или путь к локальному каталогу, используемый для поиска схем
- Источник должен включать файл list.yaml, который отображает имена схем на Git URL репозиториев схем или пути к локальным каталогам
required: false
type: string
default: https://github.com/chriskempson/base16-schemes-source
templates_source:
description:
- URL Git репозитория или путь к локальному каталогу, используемый для поиска шаблонов
- Источник должен включать файл list.yaml, который отображает имена шаблонов на Git URL репозиториев шаблонов или пути к локальным каталогам
required: false
type: string
default: https://github.com/chriskempson/base16-templates-source
update:
description:
- Клонировать или обновить источники цветовых схем и шаблонов
- По умолчанию обновляются все схемы и шаблоны, но будут уважаться аргументы схем и шаблонов
- Создание загрузит любые отсутствующие данные, поэтому вам никогда не нужно вызывать обновление
required: false
type: bool
default: no
build:
description:
- Установите значение "no", чтобы отключить создание любых цветовых схем или шаблонов
- Полезно установить "no", когда используется с обновлением, чтобы только загрузить источники
required: false
type: bool
default: yes
Зависимости
Python 3.5 или выше, 2.7 вероятно будет работать, но не протестировано
Ansible
Pystache, который вы можете установить с помощью:
pip install pystache
Установка
Вы можете установить эту роль с помощью
ansible-galaxy
. Ознакомьтесь с
документацией ansible-galaxy
для всех различных способов установки ролей, но самый
простой способ это просто:
$ ansible-galaxy install mnussbaum.base16-builder-ansible
После установки роли вам нужно на нее сослаться, и затем вы сможете использовать
модуль base16_builder
, который она предоставляет. Вот очень короткий пример этого:
---
roles:
- mnussbaum.base16-builder-ansible
tasks:
- base16_builder:
scheme: tomorrow-night
template: shell
register: base16_schemes
Если вы не хотите или не можете использовать ansible-galaxy
, вы можете клонировать этот
репозиторий и разместить его непосредственно в вашем пути ролей Ansible.
В любом случае, как бы вы ни устанавливали роль, не забудьте также установить зависимость Pystache, как упоминалось выше.
Разработка
Этот проект использует Pipenv для установки зависимостей. Чтобы запустить тесты:
pip install --user pipenv
pipenv install --dev
pipenv run nose2
Вы также можете запускать тесты в контейнере Docker с поддержкой всех версий Python:
./ci
Лицензия
Чтобы сделать
- Параллелизация git pulls
- Позволить использовать также неконтролируемые схемы 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