#directory-tree #directory-structure #tree-structure #input #error #input-file #representation

bin+lib untree

untree 反转 tree 的操作。它允许您从树的结构文本表示中创建目录树。

8 个版本

0.10.0 2022 年 2 月 8 日
0.9.10 2022 年 11 月 23 日
0.9.9 2022 年 2 月 5 日

871文件系统

每月下载 21

MIT 许可证

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

在这里,testuntree 应该创建文件的目标目录。现在,如果我们在新创建的目录上运行 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 还可以从输入文件中读取树,或者您可以直接粘贴,因为它接受标准输入的输入

Screenshot of untree running on input from stdin. The generated file was placed in path/to/output/dir

untree 的动机

我注意到,在过去我不得不重新创建目录结构以回答问题或在该目录上运行测试。例如,这个问题 询问忽略某些类型的文件,并提供了一个目录结构作为参考。

文件本身没有提供,也不需要提供,但目录结构本身 与问题相关的。

untree 允许您复制以 tree 打印的目录结构,这使得回答有关遍历目录树的程序的问题变得容易。这意味着 untree 对于快速创建目录结构以模拟其他程序的输入也很有用。

将 untree 用作库

如果您需要将此功能包含在程序中,则可以使用 untree 作为库。为了创建一个树,使用给定的目录、Lines 缓冲区和选项调用 create_tree

这些选项非常简单 - 有 UntreeOptions::verbose,这将告诉 create_treecreate_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>(())

其他功能包括

untree使用的错误类型主要是 Error,它包含有关路径及其所执行操作的信息,以及由 io::Error 提供的正常错误信息。

用户评价

当被问及 untree 时,我的朋友说

我想在尝试让Conan工作的时候回过头来做这件事。它会让某些事情稍微轻松一点。

某个人(他要求被称为“某个人”)

欢迎评论、反馈或贡献!

我正在学习Rust,所以你给出的任何反馈都将非常受重视!此外,如果 untree 对你有用,请告诉我!

依赖关系

~2–14MB
~137K SLoC