3个版本

0.1.2 2022年3月5日
0.1.1 2022年3月5日
0.1.0 2022年3月5日

#545 in Unix API

MIT/Apache

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 安装 alacrittyneovimbuild-essential(或在Arch上为 base-devel
  • cargo install ripgrepcargo install exa
  • 创建目录 ~/.local/bin
  • 运行 post-install.sh

我计划在有时间的时候让这个库功能更丰富、可扩展

许可证

根据您的选择,许可为以下之一

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,任何有意提交以包含在作品中的贡献,将根据上述方式双许可,而无需任何额外的条款或条件。

依赖关系

~1.7–9.5MB
~87K SLoC