From 6b9cc75ffc9e8d76d81cfa8841bd5c1434c76e09 Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Tue, 3 Sep 2019 15:54:35 +0200 Subject: [PATCH] Add a machine readable changelog --- CHANGELOG.md | 47 ++++++------ changelog.yaml | 185 +++++++++++++++++++++++++++++++++++++++++++++ generate_changelog | 33 ++++++++ 3 files changed, 240 insertions(+), 25 deletions(-) create mode 100644 changelog.yaml create mode 100755 generate_changelog diff --git a/CHANGELOG.md b/CHANGELOG.md index d6f24e7..22ab6c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,11 @@ Changelog --------- + + **0.22.0 (2019-08-01)** -* **BRAEAKING**: Dropped support for Python 3.3 +* **BREAKING:** Dropped support for Python 3.3 * Add `toot notifications` to show notifications (thanks @dlax) * Add posting and replying to curses interface (thanks @Skehmatics) * Add `--language` option to `toot post` @@ -11,21 +13,18 @@ Changelog **0.21.0 (2019-02-15)** +* **BREAKING:** in `toot timeline` short argument for selecting a list is no + longer `-i`, this has been changed to select the instance, so that it is the + same as on other commands, please use the long form `--list` instead * Add `toot reblogged_by` to show who reblogged a status (#88) * Add `toot thread` to show a status with its replies (#87) * Better handling of wide characters (eastern scripts, emojis) (#84) -* Improved `timeline`, nicer visuals, and it will now ask to show next batch - of toots, unless given the `--once` option +* Improved `timeline`, nicer visuals, and it will now ask to show next batch of + toots, unless given the `--once` option * Add public/local/tag timelines to `timeline` and `curses` * Support for boosting and favouriting in `toot curses`, press `f`/`b` (#88, #93) -**BC BREAK** - -* in `toot timeline` short argument for selecting a list is no longer `-i`, this - has been changed to select the instance, so that it is the same as on other - commands, please use the long form `--list` instead - **0.20.0 (2019-02-01)** * Enable interaction with instances using http instead of https (#56) @@ -49,10 +48,8 @@ Changelog * Add support for public, tag and list timelines in `toot timeline` (#52) * Add `--sensitive` and `--spoiler-text` options to `toot post` (#63) -* Curses app improvements: - * Respect sensitive content, require keypress to show - * Add help modal (press h) - * Misc rendering improvements +* Curses app improvements (respect sensitive content, require keypress to show, + add help modal, misc improvements) **0.17.1 (2018-01-15)** @@ -64,13 +61,12 @@ Changelog * Changed configuration file format to allow switching between multiple logged in accounts (#32) * Respect XDG_CONFIG_HOME environment variable to locate config home (#12) -* Many improvements to the curses app: - * Dynamically calculate left window width, supports narrower windows (#27) - * Redraw windows when terminal size changes (#25) - * Support scrolling the status list - * Fetch next batch of statuses when bottom is reached - * Support up/down arrows (#30) - * Misc visual improvements +* Dynamically calculate left window width, supports narrower windows (#27) +* Redraw windows when terminal size changes (#25) +* Support scrolling the status list +* Fetch next batch of statuses when bottom is reached +* Support up/down arrows (#30) +* Misc visual improvements **0.16.2 (2018-01-02)** @@ -82,8 +78,8 @@ Changelog **0.16.0 (2017-12-30)** -* **Drop support for Python 2** because it's a pain to support and caused bugs - with handling unicode. +* **BREAKING:** Dropped support for Python 2, because it's a pain to support and + caused bugs with handling unicode. * Remove hacky `login_2fa` command, use `login_browser` instead * Add `instance` command * Allow `post`ing media without text (#24) @@ -136,15 +132,15 @@ Changelog **0.8.0 (2017-04-19)** -* Renamed command `2fa` to `login_2fa` **BC BREAK** +* **BREAKING:** Renamed command `2fa` to `login_2fa` * It is now possible to pipe text into `toot post` **0.7.0 (2017-04-18)** +* **WARNING:** Due to changes in configuration format, after upgrading to this + version, you will be required to log in to your Mastodon instance again. * Experimental 2FA support (#3) * Do not create a new application for each login -* **Warning**: Due to changes in configuration format, after upgrading to this - version, you will be required to log in to your Mastodon instance again. **0.6.0 (2017-04-17)** @@ -177,3 +173,4 @@ Changelog **0.1.0 (2017-04-12)** * Initial release + diff --git a/changelog.yaml b/changelog.yaml new file mode 100644 index 0000000..f412281 --- /dev/null +++ b/changelog.yaml @@ -0,0 +1,185 @@ + +0.22.0: + date: 2019-08-01 + changes: + - "**BREAKING:** Dropped support for Python 3.3" + - "Add `toot notifications` to show notifications (thanks @dlax)" + - "Add posting and replying to curses interface (thanks @Skehmatics)" + - "Add `--language` option to `toot post`" + - "Enable attaching upto 4 files via `--media` option on `toot post`" + +0.21.0: + date: 2019-02-15 + changes: + - "**BREAKING:** in `toot timeline` short argument for selecting a list is no longer `-i`, this has been changed to select the instance, so that it is the same as on other commands, please use the long form `--list` instead" + - "Add `toot reblogged_by` to show who reblogged a status (#88)" + - "Add `toot thread` to show a status with its replies (#87)" + - "Better handling of wide characters (eastern scripts, emojis) (#84)" + - "Improved `timeline`, nicer visuals, and it will now ask to show next batch of toots, unless given the `--once` option" + - "Add public/local/tag timelines to `timeline` and `curses`" + - "Support for boosting and favouriting in `toot curses`, press `f`/`b` (#88, #93)" + +0.20.0: + date: 2019-02-01 + changes: + - "Enable interaction with instances using http instead of https (#56)" + - "Enable proxy usage via environment variables (#47)" + - "Make `toot post` prompt for input if no text is given (#82)" + - "Add post-related commands: `favourite`, `unfavourite`, `reblog`, `unreblog`, `pin` & `unpin` (#75)" + +0.19.0: + date: 2018-06-27 + changes: + - "Add support for replying to a toot (#6)" + - "Add `toot delete` command for deleting a toot (#54)" + - "Add global `--quiet` flag to silence output (#46)" + - "Make `toot login` provide browser login, and `toot login_cli` log in via console. This makes it clear what's the preferred option." + - "Use Idempotency-Key header to prevent multiple toots being posted if request is retried" + - "Fix a bug where all media would be marked as sensitive" + +0.18.0: + date: 2018-06-12 + changes: + - "Add support for public, tag and list timelines in `toot timeline` (#52)" + - "Add `--sensitive` and `--spoiler-text` options to `toot post` (#63)" + - "Curses app improvements (respect sensitive content, require keypress to show, add help modal, misc improvements)" + +0.17.1: + date: 2018-01-15 + changes: + - "Create config folder if it does not exist (#40)" + - "Fix packaging to include `toot.ui` package (#41)" + +0.17.0: + date: 2018-01-15 + changes: + - "Changed configuration file format to allow switching between multiple logged in accounts (#32)" + - "Respect XDG_CONFIG_HOME environment variable to locate config home (#12)" + - "Dynamically calculate left window width, supports narrower windows (#27)" + - "Redraw windows when terminal size changes (#25)" + - "Support scrolling the status list" + - "Fetch next batch of statuses when bottom is reached" + - "Support up/down arrows (#30)" + - "Misc visual improvements" + +0.16.2: + date: 2018-01-02 + changes: + - "No changes, pushed to fix a packaging issue" + +0.16.1: + date: 2017-12-30 + changes: + - "Fix bug with app registration" + +0.16.0: + date: 2017-12-30 + changes: + - "**BREAKING:** Dropped support for Python 2, because it's a pain to support and caused bugs with handling unicode." + - "Remove hacky `login_2fa` command, use `login_browser` instead" + - "Add `instance` command" + - "Allow `post`ing media without text (#24)" + +0.15.1: + date: 2017-12-12 + changes: + - "Fix crash when toot's URL is None (#33), thanks @veer66" + +0.15.0: + date: 2017-09-09 + changes: + - "Fix Windows compatibility (#18)" + +0.14.0: + date: 2017-09-07 + changes: + - "Add `--debug` option to enable debug logging instead of using the `TOOT_DEBUG` environment variable." + - "Fix: don't read requirements.txt from setup.py, this fails when packaging deb and potentially in some other cases (see #18)" + +0.13.0: + date: 2017-08-26 + changes: + - "Allow passing `--instance` and `--email` to login command" + - "Add `login_browser` command for proper two factor authentication through the browser (#19, #23)" + +0.12.0: + date: 2017-05-08 + changes: + - "Add option to disable ANSI color in output (#15)" + - "Return nonzero error code on error (#14)" + - "Change license to GPLv3" + +0.11.0: + date: 2017-05-07 + changes: + - "Fix error when running toot from crontab (#11)" + - "Minor tweaks" + +0.10.0: + date: 2017-04-26 + changes: + - "Add commands: `block`, `unblock`, `mute`, `unmute`" + - "Internal improvements" + +0.9.1: + date: 2017-04-24 + changes: + - "Fix conflict with curses package name" + +0.9.0: + date: 2017-04-21 + changes: + - "Add `whois` command" + - "Add experimental `curses` app for viewing the timeline" + +0.8.0: + date: 2017-04-19 + changes: + - "**BREAKING:** Renamed command `2fa` to `login_2fa`" + - "It is now possible to pipe text into `toot post`" + +0.7.0: + date: 2017-04-18 + changes: + - "**WARNING:** Due to changes in configuration format, after upgrading to this version, you will be required to log in to your Mastodon instance again." + - "Experimental 2FA support (#3)" + - "Do not create a new application for each login" + +0.6.0: + date: 2017-04-17 + changes: + - "Add `whoami` command" + - "Migrate from `optparse` to `argparse`" + +0.5.0: + date: 2017-04-16 + changes: + - "Add `search`, `follow` and `unfollow` commands" + - "Migrate from `optparse` to `argparse`" + +0.4.0: + date: 2017-04-15 + changes: + - "Add `upload` command to post media" + - "Add `--visibility` and `--media` options to `post` command" + +0.3.0: + date: 2017-04-13 + changes: + - "Add: view timeline" + - "Require an explicit login" + +0.2.1: + date: 2017-04-13 + changes: + - "Fix invalid requirements in setup.py" + +0.2.0: + date: 2017-04-12 + changes: + - "Bugfixes" + +0.1.0: + date: 2017-04-12 + changes: + - "Initial release" diff --git a/generate_changelog b/generate_changelog new file mode 100755 index 0000000..5e6021e --- /dev/null +++ b/generate_changelog @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +""" +Generates a more user-readable changelog from changelog.yaml. +""" + +import textwrap +import yaml + +with open("changelog.yaml", "r") as f: + data = yaml.safe_load(f) + +print("Changelog") +print("---------") +print() +print("") +print() + +for version in data.keys(): + date = data[version]["date"] + changes = data[version]["changes"] + print(f"**{version} ({date})**") + print() + for c in changes: + lines = textwrap.wrap(c, 78) + initial = True + for line in lines: + if initial: + print("* " + line) + initial = False + else: + print(" " + line) + print()