README.md

[![Build Status](https://secure.travis-ci.org/kbrw/nox.svg?branch=master "Build Status")](http://travis-ci.org/kbrw/nox)

# Nox

Embeds node, npm and provides wrappers for running it.

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `nox` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:nox, "~> 0.1.0"}
  ]
end
```

The docs is available at [https://hexdocs.pm/nox](https://hexdocs.pm/nox)

## Usage

Nox can manage multiple environments. All functions take as argument an environment.
A default one can be obtained with:

```elixir
Nox.Env.default()
```

Custom ones can be built with:

```elixir
Nox.Env.new(options)
```

Get full path to executable:

```elixir
Nox.which(env, "node")
```

Get OS env for executing command in the node environment, for instance
to give to `env` option of `System.cmd/3`:

```elixir
env = Nox.sys_env(Nox.Env.default())
System.cmd("aglio", ["-i", "doc.in", "-o", "doc.out"], env: env)
```

Nox provides also wrappers for some well-know commands: see `Nox.Npm`,
`Nox.Grunt`.

## Command line parsers

Nox includes tools for parsing command line output, as for `into`
option of `System.cmd/3`.

If you simply want to redirect command output to `Logger`:

```elixir
System.cmd("echo", ["\"my tailor is rich\""], into: Nox.Cli.stream())
```

If you want to use a custom parser:

```elixir
System.cmd("npm", ["install"], into: Nox.Cli.stream({Nox.Parsers.Npm, []}))
```

## License

Nox source code is released under Apache 2 License.

Check the [LICENSE](LICENSE) file for more information.