Metadata-Version: 2.1
Name: release-notes-generator
Version: 1.1.2
Summary: A Python package that parses a specific PR template given a list of PRs and generates release notes form them.
Home-page: https://github.counsyl.com/lims/release_note_generator
Author: mmentele
Author-email: mmentele@counsyl.com
License: MIT
Keywords: releases notes
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Requires-Dist: graphqlclient (<=2.0.0)
Requires-Dist: click (<7)
Requires-Dist: pygithub
Provides-Extra: dev
Provides-Extra: test

# Setup
`pip install release-notes-generator`

This will provide a self-documenting command line tool under the name:
`release_notes`

You can ask for help as you would expect: `release_notes --help`

You will need to set your github access token to use it:
`export GITHUB_API_TOKEN = <token>`

# Usage
 You can fetch release notes like:
`release_notes getfor auto_pipeline`

By default this will look for an existing release and try to parse out the pr numbers from it's description. Alternatively, you can use a file:
`release_notes getfor auto_pipeline --source pr_numbers.txt`

Either way will output to the console release notes of the following form:
```
    h2. SOME TITLE
    CHANGE_TYPE: UI
    DESCRIPTION: Some descriptions
    JIRA TICKET: LIMS-123
    PULL REQUEST: 123
    RISK: LOW
    RISK DESCRIPTION: Some description
```

Optionally redirect to a file:
`release_notes getfor auto_pipeline > release_notes.txt`

# How this Works
You can look at `cli.py` for an example of how to use this script.

Essentially, `cli.py` runs the following where the token variable is looking for `GITHUB_API_TOKEN` to be set.

```python
ReleaseNoteGenerator(token, repository_name=repository_name).release_notes()
ReleaseNotesFormatter.output(notes)
```

`ReleaseNoteGenerator` parses the PR numbers from the latest release, if no release exists it will return nothing. It then passes the PR numbers to the pr fetcher which grabs the descriptions. A good entry point it to look at `ReleaseNoteGenerator.release_notes`

# Future Work
This is a quick and dirty initial implementation and we should expand this for easy reuse.

[Complete] Iteration 1: Packaging and Interface Features
- command line interaction to run with a repository_name arg
```
# print output to the screen
release_notes auto_pipeline --print
```
- packaging for easy pip install and use across LIMS projects (ie. use in individual release scripts)
- document API

Iteration 2: Granularity and Robustness Features
- expose the PRFetcher so that we are not coupled to fetching the initial list purely from
- add ability to diff the latest release and previous release and auto generate pr numbers (is this in the ARMS release script?)
- auto generate tag and release adding the PRs to the release notes

Other Features:
- tests
- auto ignore markdown comments
- filter out heading fields in the description and only parse the one line description
- include full pull request links


