mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-17 20:54:38 +03:00
Introduce -c / --config command line option
option to specify settings.ini Signed-off-by: Hiroshi Miura <miurahr@linux.com>
This commit is contained in:
@@ -73,14 +73,9 @@ class ExtractionError(Exception):
|
||||
class Cli:
|
||||
"""CLI main class to parse command line argument and launch proper functions."""
|
||||
|
||||
__slot__ = ["parser", "combinations", "logger"]
|
||||
__slot__ = ["parser", "combinations", "logger", "settings"]
|
||||
|
||||
def __init__(self, env_key="AQT_CONFIG"):
|
||||
config = os.getenv(env_key, None)
|
||||
if config is not None and os.path.exists(config):
|
||||
self.settings = Settings(config)
|
||||
else:
|
||||
self.settings = Settings()
|
||||
def __init__(self):
|
||||
self._create_parser()
|
||||
|
||||
def _check_tools_arg_combination(self, os_name, tool_name, arch):
|
||||
@@ -454,7 +449,7 @@ class Cli:
|
||||
sevenzip = self._set_sevenzip(args.external)
|
||||
if EXT7Z and sevenzip is None:
|
||||
# override when py7zr is not exist
|
||||
sevenzip = self._set_sevenzip("7z")
|
||||
sevenzip = self._set_sevenzip(self.settings.zipcmd)
|
||||
version = args.version
|
||||
keep = args.keep
|
||||
if args.base is not None:
|
||||
@@ -604,6 +599,13 @@ class Cli:
|
||||
formatter_class=argparse.RawTextHelpFormatter,
|
||||
add_help=True,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-c",
|
||||
"--config",
|
||||
type=argparse.FileType("r"),
|
||||
nargs=1,
|
||||
help="Configuration ini file.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--logging-conf",
|
||||
type=argparse.FileType("r"),
|
||||
@@ -756,8 +758,18 @@ class Cli:
|
||||
else:
|
||||
self.logger = logging.getLogger("aqt")
|
||||
|
||||
def _setup_settings(self, args=None, env_key="AQT_CONFIG"):
|
||||
config = os.getenv(env_key, None)
|
||||
if args is not None and args.config is not None:
|
||||
config = args.config
|
||||
if config is not None and os.path.exists(config):
|
||||
self.settings = Settings(config)
|
||||
else:
|
||||
self.settings = Settings()
|
||||
|
||||
def run(self, arg=None):
|
||||
args = self.parser.parse_args(arg)
|
||||
self._setup_settings(args)
|
||||
self._setup_logging(args)
|
||||
return args.func(args)
|
||||
|
||||
|
||||
@@ -6,9 +6,8 @@ Configuration
|
||||
``aqtinstall`` can be configured through a configuration file.
|
||||
A default configuration is stored in ``aqt/settings.ini`` file.
|
||||
|
||||
You can specify custom configuration file through ``AQT_CONFIG`` environment variable.
|
||||
A configuration should read very early stage of ``aqtinstall``, it cannot be specified
|
||||
through command line.
|
||||
You can specify custom configuration file through ``AQT_CONFIG``
|
||||
environment variable or "-c" or "--config" command line option.
|
||||
|
||||
A file is like as follows:
|
||||
|
||||
|
||||
@@ -4,13 +4,15 @@ import aqt
|
||||
def test_cli_help(capsys):
|
||||
expected = "".join(
|
||||
[
|
||||
"usage: aqt [-h] [--logging-conf LOGGING_CONF] [--logger LOGGER]\n",
|
||||
"usage: aqt [-h] [-c CONFIG] [--logging-conf LOGGING_CONF] [--logger LOGGER]\n",
|
||||
" {install,doc,examples,src,tool,list,offline_installer,help} ...\n",
|
||||
"\n",
|
||||
"Installer for Qt SDK.\n",
|
||||
"\n",
|
||||
"optional arguments:\n",
|
||||
" -h, --help show this help message and exit\n",
|
||||
" -c CONFIG, --config CONFIG\n",
|
||||
" Configuration ini file.\n",
|
||||
" --logging-conf LOGGING_CONF\n",
|
||||
" Logging configuration ini file.\n",
|
||||
" --logger LOGGER Specify logger name\n",
|
||||
@@ -30,6 +32,7 @@ def test_cli_help(capsys):
|
||||
|
||||
def test_cli_check_module():
|
||||
cli = aqt.installer.Cli()
|
||||
cli._setup_settings()
|
||||
assert cli._check_modules_arg("5.11.3", ["qtcharts", "qtwebengine"])
|
||||
assert not cli._check_modules_arg("5.7", ["not_exist"])
|
||||
assert cli._check_modules_arg("5.14.0", None)
|
||||
@@ -38,6 +41,7 @@ def test_cli_check_module():
|
||||
|
||||
def test_cli_check_combination():
|
||||
cli = aqt.installer.Cli()
|
||||
cli._setup_settings()
|
||||
assert cli._check_qt_arg_combination("5.11.3", "linux", "desktop", "gcc_64")
|
||||
assert cli._check_qt_arg_combination("5.11.3", "mac", "desktop", "clang_64")
|
||||
assert not cli._check_qt_arg_combination("5.14.0", "android", "desktop", "clang_64")
|
||||
@@ -45,12 +49,14 @@ def test_cli_check_combination():
|
||||
|
||||
def test_cli_check_version():
|
||||
cli = aqt.installer.Cli()
|
||||
cli._setup_settings()
|
||||
assert cli._check_qt_arg_versions("5.12.0")
|
||||
assert not cli._check_qt_arg_versions("5.12")
|
||||
|
||||
|
||||
def test_cli_check_mirror():
|
||||
cli = aqt.installer.Cli()
|
||||
cli._setup_settings()
|
||||
assert cli._check_mirror(None)
|
||||
arg = ["install", "5.11.3", "linux", "desktop", "-b", "https://download.qt.io/"]
|
||||
args = cli.parser.parse_args(arg)
|
||||
@@ -61,13 +67,15 @@ def test_cli_check_mirror():
|
||||
def test_cli_launch_with_no_argument(capsys):
|
||||
expected = "".join(
|
||||
[
|
||||
"usage: aqt [-h] [--logging-conf LOGGING_CONF] [--logger LOGGER]\n",
|
||||
"usage: aqt [-h] [-c CONFIG] [--logging-conf LOGGING_CONF] [--logger LOGGER]\n",
|
||||
" {install,doc,examples,src,tool,list,offline_installer,help} ...\n",
|
||||
"\n",
|
||||
"Installer for Qt SDK.\n",
|
||||
"\n",
|
||||
"optional arguments:\n",
|
||||
" -h, --help show this help message and exit\n",
|
||||
" -c CONFIG, --config CONFIG\n",
|
||||
" Configuration ini file.\n",
|
||||
" --logging-conf LOGGING_CONF\n",
|
||||
" Logging configuration ini file.\n",
|
||||
" --logger LOGGER Specify logger name\n",
|
||||
|
||||
Reference in New Issue
Block a user