Store freqUI version and read it again
This commit is contained in:
parent
2af1d2d639
commit
944d674eeb
@ -1,7 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, Tuple
|
from typing import Any, Dict, Optional, Tuple
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
@ -154,7 +154,16 @@ def clean_ui_subdir(directory: Path):
|
|||||||
p.rmdir()
|
p.rmdir()
|
||||||
|
|
||||||
|
|
||||||
def download_and_install_ui(dest_folder: Path, dl_url: str):
|
def read_ui_version(dest_folder: Path) -> Optional[str]:
|
||||||
|
file = dest_folder / '.uiversion'
|
||||||
|
if not file.is_file():
|
||||||
|
return None
|
||||||
|
|
||||||
|
with file.open('r') as f:
|
||||||
|
return f.read()
|
||||||
|
|
||||||
|
|
||||||
|
def download_and_install_ui(dest_folder: Path, dl_url: str, version: str):
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
|
|
||||||
@ -168,6 +177,8 @@ def download_and_install_ui(dest_folder: Path, dl_url: str):
|
|||||||
destfile.mkdir(exist_ok=True)
|
destfile.mkdir(exist_ok=True)
|
||||||
else:
|
else:
|
||||||
destfile.write_bytes(x.read())
|
destfile.write_bytes(x.read())
|
||||||
|
with (dest_folder / '.uiversion').open('w') as f:
|
||||||
|
f.write(version)
|
||||||
|
|
||||||
|
|
||||||
def get_ui_download_url() -> Tuple[str, str]:
|
def get_ui_download_url() -> Tuple[str, str]:
|
||||||
@ -199,10 +210,16 @@ def start_install_ui(args: Dict[str, Any]) -> None:
|
|||||||
dest_folder = Path(__file__).parents[1] / 'rpc/api_server/ui'
|
dest_folder = Path(__file__).parents[1] / 'rpc/api_server/ui'
|
||||||
# First make sure the assets are removed.
|
# First make sure the assets are removed.
|
||||||
dl_url, latest_version = get_ui_download_url()
|
dl_url, latest_version = get_ui_download_url()
|
||||||
clean_ui_subdir(dest_folder)
|
|
||||||
|
curr_version = read_ui_version(dest_folder)
|
||||||
|
if curr_version == latest_version and not args.get('erase_ui_only'):
|
||||||
|
logger.info(f"UI already uptodate, FreqUI Version {curr_version}.")
|
||||||
|
return
|
||||||
|
|
||||||
if args.get('erase_ui_only'):
|
if args.get('erase_ui_only'):
|
||||||
|
clean_ui_subdir(dest_folder)
|
||||||
logger.info("Erased UI directory content. Not downloading new version.")
|
logger.info("Erased UI directory content. Not downloading new version.")
|
||||||
else:
|
else:
|
||||||
|
|
||||||
# Download a new version
|
# Download a new version
|
||||||
download_and_install_ui(dest_folder, dl_url)
|
download_and_install_ui(dest_folder, dl_url, latest_version)
|
||||||
|
@ -14,7 +14,7 @@ from freqtrade.commands import (start_convert_data, start_create_userdir, start_
|
|||||||
start_new_hyperopt, start_new_strategy, start_show_trades,
|
start_new_hyperopt, start_new_strategy, start_show_trades,
|
||||||
start_test_pairlist, start_trading)
|
start_test_pairlist, start_trading)
|
||||||
from freqtrade.commands.deploy_commands import (clean_ui_subdir, download_and_install_ui,
|
from freqtrade.commands.deploy_commands import (clean_ui_subdir, download_and_install_ui,
|
||||||
get_ui_download_url)
|
get_ui_download_url, read_ui_version)
|
||||||
from freqtrade.configuration import setup_utils_configuration
|
from freqtrade.configuration import setup_utils_configuration
|
||||||
from freqtrade.exceptions import OperationalException
|
from freqtrade.exceptions import OperationalException
|
||||||
from freqtrade.state import RunMode
|
from freqtrade.state import RunMode
|
||||||
@ -563,6 +563,7 @@ def test_start_install_ui(mocker):
|
|||||||
clean_mock = mocker.patch('freqtrade.commands.deploy_commands.clean_ui_subdir')
|
clean_mock = mocker.patch('freqtrade.commands.deploy_commands.clean_ui_subdir')
|
||||||
get_url_mock = mocker.patch('freqtrade.commands.deploy_commands.get_ui_download_url')
|
get_url_mock = mocker.patch('freqtrade.commands.deploy_commands.get_ui_download_url')
|
||||||
download_mock = mocker.patch('freqtrade.commands.deploy_commands.download_and_install_ui')
|
download_mock = mocker.patch('freqtrade.commands.deploy_commands.download_and_install_ui')
|
||||||
|
mocker.patch('freqtrade.commands.deploy_commands.read_ui_version', return_value=None)
|
||||||
args = [
|
args = [
|
||||||
"install-ui",
|
"install-ui",
|
||||||
]
|
]
|
||||||
@ -616,15 +617,16 @@ def test_download_and_install_ui(mocker, tmpdir):
|
|||||||
|
|
||||||
mocker.patch("freqtrade.commands.deploy_commands.Path.is_dir",
|
mocker.patch("freqtrade.commands.deploy_commands.Path.is_dir",
|
||||||
side_effect=[True, False])
|
side_effect=[True, False])
|
||||||
mkdir_mock = mocker.patch("freqtrade.commands.deploy_commands.Path.mkdir")
|
|
||||||
wb_mock = mocker.patch("freqtrade.commands.deploy_commands.Path.write_bytes")
|
wb_mock = mocker.patch("freqtrade.commands.deploy_commands.Path.write_bytes")
|
||||||
|
|
||||||
folder = Path(tmpdir) / "uitests_dl"
|
folder = Path(tmpdir) / "uitests_dl"
|
||||||
download_and_install_ui(folder, 'http://whatever.xxx/download/file.zip')
|
folder.mkdir(exist_ok=True)
|
||||||
|
download_and_install_ui(folder, 'http://whatever.xxx/download/file.zip', '22')
|
||||||
|
|
||||||
assert mkdir_mock.call_count == 1
|
|
||||||
assert wb_mock.call_count == 2
|
assert wb_mock.call_count == 2
|
||||||
|
|
||||||
|
assert read_ui_version(folder) == '22'
|
||||||
|
|
||||||
|
|
||||||
def test_get_ui_download_url(mocker):
|
def test_get_ui_download_url(mocker):
|
||||||
response = MagicMock()
|
response = MagicMock()
|
||||||
|
Loading…
Reference in New Issue
Block a user