# Lettuce 🥬
Lettuce is a generic server process that checks the files within an elixir
project that has lettuce as a dependency and then runs `iex -S mix`. It
initialises the state gen server with the `.ex` files inside `lib` and their
last modified time. By default `lib` is used but you specify which folders you
want to be watched.
## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `lettuce` to your list of dependencies in `mix.exs`:
```elixir
...
def deps do
[
{:lettuce, only: :dev, git: "https://github.com/gilacost/lettuce"}
]
end
...
```
## Configuration example
```elixir
use Mix.Config
config :lettuce, folders_to_watch: ["apps"]
...
```
You can also change the refresh time to control how often the project files
will be checked.
```elixir
use Mix.Config
config :lettuce, refresh_time: 1500
...
```
Even though the `start_link` will throw an error if the `Mix.env` equals to
`:dev` it is recommended to explicitly select the extra applications by
environment in the mix file.
```elixir
...
def application do
[
extra_applications: extra_applications(Mix.env(), [:logger, ...])
]
end
defp extra_applications(:dev, default), do: default ++ [:lettuce]
defp extra_applications(_, default), do: default
...
```
## Inspiration
Last week I started giving Node.js lessons as part of a charity called [MigraCode](https://migracode.eu/)
in El Borne, Barcelona. We were reviewing some exercises and one of the steps in
the instructions was to npm install nodemon, which reminded me of all the times
I was inside IEx debbuging and I had to call recompile.
## Author
Josep Lluis Giralt D'Lacoste.
## License
Lettuce is released under the MIT License. See the LICENSE file for further
details.