# wildpath
A rust library to resolve wildcards in filepaths on UNIX systems.
The library exposes one method, `resolve`, which will take a filepath with wildcards and return everything on the filesystem that fits the given description.
For example, consider a file system that looks like the following:
```
root
├── blogs
│ ├── blog_1
│ │ ├── assets
│ │ │ └── logo.jpeg
│ │ └── post.txt
│ └── blog_2
│ ├── assets
│ │ └── research_notes.txt
│ └── post.txt
└── videos
├── video_1
│ ├── assets
│ │ └── logo.jpeg
│ └── script.txt
├── video_2
│ ├── assets
│ │ └── sound_effect.wav
│ └── script.txt
└── video_3
├── assets
│ └── new_logo.png
└── script.txt
```
If you want to find all of the text for the content, you can call
```rust
resolve(&Path::new("/root/*/*/*.txt").unwrap())
```
which will return all of the `txt` files that are 3 layers deep:
```rust
[
"/root/blogs/blog_1/post.txt",
"/root/blogs/blog_2/post.txt",
"/root/videos/video_1/script.txt",
"/root/videos/video_2/script.txt",
"/root/videos/video_3/script.txt"
]
```
If you want to see all of the versions of logos that have been used, you can call
```rust
resolve(&Path::new("/root/*/*/assets/*logo*").unwrap())
```
which will return
```rust
[
"/root/blogs/blog_1/assets/logo.jpeg",
"/root/videos/video_1/assets/logo.jpeg",
"/root/videos/video_3/assets/new_logo.png"
]
```
Or if you want to see the logos used for the original blog and video, you can call
```rust
resolve(&Path::new("/root/*/*_1/assets/*logo*").unwrap())
```
which will return
```rust
[
"/root/blogs/blog_1/assets/logo.jpeg",
"/root/videos/video_1/assets/logo.jpeg"
]
```
and if you add a new directory called `presentations`, as long as it follows the same structure as the others, this same line of code will also pick up the logo used in the first presentation.
### Symlinks
`wildpath` will also follow symlinks and resolve. For example, if you have the following filesystem:
```
root
├── A
│ └── X (<- symlink to B)
└── B
└── c.png
```
and pass a path of `/root/A/*/*`, you will receive `[/root/B/c.png]` as the output.
### Limitations
- `wildpath` has only been tested on a UNIX system. For now, it may not work on Windows.
- It will also not respect `.` or `..` in a path. For now, these will need to be resolved prior to using the library.