# Ironman

[![Build Status](](
[![Coverage Status](](
[![Project license](](
[![ package](](
[![ downloads](](

`mix new` is like Tony Stark: Awesome and can do great things, but not bulletproof. When he suits up, however, his vulnerabilities are covered. Similarly, the Ironman project takes an elixir project (existing or newly created) and configures it in a way that protects it from getting in a bad state. It does this by adding dependencies for best practices such as `:credo` and `:dialyxir`, adding ci configuration for these tools, setting run configuration such as `warnings_as_errors`, etc...

Each step of suiting up is confirmed with the end user before changing, and can be rejected individually.

## Installation

Ironman is a mix archive that can be installed by running:

`mix archive.install hex ironman`

## Suiting Up

Ironman can be run from the root of any project by calling:

`mix suit_up`

## Contributing

Contributions welcome. Specifically looking to:

* Complete items in current progress below.

## Current Progress

### Add Dependencies

* [X] [`:ex_doc`](
* ~~[X] [`:earmark`~]( Now a dependency of `:ex_doc`
* [X] [`:dialyxir`](
* [X] [`:mix_test_watch`](
* [X] [`:credo`](
* [X] [`:excoveralls`](
* [X] [`:git_hooks`](
* [ ] [`:ex_unit_notifier`](

### Add Configuration

* [X] [`:dialyxir`](
* [X] [`:credo`](
* [X] [`:excoveralls`](
* [X] [`:git_hooks`](
* [ ] [`:ex_unit_notifier`](

### CI Configurations

* [ ] Travis
* [ ] Gitlabs
* [ ] CircleCI

### Additional Features

* [X] Self check/upgrade version
* [X] Check for mix.exs file before running
* [X] Check/warn for uncommitted files before running
* [X] Check all dependencies for updates
* [X] Ask what additional dependencies to add
* [ ] Add test to ensure referenced version is up to date with project version