summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2018-10-12 06:13:55 -0700
committerJoffrey F <joffrey@docker.com>2018-10-12 06:13:55 -0700
commitbe324d57a20be9280e8bdbce3eed12f7b9feecfa (patch)
tree76ca300a4148dd3c1c58dfe8e31e5b27cf364635 /script
parent90185117501861558f265f5ac83bddb1aca0bad2 (diff)
Add pypirc check
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'script')
-rwxr-xr-xscript/release/release.py24
-rw-r--r--script/release/release/pypi.py44
2 files changed, 47 insertions, 21 deletions
diff --git a/script/release/release.py b/script/release/release.py
index 9a5af3aa..15c74c77 100755
--- a/script/release/release.py
+++ b/script/release/release.py
@@ -17,6 +17,8 @@ from release.const import NAME
from release.const import REPO_ROOT
from release.downloader import BinaryDownloader
from release.images import ImageManager
+from release.pypi import check_pypirc
+from release.pypi import pypi_upload
from release.repository import delete_assets
from release.repository import get_contributors
from release.repository import Repository
@@ -28,8 +30,6 @@ from release.utils import ScriptError
from release.utils import update_init_py_version
from release.utils import update_run_sh_version
from release.utils import yesno
-from requests.exceptions import HTTPError
-from twine.commands.upload import main as twine_upload
def create_initial_branch(repository, args):
@@ -170,25 +170,6 @@ def distclean():
shutil.rmtree(folder, ignore_errors=True)
-def pypi_upload(args):
- print('Uploading to PyPi')
- try:
- rel = args.release.replace('-rc', 'rc')
- twine_upload([
- 'dist/docker_compose-{}*.whl'.format(rel),
- 'dist/docker-compose-{}*.tar.gz'.format(rel)
- ])
- except HTTPError as e:
- if e.response.status_code == 400 and 'File already exists' in e.message:
- if not args.finalize_resume:
- raise ScriptError(
- 'Package already uploaded on PyPi.'
- )
- print('Skipping PyPi upload - package already uploaded')
- else:
- raise ScriptError('Unexpected HTTP error uploading package to PyPi: {}'.format(e))
-
-
def resume(args):
try:
distclean()
@@ -277,6 +258,7 @@ def start(args):
def finalize(args):
distclean()
try:
+ check_pypirc()
repository = Repository(REPO_ROOT, args.repo)
img_manager = ImageManager(args.release)
pr_data = repository.find_release_pr(args.release)
diff --git a/script/release/release/pypi.py b/script/release/release/pypi.py
new file mode 100644
index 00000000..a40e1754
--- /dev/null
+++ b/script/release/release/pypi.py
@@ -0,0 +1,44 @@
+from __future__ import absolute_import
+from __future__ import unicode_literals
+
+from configparser import Error
+from requests.exceptions import HTTPError
+from twine.commands.upload import main as twine_upload
+from twine.utils import get_config
+
+from .utils import ScriptError
+
+
+def pypi_upload(args):
+ print('Uploading to PyPi')
+ try:
+ rel = args.release.replace('-rc', 'rc')
+ twine_upload([
+ 'dist/docker_compose-{}*.whl'.format(rel),
+ 'dist/docker-compose-{}*.tar.gz'.format(rel)
+ ])
+ except HTTPError as e:
+ if e.response.status_code == 400 and 'File already exists' in e.message:
+ if not args.finalize_resume:
+ raise ScriptError(
+ 'Package already uploaded on PyPi.'
+ )
+ print('Skipping PyPi upload - package already uploaded')
+ else:
+ raise ScriptError('Unexpected HTTP error uploading package to PyPi: {}'.format(e))
+
+
+def check_pypirc():
+ try:
+ config = get_config()
+ except Error as e:
+ raise ScriptError('Failed to parse .pypirc file: {}'.format(e))
+
+ if config is None:
+ raise ScriptError('Failed to parse .pypirc file')
+
+ if 'pypi' not in config:
+ raise ScriptError('Missing [pypi] section in .pypirc file')
+
+ if not (config['pypi'].get('username') and config['pypi'].get('password')):
+ raise ScriptError('Missing login/password pair for pypi repo')