Доработка. Переопределение параметров через аргументы командной строки
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user