From 6206a953e1b71c379e4b301a3eadd85949321d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Marqui=CC=81nez=20Ferra=CC=81ndiz?= Date: Sun, 3 Nov 2013 15:43:20 +0100 Subject: [PATCH 1/3] Convert CHANGELOG to markdown --- .gitignore | 1 + CHANGELOG | 14 -------------- CHANGELOG.md | 14 ++++++++++++++ Makefile | 9 ++++++--- devscripts/release.sh | 6 +++--- 5 files changed, 24 insertions(+), 20 deletions(-) delete mode 100644 CHANGELOG create mode 100644 CHANGELOG.md diff --git a/.gitignore b/.gitignore index 7dd0ad09b..a5181c1bb 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ build/ dist/ MANIFEST README.txt +CHANGELOG youtube-dl.1 youtube-dl.bash-completion youtube-dl diff --git a/CHANGELOG b/CHANGELOG deleted file mode 100644 index 3fa116733..000000000 --- a/CHANGELOG +++ /dev/null @@ -1,14 +0,0 @@ -2013.01.02 Codename: GIULIA - - * Add support for ComedyCentral clips - * Corrected Vimeo description fetching - * Added the --no-post-overwrites argument - * --verbose offers more environment info - * New info_dict field: uploader_id - * New updates system, with signature checking - * New IEs: NBA, JustinTV, FunnyOrDie, TweetReel, Steam, Ustream - * Fixed IEs: BlipTv - * Fixed for Python 3 IEs: Xvideo, Youku, XNXX, Dailymotion, Vimeo, InfoQ - * Simplified IEs and test code - * Various (Python 3 and other) fixes - * Revamped and expanded tests diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..de23fe207 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +# 2013.01.02 Codename: GIULIA + +* Add support for ComedyCentral clips +* Corrected Vimeo description fetching +* Added the --no-post-overwrites argument +* --verbose offers more environment info +* New info_dict field: uploader_id +* New updates system, with signature checking +* New IEs: NBA, JustinTV, FunnyOrDie, TweetReel, Steam, Ustream +* Fixed IEs: BlipTv +* Fixed for Python 3 IEs: Xvideo, Youku, XNXX, Dailymotion, Vimeo, InfoQ +* Simplified IEs and test code +* Various (Python 3 and other) fixes +* Revamped and expanded tests diff --git a/Makefile b/Makefile index c6d09932b..d15167e34 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ all: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion clean: - rm -rf youtube-dl.1 youtube-dl.bash-completion README.txt MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz + rm -rf youtube-dl.1 youtube-dl.bash-completion README.txt CHANGELOG MANIFEST build/ dist/ .coverage cover/ youtube-dl.tar.gz cleanall: clean rm -f youtube-dl youtube-dl.exe @@ -54,6 +54,9 @@ README.md: youtube_dl/*.py youtube_dl/*/*.py README.txt: README.md pandoc -f markdown -t plain README.md -o README.txt +CHANGELOG: CHANGELOG.md + pandoc -f markdown -t plain $< -o $@ + youtube-dl.1: README.md pandoc -s -f markdown -t man README.md -o youtube-dl.1 @@ -62,7 +65,7 @@ youtube-dl.bash-completion: youtube_dl/*.py youtube_dl/*/*.py devscripts/bash-co bash-completion: youtube-dl.bash-completion -youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash-completion +youtube-dl.tar.gz: youtube-dl README.md README.txt CHANGELOG.md CHANGELOG youtube-dl.1 youtube-dl.bash-completion @tar -czf youtube-dl.tar.gz --transform "s|^|youtube-dl/|" --owner 0 --group 0 \ --exclude '*.DS_Store' \ --exclude '*.kate-swp' \ @@ -74,6 +77,6 @@ youtube-dl.tar.gz: youtube-dl README.md README.txt youtube-dl.1 youtube-dl.bash- --exclude 'testdata' \ -- \ bin devscripts test youtube_dl \ - CHANGELOG LICENSE README.md README.txt \ + CHANGELOG.md CHANGELOG LICENSE README.md README.txt \ Makefile MANIFEST.in youtube-dl.1 youtube-dl.bash-completion setup.py \ youtube-dl diff --git a/devscripts/release.sh b/devscripts/release.sh index 2766174c1..1b9799f8d 100755 --- a/devscripts/release.sh +++ b/devscripts/release.sh @@ -23,7 +23,7 @@ fi if [ -z "$1" ]; then echo "ERROR: specify version number like this: $0 1994.09.06"; exit 1; fi version="$1" if [ ! -z "`git tag | grep "$version"`" ]; then echo 'ERROR: version already present'; exit 1; fi -if [ ! -z "`git status --porcelain | grep -v CHANGELOG`" ]; then echo 'ERROR: the working directory is not clean; commit or stash changes'; exit 1; fi +if [ ! -z "`git status --porcelain | grep -v CHANGELOG.md`" ]; then echo 'ERROR: the working directory is not clean; commit or stash changes'; exit 1; fi if [ ! -f "updates_key.pem" ]; then echo 'ERROR: updates_key.pem missing'; exit 1; fi /bin/echo -e "\n### First of all, testing..." @@ -37,9 +37,9 @@ fi /bin/echo -e "\n### Changing version in version.py..." sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dl/version.py -/bin/echo -e "\n### Committing CHANGELOG README.md and youtube_dl/version.py..." +/bin/echo -e "\n### Committing CHANGELOG.md README.md and youtube_dl/version.py..." make README.md -git add CHANGELOG README.md youtube_dl/version.py +git add CHANGELOG.md README.md youtube_dl/version.py git commit -m "release $version" /bin/echo -e "\n### Now tagging, signing and pushing..." From 41aa1cb603316f1b9e2b85110f6f2f7e22d5db52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Marqui=CC=81nez=20Ferra=CC=81ndiz?= Date: Sun, 3 Nov 2013 15:51:57 +0100 Subject: [PATCH 2/3] release.sh: update the changelog with the new version The section must be titled '@DEV@' --- CHANGELOG.md | 1 + devscripts/release.sh | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de23fe207..5d04a42fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,4 @@ + # 2013.01.02 Codename: GIULIA * Add support for ComedyCentral clips diff --git a/devscripts/release.sh b/devscripts/release.sh index 1b9799f8d..c38b0259a 100755 --- a/devscripts/release.sh +++ b/devscripts/release.sh @@ -34,8 +34,9 @@ else nosetests --verbose --with-coverage --cover-package=youtube_dl --cover-html test --stop || exit 1 fi -/bin/echo -e "\n### Changing version in version.py..." +/bin/echo -e "\n### Changing version in version.py and CHANGELOG..." sed -i "s/__version__ = '.*'/__version__ = '$version'/" youtube_dl/version.py +sed -i "s/@DEV@/$version/" CHANGELOG.md /bin/echo -e "\n### Committing CHANGELOG.md README.md and youtube_dl/version.py..." make README.md From 87e8c5ea88c4f849b617ea5904a4dc6a39696482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Marqui=CC=81nez=20Ferra=CC=81ndiz?= Date: Sun, 3 Nov 2013 16:17:27 +0100 Subject: [PATCH 3/3] release: Add the changelog for the current version to the json file and to the atom feed --- devscripts/extract-changes.py | 29 +++++++++++++++++++++++++++++ devscripts/gh-pages/add-version.py | 6 +++++- devscripts/gh-pages/update-feed.py | 12 +++++++++++- devscripts/release.sh | 3 +++ 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100755 devscripts/extract-changes.py diff --git a/devscripts/extract-changes.py b/devscripts/extract-changes.py new file mode 100755 index 000000000..430132d08 --- /dev/null +++ b/devscripts/extract-changes.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +import sys +import json + +target_version = sys.argv[1] + +def empty_doc(): + return [{"unMeta":{}}, []] + +doc = json.loads(input()) +body = doc[1] + + +# We get the text for each version +versions = {} +current_version = None +for el in body: + el.keys() + type_ = list(el.keys())[0] + if type_ == 'Header': + current_version = el['Header'][2][0]['Str'] + versions[current_version] = empty_doc() + elif current_version is not None: + versions[current_version][1].append(el) + +# We get the document for the target version and create the json string for pandoc +version_changelog = versions.get(target_version, empty_doc()) +print(json.dumps(version_changelog)) + diff --git a/devscripts/gh-pages/add-version.py b/devscripts/gh-pages/add-version.py index 35865b2f3..8b4b81d06 100755 --- a/devscripts/gh-pages/add-version.py +++ b/devscripts/gh-pages/add-version.py @@ -5,7 +5,6 @@ import sys import hashlib import os.path - if len(sys.argv) <= 1: print('Specify the version number as parameter') sys.exit() @@ -35,6 +34,11 @@ for key, filename in filenames.items(): sha256sum = hashlib.sha256(data).hexdigest() new_version[key] = (url, sha256sum) +with open(os.path.join(build_dir, 'CHANGELOG.md'), 'rt') as f: + changes = f.read().strip() + if changes: + new_version['changelog'] = changes + versions_info['versions'][version] = new_version versions_info['latest'] = version diff --git a/devscripts/gh-pages/update-feed.py b/devscripts/gh-pages/update-feed.py index 16571a924..bb671e054 100755 --- a/devscripts/gh-pages/update-feed.py +++ b/devscripts/gh-pages/update-feed.py @@ -5,6 +5,7 @@ import datetime import textwrap import json +import subprocess atom_template=textwrap.dedent("""\ @@ -22,7 +23,8 @@ entry_template=textwrap.dedent("""
- Downloads available at https://yt-dl.org/downloads/@VERSION@/ +

Downloads available at https://yt-dl.org/downloads/@VERSION@/

+

@CHANGES@

@@ -46,6 +48,14 @@ versions.sort() for v in versions: entry = entry_template.replace('@TIMESTAMP@',v.replace('.','-')) entry = entry.replace('@VERSION@',v) + changes = versions_info['versions'][v].get('changelog', '') + if changes: + # We only convert the changelog to html with pandoc if it's not an empty string + pandoc_cmd = ['pandoc', '--from', 'markdown', '--to', 'html'] + pandoc = subprocess.Popen(pandoc_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + changes = pandoc.communicate(input=changes.encode('utf-8'))[0].decode('utf-8') + changes = u'Changelog: {}'.format(changes) + entry = entry.replace('@CHANGES@', changes) entries.append(entry) entries_str = textwrap.indent(''.join(entries), '\t') diff --git a/devscripts/release.sh b/devscripts/release.sh index c38b0259a..123b44163 100755 --- a/devscripts/release.sh +++ b/devscripts/release.sh @@ -74,6 +74,9 @@ scp -r "build/$version" ytdl@yt-dl.org:html/tmp/ ssh ytdl@yt-dl.org "mv html/tmp/$version html/downloads/" ssh ytdl@yt-dl.org "sh html/update_latest.sh $version" +echo -e "\n### Generating changelog" +pandoc CHANGELOG.md -t json | ./devscripts/extract-changes.py ${version} | pandoc -f json -o build/$version/CHANGELOG.md + /bin/echo -e "\n### Now switching to gh-pages..." git clone --branch gh-pages --single-branch . build/gh-pages ROOT=$(pwd)