#配置 #dotfiles #cli-tool #链接 #仓库 #应用程序 #设置

app dotctl

用于管理dotfile设置和删除的命令行工具

1 个不稳定版本

0.1.0 2024年1月23日

#156配置

GPL-3.0-or-later

17KB
260

Dotctl

dotctl 是一个用于管理活动程序配置文件(又称 "dotfiles")的命令行工具。它与一个专门的目录协同工作,该目录集中配置位置,同时允许它们适当链接

用法

您的 "dotfiles" 仓库

此工具旨在对个人的 "dotfile" 仓库保持中立。文件存储和/或检索不由此工具处理。无论您是否使用git管理实际的仓库,还是在云服务器上为 "dotfiles" 预留专用位置,此工具都可以帮助设置这些配置。

如前所述,"dotfile" 目录的布局和结构无关紧要。目前的唯一假设是只有一个仓库包含 "dotfiles"。这是有意为之,因为该工具应能够集成到现有设置中,而无需进行大量修改。可能需要一些初始设置才能使一切顺利运行,但希望此类工作主要围绕 dotctl 应用程序进行,而不是针对现有内容。

您的 dotctl 配置

目前,支持的唯一配置格式是 YAML,但以后可能会支持更多格式。 dotctl 的配置由两部分组成:选项部分和要与之一起工作的配置列表。如果配置不在该列表中,dotctl 就不知道它。

配置选项

本节为 dotctl 可能会使用的一些项目分配值。目前,这里只有一个项目:此配置所属的 "dotfile" 仓库的位置。

options:
  repository: "~/.dotfiles"

这里的值应该是包含 "dotfiles" 的目录的完整路径。它应该是绝对的,但为了方便,还包括了对 ~ 简写的支持。

配置应用程序

应用程序配置是 dotctl 能够与之一起工作的列表中的对象。每个配置都需要指定一些信息以确定

  1. 如何设置配置
  2. 是否允许/在当前系统上安全执行

配置设置的指令指定为创建“链接”的列表。链接将按顺序创建,直到设置过程完成。安全性由当前操作系统名称和用户分配的特定配置状态决定。

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 应该是一个相当简单的过程

  1. 安装 dotctl 二进制文件
  2. 将其放置在 $PATH 的某个位置,以便可以从命令行执行
  3. 使用 use 指令指定配置文件
$ dotctl use <PATH-TO-CONFIG-FILE>
  • 路径应指向包含与上述示例相似内容的文件
    • 将按指定找到绝对路径
    • 将使用当前工作目录作为基础路径找到相对路径
  • 配置文件将被放置在 ~/.dotctl 以供将来使用

应用程序利用

设置应用程序配置

$ dotctl setup <CONFIG-NAME>

拆除应用程序配置

$ dotctl teardown <CONFIG-NAME>

路线图

  • 帮助处理更复杂配置的钩子(如 nvimssh
  • 日志记录以帮助用户意识和调试
  • 仓库探索,如描述现有配置或列出它们的当前状态
  • 基于调用的原子性操作(失败应在程序调用之前将文件系统保持原样)
  • 应用程序配置组(为工作电脑和个人电脑设置东西)

依赖关系

~3–4MB
~79K SLoC