#config-file #configuration-management #platform #different #file-path #settings #personal

app confmg

不同平台上的个人配置文件管理工具

2个版本 (1个稳定版)

2.0.0 2024年3月7日
0.1.0 2023年9月10日

#86配置

每月 30 次下载

MIT/Apache

22KB
405

confmg

Confmg 允许您将所有配置文件存储在同步到远程服务器(例如GitHub、云存储等)的文件夹中,并可选择性地将其复制到不同平台上的正确位置。

例如,您可以将 .gitconfig 文件保存在 ~/.confmg 文件夹中,该文件夹位于GitHub上的私有仓库中。同一个文件夹包含一个 confmg.json 文件,其中包含带有“git”标签和相应文件位置的条目(通常是 ~/.gitconfig)。然后,您只需一条命令即可将此 .gitconfig 文件复制到其正确位置。其他配置文件可以根据平台的不同具有不同的位置,但内容始终相同(例如,Linux上的VSCode配置位于 ~/.config/Code/User/settings.json,Windows上的配置位于 ~/AppData/Roaming/Code/User/settings.json)。

安装

如果您已安装Rust工具链,则可以直接运行 cargo install confmg。否则,您可以从 发布 部分下载二进制文件。

配置

confmg的配置以JSON文件的形式编写。默认路径是 ~/.confmg/confmg.json,但可以通过 -c, --config-file 参数或 CONFMG_CONFIG 环境变量来覆盖。配置文件应按照以下结构编写

{
  "<Label for this config>": {
    "source": "<Path to the source config file relative to this file (usually located in the same folder)>",
    "targets": {
      "windows": "<Path to the target config file on Windows (optional)>",
      "linux": "<Path to the target config file on Linux (optional)>",
      "macos": "<Path to the target config file on MacOS (optional)>"
    }
  }
}

以下是一个confmg配置文件的示例

{
  "git": {
    "source": ".gitconfig",
    "targets": {
      "linux": "~/.gitconfig",
      "macos": "~/.gitconfig",
      "windows": "~/.gitconfig"
    }
  },
  "bashrc": {
    "source": ".bashrc",
    "targets": {
      "linux": "~/.bashrc",
      "macos": "~/.bashrc"
    }
  },
  "vscode_settings": {
    "source": "vscode/settings.json",
    "targets": {
      "linux": "~/.config/Code/User/settings.json",
      "macos": "~/Library/Application Support/Code/User/settings.json",
      "windows": "~/AppData/Roaming/Code/User/settings.json"
    }
  }
}

用例和用法

  • 在设置新电脑时,您可以下载包含您的配置文件的远程confmg文件夹,然后运行 confmg apply-source。然后,所有配置文件将复制到其正确的目的地。
  • 在您的本地文件系统中更改配置文件时,您可以运行confmg diff <LABEL>来查看更改,并运行confmg apply-target <LABEL>将confmg文件夹中的文件覆盖为更改后的文件。
  • 运行confmg edit-config以在默认编辑器中打开confmg配置文件。
  • 运行confmg edit-source <LABEL>confmg edit-target <LABEL>以在默认编辑器中打开特定配置的源或目标文件。
  • 运行confmg --help获取完整文档。

TODOs

依赖关系

~2–13MB
~111K SLoC