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

Лицензия

MIT

Чтобы сделать

  • Параллелизация 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
Лицензия
mit
Загрузки
172
Владелец