#symlink #stow #stowfile #nstow

app new-stow

使用stowfile定义链接的符号链接农场管理器

7个版本

0.1.6 2023年8月15日
0.1.5 2022年12月26日

#233 in 文件系统

每月 29 次下载

MIT 许可证

37KB
785

新Stow

新Stow(或 nstow)是一个符号链接农场管理器,旨在包含GNU Stow(或 stow)的所有功能。

参见下方的比较部分。

安装

new-stow 提供了一个名为 nstow 的二进制文件。

Cargo

cargo install new-stow

发行版软件包

待办事项

使用方法

  1. 创建一个stowfile(见下方的Stowfiles部分)
  2. 链接文件
nstow --stow
  1. 取消链接文件
nstow --unstow

示例

  • Stow传统上用于从编译的可执行文件创建到路径上的符号链接。请参阅 ./examples/exec 中的示例
  • 请参阅 ./examples/dotfiles 中的示例,了解如何使用 nstow 管理dotfiles

其他信息

nstow--帮助

Stowfiles

nstow 在工作目录中搜索一个 stowfile。Stowfiles定义了一组源和链接。

---
vars:
  # Variables may be defined for use in a src or link path
  - THIS_IS_A_VAR=var_value
  # Additionally, environment variables are inherrited

stow:
  - src: some_example_file
    links:
      - ${HOME}/${THIS_IS_A_VAR}/link_it_here # One source file may be linked to many places
      - ${HOME}/some/nested/dir/link_it_here_too # Link's parent directories are created if they do not exist

  - src: alacritty.yml
    links:
      # Example of Stowfile using an env var not defined in the `var` section
      - "${XDG_CONFIG_HOME}/alacritty/alacritty.yaml"

  # Source files may be arbitrarily nested in directories
  - bash:
      - src: bashrc
        links:
          - "${HOME}/.bashrc"

      - src: bash_profile
        links:
          - "${HOME}/.bash_profile"

  # The source can have any name, even something unrelated to the link's name
  - src: readline
    links:
      - "${HOME}/.inputrc"

上面的stowfile将生成以下链接

  • ./some_example_file -> ~/var_value/link_it_here
  • ./some_example_file -> ~/some/nested/dir/link_it_here_too
  • ./alacritty.yml -> ~/.config/alacritty/alacritty.yml
  • ./bash/bashrc -> ~/.bashrc
  • ./bash/bash_profile -> ~/.bash_profile
  • ./readline -> ~/.inputrc

nstow和gstow之间的比较

nstow 旨在包含(大多数) stow 的功能 [^2]

GNU Stow功能 新Stow 注释
--no
--dir
--stow
--delete
--restow
--adopt 计划中
--no-folding 计划中
--ignore=REGEX
--defer=REGEX
--override=REGEX
--backup=REGEX
--dotfiles 计划中

注意,stow的正则表达式可能匹配文件的开始或结束,而nstow的正则表达式匹配任何部分。

待办事项:我们是否想要与stow完全功能一致,并且能够无stowfile进行链接? [^2]GNU Stow选项与 2.3.1 一致,这是撰写时的最新版本。

开发中

依赖项

依赖项通过一个 Nix Flake 进行管理。虽然我们推荐使用Nix,但您可以直接与Cargo一起工作。 flake.nix 中的 toolchain 列表将指定任何额外的开发依赖项。

测试

./run-tests 在容器中运行脚本 tests/integration-tests,以便我们可以无忧地创建/删除符号链接。

依赖项

约6-16MB
~193K SLoC