引导dotfiles的工具

dotbot的Python项目详细描述


dotbot

dotbot使您的dotfiles安装变得像git clone$url&;cd dotfiles&;一样简单,甚至在新安装的系统上也可以安装!


生成状态

dotbot是引导您的dot files(它是一个[点]文件)的工具 好的,明白吗?它确实比你想象的要少,因为 控制系统的作用超出你的想象。

Dotbot的设计是轻量级的,独立的,没有外部的 依赖项,不需要安装。Dotbot也可以是 替换用于管理点文件的任何其他工具,以及 Dotbot与VCS无关--它不会尝试管理您的点文件。

如果您想要一个关于组织您的dotfiles的深入教程,请参阅博客 发布

5分钟后开始跑步

重新开始?

太好了!您可以使用 用户提供了初始化点文件脚本。如果你愿意用 模板存储库,查看点文件模板。或者,如果 你只是在寻找一些灵感,我们已经介绍过了。

与现有的点文件集成

以下几步就能帮助您使用dotbot进行设置。

如果您使用的是git,则可以将dotbot添加为子模块:

cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml

如果使用Mercurial,则可以将DotBot添加为子回购:

cd ~/.dotfiles # replace with the path to your dotfiles
hg init # initialize repository if neededecho"dotbot = [git]https://github.com/anishathalye/dotbot" > .hgsub
hg add .hgsub
git clone https://github.com/anishathalye/dotbot
cp dotbot/tools/hg-subrepo/install .
touch install.conf.yaml

要开始,只需填写install.conf.yaml和dotbot 会照顾好其他人的。为了帮助您入门,我们提供了 示例配置文件以及配置 可接受参数的文档。

注意:install脚本只是一个检查适当的 dotbot的版本,并调用完整的dotbot安装程序。默认情况下,脚本 假设配置位于dotbot 子模块位于dotbot中。您可以通过 适当编辑install脚本中的变量。

将dotbot设置为子模块或子repo会将其锁定在当前版本上。 您可以随时升级dotbot。如果使用子模块,请运行git submodule update--remote dotbot,用dotbot的路径替换dotbot 子模块;确保在运行/install之前提交更改,否则 安装脚本将签出旧版本的dotbot。如果使用 子回购,在dotbot目录中运行git fetch&;git checkout origin/master

如果愿意,可以从pypi安装dotbot 程序:

pip install dotbot
touch install.conf.yaml

在这种情况下,您可以使用 dotbot-c<;配置文件路径>;

完整示例

下面是一个完整配置的示例。

配置文件的传统名称是install.conf.yaml

-defaults:link:relink:true-clean:['~']-link:~/.dotfiles:''~/.tmux.conf:tmux.conf~/.vim:vim~/.vimrc:vimrc-shell:-[git submodule update --init --recursive,Installing submodules]

配置文件也可以用json编写。这是json的等价物 以上给出的yaml配置。

这个文件的传统名称是install.conf.json

[{"defaults":{"link":{"relink":true}}},{"clean":["~"]},{"link":{"~/.dotfiles":"","~/.tmux.conf":"tmux.conf","~/.vim":"vim","~/.vimrc":"vimrc"}},{"shell":[["git submodule update --init --recursive","Installing submodules"]]}]
< H2>配置

dotbot使用yaml或json格式的配置文件来指定 设置点文件。目前,dotbot知道如何链接文件和 文件夹,执行shell命令,并清除 符号链接断开。dotbot还支持用户自定义的插件 命令。

理想情况下,引导配置应该是等幂的。也就是说, 安装程序应该能够多次运行而不会导致 问题。这使得很多事情更容易做(特别是同步 机器之间的更新变得非常容易)。

dotbot配置文件是任务数组,其中每个任务 是一个字典,其中包含映射到该命令数据的命令名。 任务按指定的顺序运行。任务中的命令 没有定义的顺序。

在编写嵌套构造时,请记住yaml对空白敏感。 遵循示例中使用的格式是一个好主意。

另外,注意yaml中的~与json中的null相同。如果你想要单身 包含颚化符的字符串,请确保将其括在引号中:'~'

链接

链接命令指定文件和目录的符号链接方式。 如果需要,可以将项指定为强制链接,覆盖现有项 必要时归档。路径中的环境变量将自动展开。

格式

链接命令被指定为将目标映射到源的字典 位置。源位置是相对于基目录(即 在运行安装程序时指定)。如果链接目录,不包含斜杠。

链接命令支持(可选)扩展配置。在这种类型的 配置,而不是直接指定源位置,目标是 映射到扩展配置字典。

可用的扩展配置参数:

<表><广告>链接选项 说明 < /广告><正文>路径符号链接的目标,与快捷语法中的目标相同(默认值:null,automatic(见下文))创建如果为true,则根据需要创建链接的父目录。(默认值:false)重新链接如果是符号链接,则删除旧目标(默认值:false)强制force删除旧目标、文件或文件夹,并强制新链接(默认值:false)相对的 创建符号链接时使用相对路径(默认值:false,绝对链接)glob*字符视为通配符,并对所有这些匹配项执行链接操作(默认值:false)如果$shell中执行此操作,只有成功时才链接。

示例

-link:~/.config/terminator:create:truepath:config/terminator~/.vim:vim~/.vimrc:relink:truepath:vimrc~/.zshrc:force:truepath:zshrc

如果源位置被省略或设置为null,dotbot将使用 目标的basename,如果存在,则去掉前导。这使得 以下三个配置文件等效:

-link:~/bin/ack:ack~/.vim:vim~/.vimrc:relink:truepath:vimrc~/.zshrc:force:truepath:zshrc~/.config/:glob:truepath:config/*relink:true
-link:~/bin/ack:~/.vim:~/.vimrc:relink:true~/.zshrc:force:true~/.config/:glob:truepath:config/*relink:true
[{"link":{"~/bin/ack":null,"~/.vim":null,"~/.vimrc":{"relink":true},"~/.zshrc":{"force":true},"~/.config/":{"glob":true,"path":"config/*","relink":true}}}]

外壳

shell命令指定要运行的shell命令。shell命令在 基本目录(运行安装程序时指定的目录)。

格式

shell命令可以用几种不同的方式指定。最简单的方法是 只需将命令指定为包含要运行的命令的字符串。

另一种方法是指定一个双元素数组,其中第一个元素是 shell命令,第二个命令是可选的可读描述。

shell命令也支持扩展语法,其中罗维德斯 细粒度控制。命令可以指定为包含 要运行的命令、说明以及是否stdinstdout,以及 stderr已启用。在这个语法中,除了 命令本身。

示例

cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml
0

清洁

clean命令指定应该检查死符号的目录 链接。这些死链接会自动删除。只有死路一条 除非将force选项设置为 true

格式

clean命令被指定为要清除的目录数组。

clean命令支持扩展配置语法。在这种类型的 配置,命令被指定为映射到选项的目录路径。如果 force选项设置为true,即使没有死链接也会被删除 指向dotfiles目录中的文件。

示例

cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml
1

默认值

可以指定插件的默认选项,这样就不必 重复多次。这对于使用link命令非常有用,因为 例子:

默认值应用于设置默认值后的所有命令。默认可以 多次设置;每次更改都用一组新的 选项.

格式

默认值被指定为将操作名映射到设置的字典,设置 是从选项名称到值的字典。

示例

cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml
2

插件

dotbot还支持由插件实现的自定义指令。插件是 作为dotbot.plugin的子类实现,因此它们必须实现 可以使用handle()handle()can handle()方法应返回true 如果插件可以处理具有给定名称的操作。handle()方法 应该执行某些操作并返回是否成功完成。

所有内置的dotbot指令都作为插件编写,由 默认设置,因此在编写自定义插件时可以将其用作参考。

使用--plugin--plugin dir选项加载插件,使用 绝对路径或相对于基目录的路径。它是 建议将这些选项直接添加到安装脚本中。

维基

有关更多信息、技巧和窍门,请访问dotbot wiki。 用户贡献的插件等。

贡献

您是否有功能请求、错误报告或修补程序?伟大的!见 contribution.md了解您可以对此做些什么。

包装

  1. 更新版本信息。

  2. 使用python setup.py sdist bdist\u wheel构建包

  3. 使用捆绳上载-s dist/*签名并上载包

许可证

版权所有(c)2014-2018 Anish Athalye。在麻省理工学院的许可下发布。见 license.md了解详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:在ListView上使用setOnItemClickListener   使用Netbeans 7.0连接到SQL Server的java正在挂起   java Spring3依赖项注入不适用于mule   java Flink SQL结果字段与LocalDateTime上请求的类型错误不匹配   java找不到文件的结尾   考虑到NamingStrategy,java有没有办法将字符串转换为JsonNode?   使用Netbeans/ant部署java(命令行)应用程序   java如何修复Spring引导多部分上载中的“所需请求部分不存在”   java在应用程序启动时通过引用获取映射未知目标实体属性异常   java形状旋转问题Java2d   Weblogic服务器上的java ExecuteAndWaitInterceptor问题   JavaSpringBoot:project将图像保存在错误的路径中,并且在使用IDEIntellji打开时不显示图像   类向java接口添加方法   Swing组件上的Java 7泛型   sql server如何从java获取用户名。sql。联系   java如何检查该行是否与正则表达式(regex)冲突?   java如何在spring引导安全中为计数失败登录设置验证登录为false   图像如何在Java中使PNG的白色透明?