#stow #symlink #stowfile

app nstow

[损坏] 基于平台的符号链接农场管理器,链接由stowfile定义

2个版本

0.2.1 2024年8月15日
0.2.0 2024年8月15日

#164文件系统

Download history 195/week @ 2024-08-12

每月195 次下载

MIT 许可证

38KB
795

Nstow

损坏!

此crate已损坏,未来可能不会更新。
请自行承担风险。

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

它是 new-stow 的一个克隆版本,具有跨平台兼容性。

[^1] 以下为比较部分。

安装

该包 nstow 提供了一个名为 nstow 的二进制文件。

Cargo

cargo install nstow

发行版软件包

待办事项

用法

  1. 创建stowfile(请参阅以下Stowfiles部分)
  2. 链接文件
nstow --stow
  1. 取消链接文件
nstow --unstow

示例

  • Stow传统上用于从编译的execs创建到路径上的符号链接。请参阅 ./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