13 个不稳定版本 (3 个破坏性版本)

0.4.1 2023年12月27日
0.4.0 2023年12月16日
0.3.4 2023年12月8日
0.3.3 2023年11月27日
0.1.0 2023年7月17日

#290 in 配置

Download history 12/week @ 2024-03-10 6/week @ 2024-03-31

每月 94 次下载

自定义许可

57KB
1.5K SLoC

rrcm

Crates.io Workflow Status codecov

一个跨平台兼容的工具,用于部署多个 dotfiles 仓库。

简介

  • 使用符号链接部署配置文件和目录。
  • 配置文件和目录在 Git 仓库中管理。
  • 从同一目录提供多个操作系统上的部署。

通过利用 Linux 和 macOS 上的

目录

配置文件指定了每个平台部署源和目标之间的映射。rrcm 在部署目标目录下创建指向部署目标下文件和目录的符号链接。

(dotfiles repository download directory)
dotiles
│   (local repositroy)
├── example1
│   │   (deploy target)
│   ├── home
│   │   │               (symbolic link)
│   │   ├── .profile <- $HOME/.profile     (on Linux and Mac)
│   │   │               %PROFILE%\.profile (on Win)
│   │   ├── .vim     <- $HOME/.vim         (on Linux and Mac)
│   │   │               %PROFILE%\.vim     (on Win)
│   │   └── ...
│   │
│   └── .config
│       ├── nvim     <- $HOME/.config/nvim                  (on Linux and Mac),
│       │               %PROFILE%\AppData\LocalAppData\nvim (on Win)
│       └── ...
│
└── example2 (next local repositroy)
    └── ...

在部署目标目录下,文件和目录通过符号链接进行部署。 Windows 需要以管理员身份运行。

配置

配置文件路径

  • Unix: $HOME/.config/rrcm/config.yaml
  • Win: %PROFILE%\AppData\Roaming\rrcm\config.yaml
---
# dotfiles repositroy download directory
dotfiles:
  windows: "%USERPROFILE%\\dotfiles"
  mac: "${HOME}/.dotfiles"
  linux: "${HOME}/.dotfiles"

# repositories. multiple repositories can be specified.
repos:

    # local repository name
  - name: example1

    # git repository url
    url: 'git@github:example/example1'

    # deploy configuration
    deploy:

      # deploy target
      # Example: deploy home directory to $HOME or %USERPROFILE%
      home:

        # deploy destination on each OS.
        # if OS not defined, it will not be deployed.
        windows: "%USERPROFILE%"
        mac: "${HOME}"
        linux: "${HOME}"

      # Example: deploy .config directory to XDG_CONFIG_HOME or %USERPROFILE%\AppData\Roaming
      .config:
        windows: "%FOLDERID_RoamingAppData%"
        mac: "${XDG_CONFIG_HOME}"
        linux: "${XDG_CONFIG_HOME}"

      # Example: deploy .config-LocalAppData to XDG_CONFIG_HOME or %USERPROFILE%\AppData\Local
      .config-LocalAppData:
        windows: "%FOLDERID_LocalAppData%"
        mac: "${XDG_CONFIG_HOME}"
        linux: "${XDG_CONFIG_HOME}"

    # next repository
  - name: example2
    url: 'git@github:example/example2'
    ...

部署目标

可以在部署目标中使用环境变量。

格式

  • Unix: ${ENVIRONMENT_VARIABLE_NAME}
  • Windows: %ENVIRONMENT_VARIABLE_NAME%

以下特殊变量可用。

  • Unix XDG 基目录如果环境变量未设置,则使用默认值。
    • ${XDG_CONFIG_HOME}
    • ${XDG_DATA_HOME}
  • Windows 已知文件夹 ID
    • %FOLDERID_RoamingAppData%
    • %FOLDERID_LocalAppData%
    • %FOLDERID_Documents%
    • %FOLDERID_Desktop%

安装

Cargo

cargo install rrcm

用法

初始化配置文件

rrcm init
# or initialize config file from http
rrcm init <url>

我建议使用类似这样的 gist。 我的 config.yaml

更新(git 克隆或拉取)仓库并部署

rrcm update

显示部署状态

rrcm status

依赖项

~8–42MB
~647K SLoC