8 个版本
0.10.0 | 2022 年 2 月 8 日 |
---|---|
0.9.10 | 2022 年 11 月 23 日 |
0.9.9 | 2022 年 2 月 5 日 |
871 在 文件系统
每月下载 21 次
125KB
358 行
Untree:反转树以娱乐和盈利
Untree 通过将目录结构的树形图转换回目录结构来反转 tree 的操作。给定一个目录结构,tree 生成树形图,给定一个树形图,untree 生成目录结构。
假设您有以下目录结构,在项目的根目录中运行 tree
创建
. ├── Cargo.lock ├── Cargo.toml ├── inputs │ └── test1.tree ├── lib │ ├── either.rs │ ├── errors.rs │ ├── functions.rs │ ├── mod.rs │ ├── more_context.rs │ ├── path_action.rs │ └── types.rs ├── LICENSE.txt ├── media │ ├── image1.png │ └── image2.png ├── README.md └── src └── main.rs
untree 可以根据这个输入创建一个镜像的目录结构
tree | untree --dir path/to/output/dir
在这里,test
是 untree
应该创建文件的目标目录。现在,如果我们在新创建的目录上运行 tree
,我们可以看到它具有与存储库相同的结构
path/to/output/dir ├── Cargo.lock ├── Cargo.toml ├── inputs │ └── test1.tree ├── lib │ ├── either.rs │ ├── errors.rs │ ├── functions.rs │ ├── mod.rs │ ├── more_context.rs │ ├── path_action.rs │ └── types.rs ├── LICENSE.txt ├── media │ ├── image1.png │ └── image2.png ├── README.md └── src └── main.rs 4 directories, 15 files
untree
还可以从输入文件中读取树,或者您可以直接粘贴,因为它接受标准输入的输入
untree 的动机
我注意到,在过去我不得不重新创建目录结构以回答问题或在该目录上运行测试。例如,这个问题 询问忽略某些类型的文件,并提供了一个目录结构作为参考。
文件本身没有提供,也不需要提供,但目录结构本身 是 与问题相关的。
untree
允许您复制以 tree 打印的目录结构,这使得回答有关遍历目录树的程序的问题变得容易。这意味着 untree 对于快速创建目录结构以模拟其他程序的输入也很有用。
将 untree 用作库
如果您需要将此功能包含在程序中,则可以使用 untree 作为库。为了创建一个树,使用给定的目录、Lines
缓冲区和选项调用 create_tree
。
这些选项非常简单 - 有 UntreeOptions::verbose
,这将告诉 create_tree
和 create_path
在设置时打印出任何创建的目录或文件,以及 UntreeOptions::dry_run
,这将打印出任何目录或文件而实际上并不创建它们(《dry_run》意味着《verbose》)。
下面是一个示例用法
use untree::*;
use std::io::{BufRead, BufReader, stdin, Lines};
let options = UntreeOptions::new()
.dry_run(true) // Set dry_run to true
.verbose(true); // Set verbose to true
let lines = BufReader::new(stdin()).lines();
create_tree("path/to/directory", lines, options)?;
# Ok::<(), Error>(())
其他功能包括
create_path
,用于创建具有给定选项的文件或路径get_entry
,用于解析树文件中的一行touch_directory
,用于创建目录touch_file
,用于触摸文件(与unix touch做同样的事情)
untree使用的错误类型主要是 Error
,它包含有关路径及其所执行操作的信息,以及由 io::Error
提供的正常错误信息。
用户评价
当被问及 untree 时,我的朋友说
我想在尝试让Conan工作的时候回过头来做这件事。它会让某些事情稍微轻松一点。
— 某个人(他要求被称为“某个人”)
欢迎评论、反馈或贡献!
我正在学习Rust,所以你给出的任何反馈都将非常受重视!此外,如果 untree
对你有用,请告诉我!
依赖关系
~2–14MB
~137K SLoC