# nansible

nansible is a shell library for node.js providing the programmer with many
abstractions for writing powerful and portable scripts.

It follows in ansible's lead in the concept of "playbooks": the grouping of
various tasks into atomic units. With nansible, the script you write is
[["applied" | ./lib/apply.js]] as a playbook, which is composed of various
tasks, checks, and output directives.

## Workflow

```dot
[<actor>playbook]
[playbook] -> [apply |
  [<label>apply the playbook]
]

[apply] -> [report |
  [<label>report results]
]

[report] -> [<choice> has errors?]

[has errors?] -> [dump |
  [<label>dump error report to file]
]

[report] -> [clean]

[dump] -> [clean |
  [<label>remove artifacts created
          during mega://nansible/apply as "application"
  ]
]

[clean] -> [exit |
  [<label>exit the process with
          the appropriate code
  ]
]

# reference:
[mega://nansible/apply as "apply"]
[mega://nansible/clean as "clean"]
[mega://nansible/dump as "dump"]
[mega://nansible/exit as "exit"]
[mega://nansible/report as "report"]
```

## Testing

If the tests for the `pg` module fail, make sure you set the environment
variable `PG_USER` to the name of the postgres admin user (by default it's
set to `postgres`.)
