# Gren

Class creating release notes and changelog notes

## Constructor

#### new Gren()

Source:
  - Gren.js, line 24

### Methods

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

Check if the changelog file exists

Since:
  - 0.8.0
Source:
  - Gren.js, line 103

##### Returns:

Type:
  `Promise`

#### (private) _createChangelog(body)

Create the changelog file

Since:
  - 0.8.0
Source:
  - Gren.js, line 121

##### Parameters:

Name | Type | Description
--- | --- | ---
`body` | `string` | The body of the file

#### (private) _createRelease(releaseOptions) → {Promise}

Create a release from a given tag (in the options)

Since:
  - 0.1.0
Source:
  - Gren.js, line 183

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseOptions` | `Object` | The options to build the release:

##### Returns:

Type:
  `Promise`

##### Example

    {
      "tag_name": "1.0.0",
      "target_commitish": "master",
      "name": "v1.0.0",
      "body": "Description of the release",
      "draft": false,
      "prerelease": false
    }

#### (private) _createReleaseRanges(releaseDates) → {Array}

Create the ranges of release dates

Since:
  - 0.5.0
Source:
  - Gren.js, line 808

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseDates` | `Array` | The release dates

##### Returns:

Type:
  `Array`

#### (private) _editRelease(releaseId, releaseOptions) → {Promise}

Edit a release from a given tag (in the options)

Since:
  - 0.5.0
Source:
  - Gren.js, line 149

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseId` | `number` | The id of the release to edit
`releaseOptions` | `Object` | The options to build the release:

##### Returns:

Type:
  `Promise`

##### Example

    {
      "tag_name": "v1.0.0",
      "target_commitish": "master",
      "name": "v1.0.0",
      "body": "Description of the release",
      "draft": false,
      "prerelease": false
    }

#### (private) _filterBlockIssue(range, issue) → {Boolean}

Filter the issue based on the date range, or if is in the release milestone.

Since:
  - 0.9.0
Source:
  - Gren.js, line 739

##### Parameters:

Name | Type | Description
--- | --- | ---
`range` | `Array` | The release ranges
`issue` | `Object` | GitHub issue

##### Returns:

Type:
  `Boolean`

#### (private) _filterCommit(commit) → {Boolean}

Filter a commit based on the includeMessages option and commit message

Since:
  - 0.10.0
Source:
  - Gren.js, line 485

##### Parameters:

Name | Type | Description
--- | --- | ---
`commit` | `Object` |

##### Returns:

Type:
  `Boolean`

#### (private) _filterIssue(issue) → {Boolean}

Filter the issue based on gren options and labels

Since:
  - 0.9.0
Source:
  - Gren.js, line 722

##### Parameters:

Name | Type | Description
--- | --- | ---
`issue` | `Object` |

##### Returns:

Type:
  `Boolean`

#### (private) _generateCommitsBody(commits) → {string}

Return a commit messages generated body

Since:
  - 0.1.0
Source:
  - Gren.js, line 516

##### Parameters:

Name | Type | Description
--- | --- | ---
`commits` | `Array` |

##### Returns:

Type:
  `string`

#### (private) _getClosedIssues(releaseRanges) → {Promise}

Get all the closed issues from the current repo

Since:
  - 0.5.0
Source:
  - Gren.js, line 613

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseRanges` | `Array` | The array of date ranges

##### Returns:

Type:
  `Promise`

The promise which resolves the list of the issues

#### (private) _getCommitBlocks(releaseRanges) → {Array.<Promise>}

Get the blocks of commits based on release dates

Since:
  - 0.5.0
Source:
  - Gren.js, line 564

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseRanges` | `Array` | The array of date ranges

##### Returns:

Type:
  `Array.<Promise>`

#### (private) _getCommitsBetweenTwo(since, until) → {Promise}

Gets all the commits between two dates

Since:
  - 0.1.0
Source:
  - Gren.js, line 541

##### Parameters:

Name | Type | Description
--- | --- | ---
`since` | `string` | The since date in ISO
`until` | `string` | The until date in ISO

##### Returns:

Type:
  `Promise`

The promise which resolves the [Array] commit messages

#### (private) _getIssueBlocks(releaseRanges) → {Array.<Promise>}

Get the blocks of issues based on release dates

Since:
  - 0.5.0
Source:
  - Gren.js, line 761

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseRanges` | `Array` | The array of date ranges

##### Returns:

Type:
  `Array.<Promise>`

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

Get all the tags of the repo

Since:
  - 0.1.0
Source:
  - Gren.js, line 273

##### Returns:

Type:
  `Promise`

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

Get all releases

Since:
  - 0.5.0
Source:
  - Gren.js, line 331

##### Returns:

Type:
  `Promise`

The promise which resolves an array of releases

#### _getReleaseBlocks() → {Promise}

Generate release blocks based on issues or commit messages depending on the option.

Source:
  - Gren.js, line 833

##### Returns:

Type:
  `Promise`

Resolving the release blocks

#### (private) _getSelectedTags(allTags, tags) → {Boolean|Array}

Get the tags information from the given ones, and adds the next one in case only one is given

Since:
  - 0.5.0
Source:
  - Gren.js, line 242

##### Parameters:

Name | Type | Description
--- | --- | ---
`allTags` | `Array` | `string` |
`tags` | `Array.<Object>` |

##### Returns:

Type:
  `Boolean` | `Array`

#### (private) _getTagDates(tags) → {Array.<Promise>}

Get the dates of the last two tags

Since:
  - 0.1.0
Source:
  - Gren.js, line 314

##### Parameters:

Name | Type | Description
--- | --- | ---
`tags` | `Array.<Object>` | List of all the tags in the repo

##### Returns:

Type:
  `Array.<Promise>`

The promises which returns the dates

#### (private) _groupBy(issues) → {Array}

Create groups of issues based on labels

Since:
  - 0.8.0
Source:
  - Gren.js, line 671

##### Parameters:

Name | Type | Description
--- | --- | ---
`issues` | `Array` | The array of all the issues.

##### Returns:

Type:
  `Array`

#### (private) _groupByLabel(issues) → {string}

Group the issues based on their first label

Since:
  - 0.8.0
Source:
  - Gren.js, line 637

##### Parameters:

Name | Type | Description
--- | --- | ---
`issues` | `Array` |

##### Returns:

Type:
  `string`

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

Check if there is connectivity

Since:
  - 0.5.0
Source:
  - Gren.js, line 865

##### Returns:

Type:
  `Promise`

#### (private) _lablesAreIgnored(labels) → {boolean}

Compare the ignored labels with the passed ones

Since:
  - 0.10.0
Source:
  - Gren.js, line 593

##### Parameters:

Name | Type | Description
--- | --- | ---
`labels` | `Array` | The labels to check

##### Returns:

Type:
  `boolean`

If the labels array contains any of the ignore ones

##### Example

    [{
        name: 'bug'
    }]

#### (private) _prepareRelease(tags) → {Promise}

Creates the options to make the release

Since:
  - 0.2.0
Source:
  - Gren.js, line 208

##### Parameters:

Name | Type | Description
--- | --- | ---
`tags` | `Array.<Object>` | The collection of tags

##### Returns:

Type:
  `Promise`

#### (private) _sortReleasesByDate(releaseDates) → {Array}

Sort releases by dates

Since:
  - 0.5.0
Source:
  - Gren.js, line 794

##### Parameters:

Name | Type | Description
--- | --- | ---
`releaseDates` | `Array` |

##### Returns:

Type:
  `Array`

#### (private) _templateCommits(commit) → {string}

Return the templated commit message

Since:
  - 0.1.0
Source:
  - Gren.js, line 377

##### Parameters:

Name | Type | Description
--- | --- | ---
`commit` | `Object` |

##### Returns:

Type:
  `string`

#### (private) _templateGroups(groups) → {string}

Generates the template for the groups

Since:
  - 0.8.0
Source:
  - Gren.js, line 464

##### Parameters:

Name | Type | Description
--- | --- | ---
`groups` | `Object` | The groups to template e.g. { 'bugs': [{...}, {...}, {...}] }

##### Returns:

Type:
  `string`

#### (private) _templateIssue(issue) → {string}

Generate the MD template for each issue

Since:
  - 0.5.0
Source:
  - Gren.js, line 420

##### Parameters:

Name | Type | Description
--- | --- | ---
`issue` | `Object` |

##### Returns:

Type:
  `string`

#### (private) _templateIssueBody(blocks) → {string}

Generate the Changelog issues body template

Since:
  - 0.5.0
Source:
  - Gren.js, line 439

##### Parameters:

Name | Type | Description
--- | --- | ---
`blocks` | `Array.<Object>` |

##### Returns:

Type:
  `string`

#### (private) _templateLabels(issue) → {string}

Generate the MD template from all the labels of a specific issue

Since:
  - 0.5.0
Source:
  - Gren.js, line 396

##### Parameters:

Name | Type | Description
--- | --- | ---
`issue` | `Object` |

##### Returns:

Type:
  `string`

#### changelog() → {Promise}

Generate changelog file based on the release notes or generate new one

Since:
  - 0.10.0
Source:
  - Gren.js, line 71

##### Returns:

Type:
  `Promise`

#### release() → {Promise}

Generate release notes and draft a new release

Since:
  - 0.10.0
Source:
  - Gren.js, line 55

##### Returns:

Type:
  `Promise`