summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-07-11 10:47:28 +0200
committerFlorian Bruhin <me@the-compiler.org>2019-07-11 10:47:28 +0200
commit16a591e8876c4991dc081c3885a461083596fb02 (patch)
treeeea1c6387abc09f72e93837fa81d710cf153c3f1
parentcabbfd84f68bef6d16780657363a2dffd1a87fb4 (diff)
parenta9f9de4b35180bf403ad996c2c0de2be6216599c (diff)
downloadqutebrowser-16a591e8876c4991dc081c3885a461083596fb02.tar.gz
qutebrowser-16a591e8876c4991dc081c3885a461083596fb02.zip
Merge remote-tracking branch 'origin/pr/4304'
-rw-r--r--.bumpversion.cfg9
-rw-r--r--doc/contributing.asciidoc22
-rw-r--r--misc/org.qutebrowser.qutebrowser.appdata.xml25
-rw-r--r--qutebrowser/__init__.py4
-rwxr-xr-xscripts/dev/build_release.py14
-rw-r--r--scripts/dev/update_version.py125
6 files changed, 173 insertions, 26 deletions
diff --git a/.bumpversion.cfg b/.bumpversion.cfg
new file mode 100644
index 000000000..299c56c98
--- /dev/null
+++ b/.bumpversion.cfg
@@ -0,0 +1,9 @@
+[bumpversion]
+current_version = 1.5.0
+commit = True
+tag = True
+sign_tags = True
+tag_name = v{new_version}
+
+[bumpversion:file:qutebrowser/__init__.py]
+parse = __version__ = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
diff --git a/doc/contributing.asciidoc b/doc/contributing.asciidoc
index 6fe6fb740..f49d3148b 100644
--- a/doc/contributing.asciidoc
+++ b/doc/contributing.asciidoc
@@ -702,25 +702,11 @@ qutebrowser release
* Make sure there are no unstaged changes and the tests are green.
* Make sure all issues with the related milestone are closed.
-* Run `x=... y=...` to set the respective shell variables.
-
-* Update changelog (remove *(unreleased)*).
-* Adjust `__version_info__` in `qutebrowser/__init__.py`.
+* Update changelog (remove *(unreleased)*) and commit.
* Consider updating the completions for `content.headers.user_agent` in `configdata.yml`.
-* Commit.
-
-* Create annotated git tag (`git tag -s "v1.$x.$y" -m "Release v1.$x.$y"`).
-* `git push origin`; `git push origin v1.$x.$y`.
* If committing on minor branch, cherry-pick release commit to master.
-* Create release on github.
-* Mark the milestone at https://github.com/qutebrowser/qutebrowser/milestones
-as closed.
-
-* Linux: Run `git checkout v1.$x.$y && ./.venv/bin/python3 scripts/dev/build_release.py --upload v1.$x.$y`.
-* Windows: Run `git checkout v1.X.Y; py -3 scripts\dev\build_release.py --asciidoc C:\Python27\python %userprofile%\bin\asciidoc-8.6.10\asciidoc.py --upload v1.X.Y` (replace X/Y by hand).
-* macOS: Run `git checkout v1.X.Y && python3 scripts/dev/build_release.py --upload v1.X.Y` (replace X/Y by hand).
-* On server:
- - Run `bash download_release.sh 1.X.Y` (replace X/Y by hand).
- - Run `git pull github master && sudo python3 scripts/asciidoc2html.py --website /srv/http/qutebrowser`
+* Mark the milestone at https://github.com/qutebrowser/qutebrowser/milestones as closed.
+* Run `./.venv/bin/python3 scripts/dev/update_version.py {major,minor,patch}`.
+* Run the printed instructions accordingly.
* Update `qutebrowser-git` PKGBUILD if dependencies/install changed.
* Announce to qutebrowser and qutebrowser-announce mailinglist.
diff --git a/misc/org.qutebrowser.qutebrowser.appdata.xml b/misc/org.qutebrowser.qutebrowser.appdata.xml
index e44c68046..9da4eb542 100644
--- a/misc/org.qutebrowser.qutebrowser.appdata.xml
+++ b/misc/org.qutebrowser.qutebrowser.appdata.xml
@@ -56,7 +56,7 @@
<release version="1.3.3" date="2018-06-21"/>
<release version="1.3.2" date="2018-06-10"/>
<release version="1.3.1" date="2018-05-29"/>
- <release version="1.3.0" date="2018-05-04"/>
+ <release version="1.3.0" date="2018-05-03"/>
<release version="1.2.1" date="2018-03-14"/>
<release version="1.2.0" date="2018-03-09"/>
<release version="1.1.2" date="2018-03-01"/>
@@ -67,5 +67,28 @@
<release version="1.0.2" date="2017-10-17"/>
<release version="1.0.1" date="2017-10-13"/>
<release version="1.0.0" date="2017-10-12"/>
+ <release version="0.11.0" date="2017-07-04"/>
+ <release version="0.10.1" date="2017-03-08"/>
+ <release version="0.10.0" date="2017-02-25"/>
+ <release version="0.9.1" date="2017-01-13"/>
+ <release version="0.9.0" date="2016-12-28"/>
+ <release version="0.8.4" date="2016-11-06"/>
+ <release version="0.8.3" date="2016-11-05"/>
+ <release version="0.8.1" date="2016-07-27"/>
+ <release version="0.8.0" date="2016-07-26"/>
+ <release version="0.7.0" date="2016-06-10"/>
+ <release version="0.6.2" date="2016-04-30"/>
+ <release version="0.6.1" date="2016-04-10"/>
+ <release version="0.6.0" date="2016-04-04"/>
+ <release version="0.5.1" date="2016-01-18"/>
+ <release version="0.5.0" date="2016-01-05"/>
+ <release version="0.4.0" date="2015-09-11"/>
+ <release version="0.3.0" date="2015-06-28"/>
+ <release version="0.2.1" date="2015-04-19"/>
+ <release version="0.2.0" date="2015-04-19"/>
+ <release version="0.1.4" date="2015-03-19"/>
+ <release version="0.1.3" date="2015-02-12"/>
+ <release version="0.1.1" date="2014-12-28"/>
+ <release version="0.1.0" date="2014-04-25"/>
</releases>
</component>
diff --git a/qutebrowser/__init__.py b/qutebrowser/__init__.py
index f7b76b71f..1f93fced1 100644
--- a/qutebrowser/__init__.py
+++ b/qutebrowser/__init__.py
@@ -26,8 +26,8 @@ __copyright__ = "Copyright 2014-2019 Florian Bruhin (The Compiler)"
__license__ = "GPL"
__maintainer__ = __author__
__email__ = "mail@qutebrowser.org"
-__version_info__ = (1, 6, 3)
-__version__ = '.'.join(str(e) for e in __version_info__)
+__version__ = "1.6.3"
+__version_info__ = [int(part) for part in __version__.split('.')]
__description__ = "A keyboard-driven, vim-like browser based on PyQt5."
basedir = os.path.dirname(os.path.realpath(__file__))
diff --git a/scripts/dev/build_release.py b/scripts/dev/build_release.py
index c400cf86d..8015ebcc8 100755
--- a/scripts/dev/build_release.py
+++ b/scripts/dev/build_release.py
@@ -392,14 +392,14 @@ def main():
"asciidoc.py. If not given, it's searched in PATH.",
nargs=2, required=False,
metavar=('PYTHON', 'ASCIIDOC'))
- parser.add_argument('--upload', help="Tag to upload the release for",
- nargs=1, required=False, metavar='TAG')
+ parser.add_argument('--upload', action='store_true', required=False,
+ help="Toggle to upload the release to GitHub")
args = parser.parse_args()
utils.change_cwd()
upload_to_pypi = False
- if args.upload is not None:
+ if args.upload:
# Fail early when trying to upload without github3 installed
# or without API token
import github3 # pylint: disable=unused-import
@@ -419,10 +419,14 @@ def main():
artifacts = build_sdist()
upload_to_pypi = True
- if args.upload is not None:
+ if args.upload:
+ from qutebrowser import __version__
utils.print_title("Press enter to release...")
input()
- github_upload(artifacts, args.upload[0])
+
+ version_tag = "v" + __version__
+
+ github_upload(artifacts, version_tag)
if upload_to_pypi:
pypi_upload(artifacts)
else:
diff --git a/scripts/dev/update_version.py b/scripts/dev/update_version.py
new file mode 100644
index 000000000..ae1740357
--- /dev/null
+++ b/scripts/dev/update_version.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
+
+# Copyright 2018 Andy Mender <andymenderunix@gmail.com>
+
+# This file is part of qutebrowser.
+#
+# qutebrowser is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# qutebrowser is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
+
+import argparse
+import datetime
+import os.path
+import subprocess
+
+from lxml import etree
+
+from qutebrowser import basedir
+
+# use basedir to get project root dir
+appdata_path = os.path.join(os.path.dirname(basedir), "misc",
+ "qutebrowser.appdata.xml")
+version_xpath = '//*[@type="desktop"]/releases'
+
+
+def bump_version(version_leap="patch"):
+ """Update qutebrowser release version.
+
+ Args:
+ version_leap: define the jump between versions
+ ("major", "minor", "patch")
+ """
+ subprocess.run(['bump2version', version_leap], check=True)
+
+
+def read_appdata():
+ """Read qutebrowser.appdata.xml into an ElementTree object.
+
+ :Return:
+ ElementTree object representing appdata.xml
+ """
+ with open(appdata_path, "rb") as f:
+ appdata = etree.fromstring(f.read())
+
+ return appdata
+
+
+def write_appdata(appdata):
+ """Write qutebrowser.appdata ElementTree object to a file.
+
+ Args:
+ appdata: appdata ElementTree object
+ """
+ with open(appdata_path, "wb") as f:
+ f.write(etree.tostring(appdata, pretty_print=True))
+
+
+def add_release(releases, version_string, date_string):
+ """Add new <release> block to <releases> block of the appdata XML.
+
+ Args:
+ releases: <releases> XML ElementTree
+ version_string: new qutebrowser version
+ date_string: release date for the new version
+ """
+ release = etree.Element("release")
+ release.attrib["version"] = version_string
+ release.attrib["date"] = date_string
+
+ releases.append(release)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Update release version.")
+ parser.add_argument('bump', action="store",
+ choices=["major", "minor", "patch"],
+ required=True, help="Update release version")
+ args = parser.parse_args()
+
+ bump_version(args.bump)
+
+ from qutebrowser import __version__
+
+ appdata_tree = read_appdata()
+
+ releases_block = appdata_tree.xpath(version_xpath)[0]
+
+ add_release(releases_block, __version__, datetime.date.today().isoformat())
+
+ write_appdata(appdata_tree)
+
+ print("Run the following commands to create a new release:")
+
+ print("* Run `git push origin; git push {v}`.".format(v=__version__))
+
+ print("* Create new release via GitHub",
+ "(required to upload release artifacts).")
+
+ print("* Linux: Run `git checkout {v} &&".format(v=__version__),
+ "./.venv/bin/python3 scripts/dev/build_release.py --upload`")
+
+ print("* Windows: Run `git checkout {v};".format(v=__version__),
+ "py -3 scripts\dev\\build_release.py --asciidoc",
+ "C:\Python27\python",
+ "%userprofile%\\bin\\asciidoc-8.6.10\\asciidoc.py --upload`.")
+
+ print("* macOS: Run `git checkout {v} &&".format(v=__version__),
+ "python3 scripts/dev/build_release.py --upload`.")
+
+ print("* On server:")
+ print("- Run `python3 scripts/dev/download_release.py",
+ "v{v}`.".format(v=__version__))
+ print("- Run `git pull github master &&",
+ "sudo python3 scripts/asciidoc2html.py",
+ "--website /srv/http/qutebrowser`")