3 releases (breaking)
0.3.0 | Oct 29, 2024 |
---|---|
0.2.0 | Oct 28, 2024 |
0.1.0 | Oct 20, 2024 |
#2120 in Command line utilities
27KB
659 lines
tree-create
A command-line utility to create directory structures from tree-like text input.
Installation
cargo install tree-create
Usage
tree-create
supports multiple ways to input your directory structure:
Interactive Editor (Default)
Simply run tree-create
with no arguments to open your default editor:
tree-create
This will open your system's default editor (defined by $EDITOR
) where you can input your directory structure. Save and close the file when you're done, and it will create the structure.
File Input
Pass a file containing your directory structure:
tree-create input.txt
Inline Input
Use the -i
or --inline
flag to input the structure directly in the terminal:
tree-create -i
Input Formats
tree-create
supports two input formats:
ASCII Tree Format
my-project/
├── src/
│ ├── main.rs
│ └── lib.rs
└── Cargo.toml
Simple Indented Format
You can use any consistent indentation (spaces or tabs):
my-project/
src/
main.rs
lib.rs
Cargo.toml
or
my-project/
src/
main.rs
lib.rs
Cargo.toml
Rules and Validation
- Root directory must not be indented
- Indentation must be consistent throughout the structure
- Can't skip indentation levels
- Directories must end with a forward slash (
/
) - Empty lines are ignored
Examples
Create a simple Rust project structure:
my-project/
src/
main.rs
lib.rs
Cargo.toml
Create a more complex web project:
web-app/
src/
components/
ui/
buttons/
primary.rs
secondary.rs
inputs/
text.rs
number.rs
pages/
home.rs
about.rs
public/
index.html
styles.css
Cargo.toml
Handling Existing Files and Directories
By default, tree-create
will:
- Skip creating directories and files that already exist (preserving their contents)
- Create any new directories and files in the structure
- Print messages indicating which items were skipped and which were created
To overwrite existing files and directories, use the --force
flag:
tree-create --force input.txt
When using --force
:
- Existing files will be overwritten (emptied)
- Existing directories will be preserved, but any files specified in the tree will be overwritten
- If a file exists where a directory is specified (or vice versa), it will be replaced
Note: Be careful with --force
as it will overwrite files without confirmation.
Supported Editors
The following editors are explicitly supported for interactive mode:
- vim/neovim
- nano
- VS Code (automatically adds
--wait
flag)
Other editors may work but are not officially supported.
Dependencies
~3–11MB
~142K SLoC