# Gren

Class creating release notes and changelog notes

## Constructor

#### new Gren()

Source:
  - Gren.js, line 25

### Methods

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

Check if the changelog file exists

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

##### Returns:

Type:
  `Promise`

#### (private) _createChangelog(body)

Create the changelog file

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

##### 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 182

##### 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 830

##### 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 150

##### 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 761

##### 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 507

##### 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 744

##### 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 538

##### 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 635

##### 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 586

##### 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 563

##### 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 783

##### 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 283

##### Returns:

Type:
  `Promise`

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

Get all releases

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

##### 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 855

##### 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 240

##### 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 324

##### 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 693

##### 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 659

##### 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 887

##### Returns:

Type:
  `Promise`

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

Compare the ignored labels with the passed ones

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

##### 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'
    }]

#### _listReleases(options) → {Promise}

Temporary function for this.repo.listReleases to accept options

Source:
  - Gren.js, line 341
See:
  - https://github.com/github-tools/github/pull/485

##### Parameters:

Name | Type | Description
--- | --- | ---
`options` | `Object` |

##### Returns:

Type:
  `Promise`

#### _listTags(options) → {Promise}

Temporary function for this.repo.listReleases to accept options

Source:
  - Gren.js, line 271
See:
  - https://github.com/github-tools/github/pull/485

##### Parameters:

Name | Type | Description
--- | --- | ---
`options` | `Object` |

##### Returns:

Type:
  `Promise`

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

Creates the options to make the release

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

##### 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 816

##### 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 399

##### 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 486

##### 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 442

##### 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 461

##### 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 418

##### 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 72

##### Returns:

Type:
  `Promise`

#### release() → {Promise}

Generate release notes and draft a new release

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

##### Returns:

Type:
  `Promise`