Files @ 8ad40ef0ea80
Branch filter:

Location: kallithea/scripts/make-release

Søren Løvborg
db: add some PullRequest.query() shortcuts

This makes database query code more explicit and increases readability.

E.g. the function name get_pullrequest_cnt_for_user was bad, because the
concept of "pullrequest for user" is incredibly vague, and could refer
to any kind of association between PRs and users. (Quiz time! Does it
mean that the user is the PR owner, that the user is reviewing, or that
the user has commented on the PR and thus is receiving notifications?)

A descriptive name could be "get_open_pull_request_count_for_reviewer",
because the function is indeed only concerned with reviewers and only
with open pull requests. But at this point, we might as well say
PullRequest.query(reviewer_id=user, include_closed=False).count()
which is only slightly longer, and doesn't require us to write dozens
of little wrapper functions (including, any moment now, a separate
function for listing the PRs instead of counting them).

Note that we're not actually going down an abstraction level by doing
this. We're still operating on the concepts of "pull request", "open"
and "reviewer", and are not leaking database implementation details.

The query() shortcuts are designed so they default to not altering
the query. Any processing requires explicit opt-in by the caller.
#!/bin/bash
set -e
set -x

echo "Checking tools needed for uploading stuff"
pip freeze | grep '^Sphinx==' || pip install Sphinx
pip freeze | grep '^Sphinx-PyPI-upload==' || pip install Sphinx-PyPI-upload

echo "Verifying everything can build"
hg purge --all dist
python2 setup.py build_sphinx
python2 setup.py compile_catalog # TODO: check for errors
python2 setup.py sdist

echo "Verifying VERSION from kallithea/__init__.py"
namerel=$(cd dist && echo Kallithea-*.tar.gz)
namerel=${namerel%.tar.gz}
version=${namerel#Kallithea-}
echo "Releasing Kallithea $version in directory $namerel"
echo "Verifying current revision is tagged for $version"
hg log -r "'$version'&." | grep .

echo "Cleaning before making release build"
hg up -c .
hg revert -a -r null
hg up -C "'$version'&."
hg purge --all

echo "Building dist file"
python2 setup.py compile_catalog
python2 setup.py sdist

echo "Verifying dist file content"
tar tf dist/Kallithea-*.tar.gz | sed "s|^$namerel/||" | LANG=C sort > scripts/manifest
hg diff
hg up -c . # fail if manifest changed

echo "Now, make sure"
echo "* the copyright and contributor lists have been updated"
echo "* all tests are passing"
echo "* release note is ready"
echo "* announcement is ready"
echo "* source has been pushed to https://kallithea-scm.org/repos/kallithea"
echo

echo -n "Enter \"pypi\" to upload Kallithea $version to pypi: "
read answer
[ "$answer" = "pypi" ]
extraargs=${EMAIL:+--identity=$EMAIL}
python2 setup.py sdist upload --sign $extraargs
xdg-open https://pypi.python.org/pypi/Kallithea

echo "Uploading docs to pypi"
# See https://wiki.python.org/moin/PyPiDocumentationHosting
python2 setup.py build_sphinx upload_sphinx
xdg-open https://pythonhosted.org/Kallithea/
xdg-open http://packages.python.org/Kallithea/installation.html

echo "Rebuilding readthedocs for docs.kallithea-scm.org"
xdg-open https://readthedocs.org/projects/kallithea/
curl -X POST http://readthedocs.org/build/kallithea
xdg-open https://readthedocs.org/builds/kallithea/
xdg-open http://docs.kallithea-scm.org/en/latest/ # or whatever the branch is