Доработка. Переопределение параметров через аргументы командной строки

This commit is contained in:
sasha80
2025-05-15 15:04:25 +03:00
parent d029747d6b
commit 8f9ae542ca

View File

@@ -96,6 +96,39 @@ func on_checkbutton_pressed(i_row: int):
on_row_pressed(i_row)
func parse_cmd_line_args(settings_data: Dictionary):
var args = OS.get_cmdline_args()
for i in args.size():
var key: String = args[i]
key = key.lstrip('\'').rstrip('\'').lstrip('\"').rstrip('\"')
if not settings_data.has(key):
continue
if not ((i + 1) < args.size()):
push_error('для аргумента \"%s\" не указано значение.' % key)
break
var val0 = args[i + 1]
var val1 = settings_data[key]
val0 = val0.lstrip('\'').rstrip('\'').lstrip('\"').rstrip('\"')
if typeof(val1) == TYPE_BOOL:
if val0 not in ['yes', 'true', 'да', 'no', 'false', 'нет']:
push_error('для аргумента \"%s\" указано неверное значение \"%s\".' % [key, val0])
break
settings_data[key] = true if val0 in ['yes', 'true', 'да'] else false
elif typeof(val1) == TYPE_ARRAY:
var val0s = val0.split(',')
if val0s.size() != val1.size():
push_error('для аргумента \"%s\" указано неверное значение \"%s\" (исходное: \"%s\").' % [key, val0, val1])
break
for j in val0s.size():
var val: String = val0s[j]
if tools.type_is_num(val):
val0s[j] = int(val)
elif val in ['true', 'false']:
val0s[j] = true if val == 'true' else false
else:
val0s[j] = val
func setting_tab():
$heard_table.set_header(HEADER_ROW)
$heard_table.set_header_text(HEADER_ROW_TEXT)
@@ -114,6 +147,9 @@ func setting_tab():
log.warning('Не удалось разобрать \"%s\", будут использованы настройки по умолчанию' % abs_path)
else:
log.warning('Файл \"%s\" не найден, будут использованы настройки по умолчанию' % abs_path)
parse_cmd_line_args(settings_data)
for i in SETTING_TABLE.size():
var setting_str = SETTING_TABLE[i]
var parameter = setting_str[0]
@@ -176,7 +212,8 @@ func _on_btn_save_settings_pressed():
if parameter in settings.UnitProfiles:
var profiles = $scroll_set/table.get_node2(1, i)
var value = profiles.get_text()
if parameter not in json_data: json_data[parameter] = []
if parameter not in json_data:
json_data[parameter] = []
if value.find(':') != -1:
var parts = value.split(':')
var ip = parts[0].strip_edges()