1 个不稳定版本
0.1.0 | 2024年1月23日 |
---|
#156 在 配置
17KB
260 行
Dotctl
dotctl
是一个用于管理活动程序配置文件(又称 "dotfiles")的命令行工具。它与一个专门的目录协同工作,该目录集中配置位置,同时允许它们适当链接
用法
您的 "dotfiles" 仓库
此工具旨在对个人的 "dotfile" 仓库保持中立。文件存储和/或检索不由此工具处理。无论您是否使用git管理实际的仓库,还是在云服务器上为 "dotfiles" 预留专用位置,此工具都可以帮助设置这些配置。
如前所述,"dotfile" 目录的布局和结构无关紧要。目前的唯一假设是只有一个仓库包含 "dotfiles"。这是有意为之,因为该工具应能够集成到现有设置中,而无需进行大量修改。可能需要一些初始设置才能使一切顺利运行,但希望此类工作主要围绕 dotctl
应用程序进行,而不是针对现有内容。
您的 dotctl
配置
目前,支持的唯一配置格式是 YAML,但以后可能会支持更多格式。 dotctl
的配置由两部分组成:选项部分和要与之一起工作的配置列表。如果配置不在该列表中,dotctl
就不知道它。
配置选项
本节为 dotctl
可能会使用的一些项目分配值。目前,这里只有一个项目:此配置所属的 "dotfile" 仓库的位置。
options:
repository: "~/.dotfiles"
这里的值应该是包含 "dotfiles" 的目录的完整路径。它应该是绝对的,但为了方便,还包括了对 ~
简写的支持。
配置应用程序
应用程序配置是 dotctl
能够与之一起工作的列表中的对象。每个配置都需要指定一些信息以确定
- 如何设置配置
- 是否允许/在当前系统上安全执行
配置设置的指令指定为创建“链接”的列表。链接将按顺序创建,直到设置过程完成。安全性由当前操作系统名称和用户分配的特定配置状态决定。
configuratoins:
- name: "bash" # This is the name specified on the command line. Should be unique, but not enforced.
status: Ready | Unused # Ready would indicate configuration is ok to use, while unused would indicate the configuration has been archived
os: linux # Operating system configuration is allowed to be installed on. Cross platform configuration should make separate entries
links: # The links to create with this configuration
source: "config.sh" # Path to *real* file. Can be specified relative to the repository option or as an absolute path
target: "~/.bashrc" # Path to place the symlink/copy. Should be absolute with `~` shorthand supported
mode: copy # The linking method to use. Can be copy, hard, or soft
# Copy: will create a copy of source and place it at target
# Soft: will create a soft link (or symlink) at target pointing to source
# Hard: will create a hard link at target pointing to source
# More links to follow if needed
# More configurations to follow if needed
配置旨在指定如何导航当前“dotfile”仓库,而不是将布局或结构强加给用户。它有望扩展以能够处理更复杂的应用程序配置。
示例
配置的完整示例可能如下所示。请注意,单个链接的名称是可选的。
options:
repository: ~/.dotfiles
configurations:
- name: bash
status: Ready
os: linux
links:
- name: init
source: bash/init.sh
target: ~/.bashrc
mode: Soft
- name: aliases
source: bash/aliases.sh
target: ~/.aliases
mode: Hard
- name: functions
source: bash/functions.sh
target: ~/.functions
mode: Hard
- name: bash
status: Unused
os: macos
links:
- name: init
source: bash/init.sh
target: ~/.bashrc
mode: Soft
- name: aliases
source: bash/aliases.sh
target: ~/.aliases
mode: Hard
- name: functions
source: bash/functions.sh
target: ~/.functions
mode: Hard
- name: ssh
status: Ready
os: macos
links:
- name: config
source: ssh/config
target: ~/.ssh/config
mode: Copy
- name: vim
status: Unused
os: macos
links:
- name: config
source: vim/config.vim
target: ~/.vimrc
mode: Soft
- name: nvim
status: Ready
os: macos
links:
- name: init
source: nvim/init.lua
target: ~/.config/nvim/init.lua
mode: Copy
- name: lua dir
source: nvim/lua/
target: ~/.config/nvim/lua/
mode: Copy
应用程序配置
设置 dotctl
应该是一个相当简单的过程
- 安装
dotctl
二进制文件 - 将其放置在
$PATH
的某个位置,以便可以从命令行执行 - 使用
use
指令指定配置文件
$ dotctl use <PATH-TO-CONFIG-FILE>
- 路径应指向包含与上述示例相似内容的文件
- 将按指定找到绝对路径
- 将使用当前工作目录作为基础路径找到相对路径
- 配置文件将被放置在
~/.dotctl
以供将来使用
应用程序利用
设置应用程序配置
$ dotctl setup <CONFIG-NAME>
拆除应用程序配置
$ dotctl teardown <CONFIG-NAME>
路线图
- 帮助处理更复杂配置的钩子(如
nvim
或ssh
) - 日志记录以帮助用户意识和调试
- 仓库探索,如描述现有配置或列出它们的当前状态
- 基于调用的原子性操作(失败应在程序调用之前将文件系统保持原样)
- 应用程序配置组(为工作电脑和个人电脑设置东西)
依赖关系
~3–4MB
~79K SLoC