10个版本 (5个重大更改)
0.7.1 | 2023年4月1日 |
---|---|
0.7.0 | 2023年3月26日 |
0.6.3 | 2023年3月20日 |
0.5.0 | 2023年3月5日 |
0.2.0 | 2023年2月23日 |
#671 in 配置
23KB
457 行
Sinc
跨平台dotfiles管理器
进行中
此存储库仍在开发中。请自行承担风险。
安装
$ cargo install sinc
入门
配置文件
Sinc会在以下位置查找配置文件:
$SINC_CONFIG_DIR/sinc/sinc.toml
$XDG_CONFIG_HOME/sinc/sinc.toml
$HOME/.config/sinc/sinc.toml
最小配置
以下是最小配置:
[default]
dir = "~/.dotfiles"
sync_type = "symlink"
[[dotfiles]]
path = "sinc"
target = "~/.config/sinc"
如果您在此状态下运行sinc
命令,则会从~/.dotfiles/sinc
创建到~/.config/sinc
的符号链接。
换句话说,前面提到的配置文件已移动到~/.dotfiles/sinc
,并已创建到原始位置的符号链接。
(dir + path) (sync_type) (target)
│ │ │
V V V
~/.dotfiles/sinc <<== symbolic link ==>> ~/.config/sinc
现在,此配置不支持配置文件位置随操作系统而不同的应用程序。
要解决这个问题,您可以使用sys(os)
而不是直接指定值。
[[dotfiles]]
path = "bat"
[dotfiles.target."sys(os)"]
default = "~/.config/bat"
windows = "~/AppData/Roaming/bat"
配置值
配置
键 | 值类型 |
---|---|
默认值 | 表 |
dotfiles | 表数组 |
配置.默认值
键 | 值类型 |
---|---|
dir | 字符串 |
sync_type | 同步类型 |
配置.dotfiles
键 | 值类型 | 默认值 |
---|---|---|
dir | 字符串 |
配置.默认值.dir |
sync_type | 同步类型 |
配置.默认值.sync_type |
target | String 或Array<String> |
|
path | 字符串 |
|
enable | 布尔型 |
true |
hook_add | 字符串 |
"" |
在hook_*
中设置的值将在指定时间作为命令执行。
flowchart LR
Start([start]) ===> enable
enable{enable} ===> |true| sync
enable ---> |false| End
sync[[sync]] ===> |success| hook_add
hook_add[[hook_add]] ===> End
sync ---> |fail| End([End])
同步类型
值 | 描述 |
---|---|
"symlink" |
如果您正在使用Windows,则需要管理员权限 |
"junction" |
仅限Windows / 用于链接到文件夹 |
"hardlink" |
像原始文件一样行为 / 用于链接到文件 |
"copy" |
仅复制 |
配置.**.sys(...)
名称 | 键 | 键示例 |
---|---|---|
sys(os) |
os_info::Type(小写) | arch linux |
sys(os_type) |
std::env::consts::OS | linux |
sys(os_family) |
std::env::consts::FAMILY | unix |
示例
[default]
dir = "~/.dotfiles"
sync_type."sys(os)" = { default = "symlink", windows = "junction" }
[[dotfiles]]
path = "bat"
[dotfiles.target."sys(os)"]
default = "~/.config/bat"
windows = "~/AppData/Roaming/bat"
[[dotfiles]]
path = ".gitconfig"
target = "~/.gitconfig"
[dotfiles.sync_type."sys(os)"]
default = "symlink"
windows = "hardlink"
配置.**.which(...)
名称 | 键 |
---|---|
which(COMMAND) |
若 COMMAND 不存在,请选择 "" 的路径 |
示例
[[dotfiles]]
path = "neofetch"
target = "~/.config/neofetch"
[dotfiles.enable."which(neofetch)"]
# Enabled if the "neofetch" executable exists somewhere in $PATH.
default = true
"" = false
[[dotfiles]]
path = "hyprland"
target = "~/.config/hypr"
[dotfiles.enable."which(wrappedhl)"]
# Enabled if the "wrappedhl" executable exists in "~/bin/wrappedhl" in $PATH.
default = false
"~/bin/wrappedhl" = true
许可证
依赖项
~3–17MB
~169K SLoC