#directive #path #dull

app dull-dotfile-manager

一个无趣的点文件管理器

2 个版本

0.1.1 2023年11月19日
0.1.0 2023年11月19日

#277配置

无许可CC-PDDC 许可证

375KB
11K SLoC

JavaScript 9K SLoC // 0.0% comments Rust 1K SLoC // 0.0% comments QML 233 SLoC // 0.1% comments INI 27 SLoC Bitbake 24 SLoC

Dull

一个无趣的点文件管理器

安装

克隆此仓库,cd 进入它并调用 cargo 来为您构建和安装它

$ cargo install --path .

快速开始

创建一个新文件夹。目标是设置 dull,以便您可以从这里管理所有点文件。在根目录下创建配置文件 config.toml。配置文件应包含将 source 路径映射到 target 路径的 module。在这个例子中,我们将假设我们想要管理三个配置(即,alacrittyhelixfish)并具有以下文件夹结构

.
├── config.toml
└── modules
    ├── alacritty
    │   └── alacritty.yml
    ├── fish
    │   ├── config.fish
    │   ├── fish_variables
    │   └── functions
    │       └── fish_prompt.fish
    └── helix
        ├── config.toml
        └── themes
            └── custom.toml

因此,配置文件 config.toml 可能包含以下内容

# config.toml
[[module]]
source = "modules/alacritty"
target = "~/.config/alacritty"

[[module]]
source = "modules/fish"
target = "~/.config/fish"

[[module]]
source = "modules/helix"
target = "~/.config/helix"

首先,我们构建系统

$ dull build

这将在 ./builds 文件夹下创建一个虚拟文件系统。如果存在冲突的模块,构建将失败。

然后,我们部署最新的构建

$ dull deploy

这将在目标目录中创建符号链接(例如,~/.config/alacritty/alacritty.yml 将指向 ./modules/alacritty/alacritty.yml),允许用户从单个目录管理其配置,使他们能够使用像 git 这样的版本控制系统轻松维护。

请注意,如果模块目标不为空,部署将失败。为了通过删除旧文件/目录来部署,请使用 --force 标志。这不建议这样做,因为这是一种破坏性操作。

或者,您可以执行硬部署,它直接将文件从模块复制到目标路径

$ dull deploy --hard

这在您想从系统中删除 dull 时很有意义。

要删除已部署的文件,调用

$ dull undeploy

这清除最新构建的模块目标。

您可以使用 --build 标志来部署和卸载特定的构建。

指令

默认情况下,dull build 会递归地遍历模块文件夹,并仅将模块目录中包含的文件视为其链接源。您可以通过设置 指令 来选择性地链接文件夹而不是文件。有两种可能的指令:linkthislinkthese

您可以通过在模块中的一个文件夹下创建一个 .dull-linkthis 文件来添加一个 linkthis 指令。包含此标记文件的文件夹将被直接链接。同样,通过创建一个 .dull-linkthese 文件,也可以添加一个 linkthis 指令。所有与该标记文件在同一目录下的文件和文件夹都将被直接链接。

这些指令也可以在配置文件中指定,而不是像上面描述的那样创建标记文件。

原子性

部署是 原子 的。换句话说,如果在过程中发生意外情况,dull 会尝试将文件系统回滚到其原始状态。这增加了显著的开销,但最大限度地减少了意外破坏系统的风险。

还有其他问题吗?

本文档尚不完整。要了解有关可能的命令和标志的更多信息,请调用

$ dull help

依赖项

~3–14MB
~119K SLoC