[![Build Status](https://travis-ci.org/andrewdavidmackenzie/simpath.svg?branch=master)](https://travis-ci.org/andrewdavidmackenzie/simpath)
[![Generic badge](https://img.shields.io/badge/macos-supported-Green.svg)](https://shields.io/)
[![Generic badge](https://img.shields.io/badge/linux-supported-Green.svg)](https://shields.io/)
[![Generic badge](https://img.shields.io/badge/windows-supported-Green.svg)](https://shields.io/)
# Simpath
A small and simple crate (in the spirit of my "simp*" crates) for search paths, like `$PATH` and `$LD_PATH`.
# Example
Create a `Simpath` that loads from the `$PATH` environment variable using:
```
let path = simppath::new("PATH");
```
Then find a file called `filename` by searching the directories in `PATH` in order - as a `PathBuf`
```
let file = path.find("filename");
```
# Platforms
The following platforms are supported and tested in CI
* Linux
* MacOS
* Windows (with the ";" separator character used for parsing paths from environment variables)
# Methods
* create a search path, initialized from an environment variable
* create a search path, initialized form an environment variable, using a custom separator character
* add an entry to the search path (default to assuming it is a directory)
* add a new directory to the search path
* get the name of the path
* get the list of directories in the path
* find a file in the path
* find a file by `FileType` in the path
* check if the search path already contains a directory entry
* add to the search path, loading the entries from an environment variable
* add to the search path, loading the entries from an environment variable, using a custom separator character
* validate that all directory entries in the path are valid, exist and can be read
## Optional methods
These methods are activated by the "urls" feature, which is included by default.
To remove that code and dependencies disable all default features using the `cargo` command line option
`--no-default-features` or including `default-features = false` in your `Cargo.toml` section for `Simpath`
* find a file/resource by `FileType` in the path
* Add an entry to the search path from a String, can be a directory or a Url
* Add a URL to the search path
# Traits
* implements the `fmt::Display` trait
* Derives `Clone`
* Derives `Debug`
# Building
A simple Makefile exists that builds, runs `clippy` and then runs tests.
Just type `make` at the command prompt.