mnussbaum.base16-builder-ansible

base16-builder-ansible 构建状态

这个角色构建并返回Base16主题。Base16是一个为各种应用程序(如Vim、Bash或i3)生成主题的框架,提供像Tomorrow Night或Gruvbox这样的配色方案。

这个构建器的目标是让在各种应用程序中安装和更新Base16颜色变得简单。使用Ansible作为Base16构建器让我们获得了很大的灵活性。我们可以生成主题,并将其写为独立文件,或嵌入到更大的配置文件模板中。这对于只能处理单个配置文件的应用程序(如i3)尤其有用。

这个角色会动态构建颜色方案,而不是下载预渲染的模板。这使我们能够使用旧模板库可能尚未包含的Base16配色方案,并确保我们总是使用现有配色方案的最新版本。

它当前实现了Base16规范的0.9.1版本。

示例用法

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

tasks:
  # 构建一个单一的配色方案和模板,并将其赋值给一个变量
  - base16_builder:
      scheme: tomorrow-night
      template: shell
    register: base16_schemes

  # 一次打印注册的结果,以帮助调试,确定如何访问任何特定的方案和模板。每个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",
  #         "base00-hex-b": "21",
  #         "base00-hex-g": "1f",
  #         "base00-hex-r": "1d",
  #         "base00-rgb-b": "33",
  #         "base00-rgb-g": "31",
  #         "base00-rgb-r": "29",
  #         ...更多颜色变量...
  #         "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:
    - 用于查找方案的Git仓库URL或本地目录路径
    - 源必须包含一个list.yaml文件,该文件将方案名称映射到方案库Git URLs或本地目录路径
  required: false
  type: string
  default: https://github.com/chriskempson/base16-schemes-source
templates_source:
  description:
    - 用于查找模板的Git仓库URL或本地目录路径
    - 源必须包含一个list.yaml文件,该文件将模板名称映射到模板库Git URLs或本地目录路径
  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拉取
  • 允许使用未被认领的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
下载
184
拥有者