3个版本
0.1.2 | 2022年3月5日 |
---|---|
0.1.1 | 2022年3月5日 |
0.1.0 | 2022年3月5日 |
#545 in Unix API
11KB
212 行
dotinstall
构建dotfile安装器的库。
免责声明:我基本上是为其个人使用而创建此库,因此功能是我个人认为有用的功能。如果您有未涵盖的使用案例,请提交问题或提交PR,我将很高兴添加它
示例
有些东西我在每次迁移到新系统时都希望拥有。例如,一些来自系统包管理器的包,一些通过 cargo install
的工具,以及我希望某些目录结构存在。
dotinstall
提供了一种以(稍微)平台无关的方式自动化一些任务的DSL
use dotinstall::{installer, Context};
fn main() {
// create an `Installer`, defined below
let installer = Installer::new();
// `Context` contains various metadata about the local system
let ctx = Context::init();
installer.install(&ctx).unwrap();
}
installer! {
packages {
"alacritty",
"neovim",
"build-essential" => {
pacman = "base-devel" // on arch systems, use the name `base-devel` instead
}
};
cargo {
"ripgrep",
"exa",
};
ensure {
"~/.local/bin" // ensure this directory exists
};
exec "post-install.sh"; // arbitrary script
}
这将按照编写顺序执行您预期的大多数操作
- 通过
apt/
pacman
安装alacritty
、neovim
和build-essential
(或在Arch上为base-devel
) cargo install ripgrep
和cargo install exa
- 创建目录
~/.local/bin
- 运行
post-install.sh
我计划在有时间的时候让这个库功能更丰富、可扩展
许可证
根据您的选择,许可为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在作品中的贡献,将根据上述方式双许可,而无需任何额外的条款或条件。
依赖关系
~1.7–9.5MB
~87K SLoC