2
0
mirror of https://github.com/frappe/bench.git synced 2024-11-12 00:06:36 +00:00

feat: check for newer versions on PyPI

This commit is contained in:
Gavin D'souza 2020-04-02 15:19:13 +05:30
parent 5b955897c3
commit 62f666c481
2 changed files with 15 additions and 1 deletions

View File

@ -1,6 +1,6 @@
import click import click
import os, sys, logging, json, pwd, subprocess import os, sys, logging, json, pwd, subprocess
from bench.utils import is_root, PatchError, drop_privileges, get_env_cmd, get_cmd_output, get_frappe, log, is_dist_editable, find_parent_bench from bench.utils import is_root, PatchError, drop_privileges, get_env_cmd, get_cmd_output, get_frappe, log, is_dist_editable, find_parent_bench, check_latest_version
from bench.app import get_apps from bench.app import get_apps
from bench.config.common_site_config import get_config from bench.config.common_site_config import get_config
from bench.commands import bench_command from bench.commands import bench_command
@ -42,6 +42,7 @@ def cli():
else: else:
try: try:
# NOTE: this is the main bench command # NOTE: this is the main bench command
check_latest_version()
bench_command() bench_command()
except PatchError: except PatchError:
sys.exit(1) sys.exit(1)

View File

@ -21,6 +21,7 @@ from distutils.spawn import find_executable
# imports - third party imports # imports - third party imports
import click import click
import requests import requests
from semantic_version import Version
from six import iteritems from six import iteritems
from six.moves.urllib.parse import urlparse from six.moves.urllib.parse import urlparse
@ -80,6 +81,18 @@ def safe_decode(string, encoding = 'utf-8'):
return string return string
def check_latest_version():
pypi_request = requests.get("https://pypi.org/pypi/frappe-bench/json")
if pypi_request.status_code == 200:
pypi_version_str = pypi_request.json().get('info').get('version')
pypi_version = Version(pypi_version_str)
local_version = Version(bench.__version__)
if pypi_version > local_version:
log("A newer version of bench is available: {0}{1}".format(local_version, pypi_version))
def get_frappe(bench_path='.'): def get_frappe(bench_path='.'):
frappe = get_env_cmd('frappe', bench_path=bench_path) frappe = get_env_cmd('frappe', bench_path=bench_path)
if not os.path.exists(frappe): if not os.path.exists(frappe):