[UPD] script pycharm: improve pycharm configuration management

- support default configuration
This commit is contained in:
Mathieu Benoit 2023-12-02 14:09:50 -05:00
parent 87730b5221
commit 8632c1501d
2 changed files with 191 additions and 144 deletions

View file

@ -1,27 +1,31 @@
name,script_path,parameters,folder name,script_path,parameters,folder,default
run,./odoo/odoo-bin,--limit-time-real 999999 -c config.conf,run run,./odoo/odoo-bin,--limit-time-real 999999 -c config.conf,run,True
run_parallel_test,./script/test/run_parallel_test.py,,test run_parallel_test,./script/test/run_parallel_test.py,,test,
cg_cg,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_code_generator,code_generator cg_cg,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_code_generator,code_generator,
cg_cg_template,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_code_generator,code_generator_template cg_cg_template,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_code_generator,code_generator_template,
code_generator_auto_backup,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_auto_backup,code_generator code_generator_auto_backup,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_auto_backup,code_generator,
code_generator_demo,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo,code_generator code_generator_demo,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo,code_generator,
code_generator_demo_export_helpdesk,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_helpdesk,code_generator code_generator_demo_export_helpdesk,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_helpdesk,code_generator,
code_generator_demo_export_website,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website,code_generator code_generator_demo_export_website,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website,code_generator,
code_generator_demo_export_website_attachments,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website_attachments,code_generator code_generator_demo_export_website_attachments,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website_attachments,code_generator,
code_generator_demo_internal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal,code_generator code_generator_demo_internal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal,code_generator,
code_generator_demo_internal_inherit,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal_inherit,code_generator code_generator_demo_internal_inherit,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal_inherit,code_generator,
code_generator_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_mariadb_sql_example_1,code_generator code_generator_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_mariadb_sql_example_1,code_generator,
code_generator_demo_portal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_portal,code_generator code_generator_demo_portal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_portal,code_generator,
code_generator_demo_theme_website,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_theme_website,code_generator code_generator_demo_theme_website,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_theme_website,code_generator,
code_generator_demo_website_leaflet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_leaflet,code_generator code_generator_demo_website_leaflet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_leaflet,code_generator,
code_generator_demo_website_multiple_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_multiple_snippet,code_generator code_generator_demo_website_multiple_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_multiple_snippet,code_generator,
code_generator_demo_website_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_snippet,code_generator code_generator_demo_website_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_snippet,code_generator,
code_generator_migrator_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_migrator_demo_mariadb_sql_example_1,code_generator_migrator code_generator_migrator_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_migrator_demo_mariadb_sql_example_1,code_generator_migrator,
code_generator_template_demo_internal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal,code_generator_template code_generator_template_demo_internal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal,code_generator_template,
code_generator_template_demo_internal_inherit,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal_inherit,code_generator_template code_generator_template_demo_internal_inherit,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal_inherit,code_generator_template,
code_generator_template_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_mariadb_sql_example_1,code_generator_template code_generator_template_demo_mariadb_sql_example_1,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_mariadb_sql_example_1,code_generator_template,
code_generator_template_demo_portal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_portal,code_generator_template code_generator_template_demo_portal,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_portal,code_generator_template,
code_generator_template_demo_sysadmin_cron,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_sysadmin_cron,code_generator_template code_generator_template_demo_sysadmin_cron,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_sysadmin_cron,code_generator_template,
code_generator_template_demo_website_multiple_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_multiple_snippet,code_generator_template code_generator_template_demo_website_multiple_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_multiple_snippet,code_generator_template,
code_generator_template_demo_website_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_snippet,code_generator_template code_generator_template_demo_website_snippet,./odoo/odoo-bin,--limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_snippet,code_generator_template,
create demo internal,./script/code_generator/new_project.py,-m demo_internal -d addons/TechnoLibre_odoo-code-generator-template,new cg project create demo internal,./script/code_generator/new_project.py,-m demo_internal -d addons/TechnoLibre_odoo-code-generator-template,new cg project,
run_robotlibre,./odoo/odoo-bin,--limit-time-real 999999 -c config.conf -d robotlibre,robotlibre,
run_robotlibre_update,./odoo/odoo-bin,--limit-time-real 999999 --no-http --stop-after-init --dev cg -d robotlibre -i erplibre_devops -u erplibre_devops,robotlibre,
run_robotlibre_generate,./script/code_generator/new_project.py,-f -d ./addons/ERPLibre_erplibre_addons -m erplibre_devops,robotlibre,

1 name script_path parameters folder default
2 run ./odoo/odoo-bin --limit-time-real 999999 -c config.conf run True
3 run_parallel_test ./script/test/run_parallel_test.py test
4 cg_cg ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_code_generator code_generator
5 cg_cg_template ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_code_generator code_generator_template
6 code_generator_auto_backup ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_auto_backup code_generator
7 code_generator_demo ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo code_generator
8 code_generator_demo_export_helpdesk ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_helpdesk code_generator
9 code_generator_demo_export_website ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website code_generator
10 code_generator_demo_export_website_attachments ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_export_website_attachments code_generator
11 code_generator_demo_internal ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal code_generator
12 code_generator_demo_internal_inherit ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_internal_inherit code_generator
13 code_generator_demo_mariadb_sql_example_1 ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_mariadb_sql_example_1 code_generator
14 code_generator_demo_portal ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_portal code_generator
15 code_generator_demo_theme_website ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_theme_website code_generator
16 code_generator_demo_website_leaflet ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_leaflet code_generator
17 code_generator_demo_website_multiple_snippet ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_multiple_snippet code_generator
18 code_generator_demo_website_snippet ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_demo_website_snippet code_generator
19 code_generator_migrator_demo_mariadb_sql_example_1 ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d code_generator -i code_generator_migrator_demo_mariadb_sql_example_1 code_generator_migrator
20 code_generator_template_demo_internal ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal code_generator_template
21 code_generator_template_demo_internal_inherit ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_internal_inherit code_generator_template
22 code_generator_template_demo_mariadb_sql_example_1 ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_mariadb_sql_example_1 code_generator_template
23 code_generator_template_demo_portal ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_portal code_generator_template
24 code_generator_template_demo_sysadmin_cron ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_sysadmin_cron code_generator_template
25 code_generator_template_demo_website_multiple_snippet ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_multiple_snippet code_generator_template
26 code_generator_template_demo_website_snippet ./odoo/odoo-bin --limit-time-real 999999 --no-http -c config.conf --stop-after-init --dev cg -d template -i code_generator_template_demo_website_snippet code_generator_template
27 create demo internal ./script/code_generator/new_project.py -m demo_internal -d addons/TechnoLibre_odoo-code-generator-template new cg project
28 run_robotlibre ./odoo/odoo-bin --limit-time-real 999999 -c config.conf -d robotlibre robotlibre
29 run_robotlibre_update ./odoo/odoo-bin --limit-time-real 999999 --no-http --stop-after-init --dev cg -d robotlibre -i erplibre_devops -u erplibre_devops robotlibre
30 run_robotlibre_generate ./script/code_generator/new_project.py -f -d ./addons/ERPLibre_erplibre_addons -m erplibre_devops robotlibre
31

View file

@ -38,7 +38,7 @@ def get_config():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter, formatter_class=argparse.RawDescriptionHelpFormatter,
description="""\ description="""\
Manipulate configuration for your IDE Pycharm about ERPLibre. Manipulate configuration for your IDE Pycharm about ERPLibre.
This script manage only Python configuration, other configuration will be ignore. This script manage only Python configuration, other configuration will be ignore.
""", """,
epilog="""\ epilog="""\
@ -65,10 +65,22 @@ def get_config():
action="store_true", action="store_true",
help="Initialize minimum configuration for Pycharm.", help="Initialize minimum configuration for Pycharm.",
) )
parser.add_argument(
"--overwrite",
action="store_true",
help="Remove old data and replace it.",
)
args = parser.parse_args() args = parser.parse_args()
if args.init or args.list_configuration or args.list_configuration_full: if (
args.init
or args.list_configuration
or args.list_configuration_full
or args.overwrite
):
args.configuration = True args.configuration = True
if args.overwrite:
args.init = True
else: else:
args.configuration = False args.configuration = False
@ -78,6 +90,7 @@ def get_config():
def main(): def main():
has_execute = False has_execute = False
config = get_config() config = get_config()
_logger.info(f"Work on directory {os.getcwd()}")
# TODO modifier vcs.xml pour le mapping des répertoires git # TODO modifier vcs.xml pour le mapping des répertoires git
@ -120,6 +133,7 @@ def main():
def read_xml_and_execute(file_name, cb, name, config): def read_xml_and_execute(file_name, cb, name, config):
_logger.info(f"Pycharm configuration on file {file_name}")
with open(file_name) as xml: with open(file_name) as xml:
xml_as_string = xml.read() xml_as_string = xml.read()
dct_project_xml = xmltodict.parse(xml_as_string) dct_project_xml = xmltodict.parse(xml_as_string)
@ -133,8 +147,7 @@ def read_xml_and_execute(file_name, cb, name, config):
xml.write(xml_format) xml.write(xml_format)
_logger.info(f"File {file_name} has been write.") _logger.info(f"File {file_name} has been write.")
subprocess.call( subprocess.call(
"prettier --tab-width 2 --print-width 999999 --write" f"script/maintenance/prettier_xml.sh '{file_name}'",
f" '{file_name}'",
shell=True, shell=True,
) )
else: else:
@ -150,6 +163,28 @@ def add_configuration(dct_xml, file_name, config):
not bool(lst_component), not bool(lst_component),
f"Missing 'project/component' into {file_name}", f"Missing 'project/component' into {file_name}",
) )
# Add python configuration
dct_component_py_conf = [
a
for a in lst_component
if a.get("@name") == "PyConsoleOptionsProvider"
]
if dct_component_py_conf:
# TODO check and force value
pass
else:
lst_component.append(
{
"@name": "PyConsoleOptionsProvider",
"option": {
"@name": "myShowDebugConsoleByDefault",
"@value": "false",
},
}
)
has_change = True
# Add configuration
dct_component = [ dct_component = [
a for a in lst_component if a.get("@name") == "RunManager" a for a in lst_component if a.get("@name") == "RunManager"
] ]
@ -157,12 +192,12 @@ def add_configuration(dct_xml, file_name, config):
# Create it # Create it
dct_component = { dct_component = {
"@name": "RunManager", "@name": "RunManager",
"@selected": "Python.pycharm_configuration", # "@selected": "Python.pycharm_configuration",
"recent_temporary": { # "recent_temporary": {
"list": { # "list": {
"item": {"@itemvalue": "Python.pycharm_configuration"} # "item": {"@itemvalue": "Python.pycharm_configuration"}
} # }
}, # },
"configuration": [], "configuration": [],
"list": {"item": []}, "list": {"item": []},
} }
@ -219,116 +254,124 @@ def add_configuration(dct_xml, file_name, config):
for conf in lst_configuration: for conf in lst_configuration:
print(f"\t{conf}") print(f"\t{conf}")
if config.init: last_default = None
if os.path.isfile(PATH_DEFAULT_CONFIGURATION): if not config.init:
with open(PATH_DEFAULT_CONFIGURATION) as txt: return has_change
for default_conf in csv.DictReader(txt): if not os.path.isfile(PATH_DEFAULT_CONFIGURATION):
conf_name = default_conf.get("name") _logger.error(f"Cannot read file '{PATH_DEFAULT_CONFIGURATION}'")
conf_folder = default_conf.get("folder") return has_change
conf_script_path = default_conf.get("script_path") with open(PATH_DEFAULT_CONFIGURATION) as txt:
conf_script_path_replace = ( for default_conf in csv.DictReader(txt):
conf_script_path conf_name = default_conf.get("name")
if not conf_script_path.startswith("./") conf_folder = default_conf.get("folder")
else f"$PROJECT_DIR${conf_script_path[1:]}" conf_script_path = default_conf.get("script_path")
conf_default = bool(default_conf.get("default"))
if conf_default:
last_default = f"Python.{conf_name}"
conf_script_path_replace = (
conf_script_path
if not conf_script_path.startswith("./")
else f"$PROJECT_DIR${conf_script_path[1:]}"
)
conf_parameter = default_conf.get("parameters")
s_unique_key = (
f"d {conf_folder} s {conf_script_path} p {conf_parameter}"
)
if (
config.overwrite
or s_unique_key not in lst_unique_configuration
):
# add it!
if not config.overwrite and conf_name in lst_configuration:
_logger.error(
f"Cannot add configuration name '{conf_name}',"
" already exist. Delete it manually."
) )
conf_parameter = default_conf.get("parameters") else:
s_unique_key = ( has_change = True
f"d {conf_folder} s" lst_xml_configuration_name.append(
f" {conf_script_path} p" {"@itemvalue": f"Python.{conf_name}"}
f" {conf_parameter}"
) )
if s_unique_key not in lst_unique_configuration: conf_full = {
# add it! "@name": conf_name,
if conf_name in lst_configuration: "@type": "PythonConfigurationType",
_logger.error( "@factoryName": "Python",
f"Cannot add configuration name '{conf_name}'," "module": {"@name": PROJECT_NAME},
" already exist. Delete it manually." "option": [
) {
else: "@name": "INTERPRETER_OPTIONS",
has_change = True "@value": "",
lst_xml_configuration_name.append( },
{"@itemvalue": f"Python.conf_name"} {"@name": "PARENT_ENVS", "@value": "true"},
) {
conf_full = { "@name": "SDK_HOME",
"@name": conf_name, "@value": "$PROJECT_DIR$/.venv/bin/python",
"@type": "PythonConfigurationType", },
"@factoryName": "Python", {
"module": {"@name": PROJECT_NAME}, "@name": "WORKING_DIRECTORY",
"option": [ "@value": "$PROJECT_DIR$",
{ },
"@name": "INTERPRETER_OPTIONS", {
"@value": "", "@name": "IS_MODULE_SDK",
}, "@value": "false",
{"@name": "PARENT_ENVS", "@value": "true"}, },
{ {
"@name": "SDK_HOME", "@name": "ADD_CONTENT_ROOTS",
"@value": ( "@value": "true",
"$PROJECT_DIR$/.venv/bin/python" },
), {
}, "@name": "ADD_SOURCE_ROOTS",
{ "@value": "true",
"@name": "WORKING_DIRECTORY", },
"@value": "$PROJECT_DIR$", {
}, "@name": "SCRIPT_NAME",
{ "@value": conf_script_path_replace,
"@name": "IS_MODULE_SDK", },
"@value": "false", {
}, "@name": "PARAMETERS",
{ "@value": conf_parameter,
"@name": "ADD_CONTENT_ROOTS", },
"@value": "true", {
}, "@name": "SHOW_COMMAND_LINE",
{ "@value": "false",
"@name": "ADD_SOURCE_ROOTS", },
"@value": "true", {
}, "@name": "EMULATE_TERMINAL",
{ "@value": "false",
"@name": "SCRIPT_NAME", },
"@value": conf_script_path_replace, {
}, "@name": "MODULE_MODE",
{ "@value": "false",
"@name": "PARAMETERS", },
"@value": conf_parameter, {
}, "@name": "REDIRECT_INPUT",
{ "@value": "false",
"@name": "SHOW_COMMAND_LINE", },
"@value": "false", {"@name": "INPUT_FILE", "@value": ""},
}, ],
{ "envs": {
"@name": "EMULATE_TERMINAL", "env": {
"@value": "false", "@name": "PYTHONUNBUFFERED",
}, "@value": "1",
{
"@name": "MODULE_MODE",
"@value": "false",
},
{
"@name": "REDIRECT_INPUT",
"@value": "false",
},
{"@name": "INPUT_FILE", "@value": ""},
],
"envs": {
"env": {
"@name": "PYTHONUNBUFFERED",
"@value": "1",
}
},
"EXTENSION": {
"@ID": "PythonCoverageRunConfigurationExtension",
"@runner": "coverage.py",
},
"method": {"@v": "2"},
} }
if conf_folder: },
conf_full["@folderName"] = conf_folder "EXTENSION": {
lst_configuration_full.insert(0, conf_full) "@ID": "PythonCoverageRunConfigurationExtension",
else: "@runner": "coverage.py",
_logger.info( },
f"Configuration already exist: '{s_unique_key}'" "method": {"@v": "2"},
) }
else: if conf_folder:
_logger.error(f"Cannot read file '{PATH_DEFAULT_CONFIGURATION}'") conf_full["@folderName"] = conf_folder
lst_configuration_full.insert(0, conf_full)
else:
_logger.info(f"Configuration already exist: '{s_unique_key}'")
if last_default:
dct_component["@selected"] = last_default
dct_component["recent_temporary"] = {
"list": {"item": {"@itemvalue": last_default}}
}
return has_change return has_change