# Program

Class creating a Commander program, managing the options passed via bash and config file.

## Constructor

#### new Program()

Source:
  - Program.js, line 6

### Methods

#### _camelCaseObjectKeys(object) → {Object}

Converts all Object values to camel case

Source:
  - Program.js, line 190

##### Parameters:

Name | Type | Description
--- | --- | ---
`object` | `Object` |

##### Returns:

Type:
  `Object`

#### (private) _consumeOptions(opts) → {Object}

Consume the options from the properties and provide get the defaults and the programOptions

Since:
  - 0.10.0
Source:
  - Program.js, line 131

##### Parameters:

Name | Type | Description
--- | --- | ---
`opts` | `Array` |

##### Returns:

Type:
  `Object`

#### (private) _dashToCamelCase(value) → {string}

Transforms a dasherize string into a camel case one.

Since:
  - 0.3.2
Source:
  - Program.js, line 211

##### Parameters:

Name | Type | Description
--- | --- | ---
`value` | `string` | The dasherize string

##### Returns:

Type:
  `string`

The camel case string

#### (private) _filterObject(object) → {Object}

Remove all the properties that have undefined values from an object

Since:
  - 0.10.0
Source:
  - Program.js, line 73

##### Parameters:

Name | Type | Description
--- | --- | ---
`object` | `Object` |

##### Returns:

Type:
  `Object`

#### (private) _getEnvOptions() → {Promise}

Get informations from the local folder

Since:
  - 0.10.0
Source:
  - Program.js, line 52

##### Returns:

Type:
  `Promise`

#### (private) _getOptionsFromObject(defaults) → {Object}

Extrapulate the options from a program

Since:
  - 0.10.0
Source:
  - Program.js, line 169

##### Parameters:

Name | Type | Description
--- | --- | ---
`defaults` | `Object` |

##### Returns:

Type:
  `Object`

#### (private) _programWithEvents(program, events) → {Commander}

Add all the given events to a program

Since:
  - 0.10.0
Source:
  - Program.js, line 93

##### Parameters:

Name | Type | Description
--- | --- | ---
`program` | `Commander` |
`events` | `Object` |

##### Returns:

Type:
  `Commander`

#### (private) _programWithOptions(program, options) → {Commander}

Add all the given options to a program

Since:
  - 0.10.0
Source:
  - Program.js, line 116

##### Parameters:

Name | Type | Description
--- | --- | ---
`program` | `Commander` |
`options` | `Array` |

##### Returns:

Type:
  `Commander`

#### (async) init() → {Promise}

Initialise the module

Since:
  - 0.10.0
Source:
  - Program.js, line 30

##### Returns:

Type:
  `Promise`