7个版本
0.1.6 | 2023年8月15日 |
---|---|
0.1.5 | 2022年12月26日 |
#233 in 文件系统
每月 29 次下载
37KB
785 行
新Stow
新Stow(或 nstow
)是一个符号链接农场管理器,旨在包含GNU Stow(或 stow
)的所有功能。
参见下方的比较部分。
安装
包 new-stow
提供了一个名为 nstow
的二进制文件。
Cargo
cargo install new-stow
发行版软件包
待办事项
使用方法
- 创建一个stowfile(见下方的Stowfiles部分)
- 链接文件
nstow --stow
- 取消链接文件
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