Source code for pymyinstall.installcustom.install_custom_sqlitespy
"""
Various functions to install `SQLiteSpy <http://www.yunqa.de/delphi/doku.php/products/sqlitespy/index>`_.
:githublink:`%|py|5`
"""
from __future__ import print_function
import sys
import re
import os
from ..installhelper.install_cmd_helper import unzip_files
from ..installhelper.link_shortcuts import add_shortcut_to_desktop
from .install_custom import download_page, download_from_sourceforge, DownloadException, download_file
[docs]def IsSQLiteSpyInstalled(dest_folder):
"""
Checks if :epkg:`SQLiteSpy` was already installed
:param dest_folder: where it was installed
:return: boolean
:githublink:`%|py|21`
"""
if sys.platform.startswith("win"):
file = os.path.join(dest_folder, "SQLiteSpy.exe")
return os.path.exists(file)
else:
raise NotImplementedError("not available on platform " + sys.platform)
[docs]def install_sqlitespy(temp_folder=".", fLOG=print, install=True, version=None, backup=False):
"""
Installs :epkg:`SQLiteSpy`.
It does not do it a second time if it is already installed.
:param temp_folder: where to download the setup
:param fLOG: logging function
:param install: install (otherwise only download)
:param version: version to install (unused)
:return: temporary file
:githublink:`%|py|39`
"""
if version is not None:
raise ValueError("cannot specify a version")
if IsSQLiteSpyInstalled(temp_folder):
return os.path.join(temp_folder, "SQLiteSpy.exe")
link = "https://www.yunqa.de/delphi/products/sqlitespy/index"
outfile = None
try:
page = download_page(link)
except DownloadException as e:
if backup and sys.platform.startswith("win"):
link = "http://www.xavierdupre.fr/enseignement/setup/SQLiteSpy_1.9.12.zip"
fLOG("[pymy] download ", link)
outfile = os.path.join(temp_folder, "SQLiteSpy_1.9.12.zip")
download_file(link, outfile)
version = "1.9.12"
fLOG("[pymy] SQLiteSpy, version ", version)
else:
raise e
if sys.platform.startswith("win"):
if outfile is None:
reg = re.compile(
"href=[\\\"'](https://www.yunqa.de/delphi/downloads/SQLiteSpy.*?[.]zip)[\\\"']")
alls = reg.findall(page)
if len(alls) == 0:
raise Exception(
"Unable to find a link on a .zip file on page: " + page)
file = alls[0].replace("&", "&")
full = file
version = file.split("_")[-1].replace(".zip", "")
fLOG("[pymy] SQLiteSpy, version ", version)
outfile = os.path.join(
temp_folder, "{0}_{1}.zip".format("SQLiteSpy", version))
fLOG("[pymy] download ", full)
download_from_sourceforge(
full, outfile, temp_folder=temp_folder, fLOG=fLOG)
if install:
files = unzip_files(outfile, temp_folder, fLOG=fLOG)
local = [f for f in files if f.endswith(".exe")][0]
return local
else:
return outfile
else:
raise NotImplementedError("not available on platform " + sys.platform)
[docs]def add_shortcut_to_desktop_for_sqlitespy(exe):
"""
create a shortcut on your desktop
:param exe: exe location (SQLiteSpy.exe)
:return: filename
:githublink:`%|py|94`
"""
return add_shortcut_to_desktop(exe, "SQLiteSpy", "SQLiteSpy")