@@ -3,7 +3,6 @@ set -Eeuo pipefail
33IFS=$' \n\t '
44
55config_create () {
6-
76 # Early return if the TOML config already exists
87 if [[ -f ${APPLICATION_TOML_FILE} ]]; then
98 return 0
@@ -20,23 +19,32 @@ config_create() {
2019
2120 local ComposeFolderFound=false
2221 # Handle legacy config files
23- if [[ -f ${SCRIPTPATH} /${APPLICATION_INI_NAME} || -f ${SCRIPTPATH} /menu.ini || -f ${XDG_CONFIG_HOME} /${APPLICATION_INI_NAME} ]]; then
24- for LegacyIniFile in " ${XDG_CONFIG_HOME} /${APPLICATION_INI_NAME} " " ${SCRIPTPATH} /${APPLICATION_INI_NAME} " " ${SCRIPTPATH} /menu.ini" ; do
25- if [[ -f ${LegacyIniFile} ]]; then
26- if [[ ${LegacyIniFile} == " ${APPLICATION_INI_FILE} " ]]; then
27- continue
28- fi
29- notice " Renaming '{{|File|}}${LegacyIniFile} {{[-]}}' to '{{|File|}}${APPLICATION_INI_FILE} {{[-]}}'."
30- mv " ${LegacyIniFile} " " ${APPLICATION_INI_FILE} " ||
31- fatal \
32- " Failed to rename old config file." \
33- " Failing command: {{|FailingCommand|}}mv \" ${LegacyIniFile} \" \" ${APPLICATION_INI_FILE} \" "
34- break
22+ local -a LegacyIniFiles=(
23+ " ${XDG_CONFIG_HOME} /${APPLICATION_INI_NAME} "
24+ " ${SCRIPTPATH} /${APPLICATION_INI_NAME} "
25+ " ${SCRIPTPATH} /menu.ini"
26+ )
27+ local LegacyIniFile=" "
28+ for CheckLegacyIniFile in " ${LegacyIniFiles[@]} " ; do
29+ if [[ -f ${CheckLegacyIniFile} ]]; then
30+ if [[ ${CheckLegacyIniFile} == " ${APPLICATION_INI_FILE} " ]]; then
31+ continue
3532 fi
36- done
33+ LegacyIniFile=" ${CheckLegacyIniFile} "
34+ fi
35+ done
36+ if [[ -n ${LegacyIniFile} ]]; then
37+ local Heading=" Configuration options in old config file '{{|File|}}${LegacyIniFile} {{[-]}}':"
38+ notice " "
39+ notice " $( run_script ' config_show' " ${LegacyIniFile} " " ${Heading} " ) "
40+ notice " "
41+ notice " Renaming '{{|File|}}${LegacyIniFile} {{[-]}}' to '{{|File|}}${APPLICATION_INI_FILE} {{[-]}}'."
42+ mv " ${LegacyIniFile} " " ${APPLICATION_INI_FILE} " ||
43+ fatal \
44+ " Failed to rename old config file." \
45+ " Failing command: {{|FailingCommand|}}mv \" ${LegacyIniFile} \" \" ${APPLICATION_INI_FILE} \" "
3746 run_script ' set_permissions' " ${APPLICATION_INI_FILE} "
3847 fi
39-
4048 if [[ -f ${APPLICATION_INI_FILE} ]]; then
4149 # Migrate from INI to TOML
4250 notice " Migrating '{{|File|}}${APPLICATION_INI_FILE} {{[-]}}' to '{{|File|}}${APPLICATION_TOML_FILE} {{[-]}}'."
@@ -47,65 +55,26 @@ config_create() {
4755 " Failing command: {{|FailingCommand|}}cp \" ${DEFAULT_TOML_FILE} \" \" ${APPLICATION_TOML_FILE} \" "
4856 run_script ' set_permissions' " ${APPLICATION_TOML_FILE} "
4957
50- local -A TOMLtoINIMap_strings=(
51- [" paths.config_folder" ]=" ConfigFolder"
52- [" ui.theme" ]=" Theme"
53- [" pm.package_manager" ]=" PackageManager"
58+ local -a ConfigOptions=(
59+ " paths.config_folder"
60+ " ui.theme"
61+ " pm.package_manager"
62+ " ui.scrollbar"
63+ " ui.shadow"
64+ " ui.borders"
65+ " ui.line_characters"
5466 )
5567
56- local -A TOMLtoINIMap_booleans=(
57- [" ui.scrollbar" ]=" Scrollbar:Scrollbars"
58- [" ui.shadow" ]=" Shadow:Shadows"
59- )
60-
61- if run_script ' env_var_exists' ComposeFolder " ${APPLICATION_INI_FILE} " ; then
62- set_toml_val_string \
63- " ${APPLICATION_TOML_FILE} " \
64- paths.compose_folder \
65- " $( run_script ' config_get' ComposeFolder " ${APPLICATION_INI_FILE} " ) "
68+ local Value
69+ if Value=$( run_script ' config_get' paths.compose_folder " ${APPLICATION_INI_FILE} " ) ; then
70+ run_script ' config_set' paths.compose_folder " ${Value} "
6671 ComposeFolderFound=true
6772 fi
6873
69- for Key in " ${! TOMLtoINIMap_strings[@]} " ; do
70- if run_script ' env_var_exists' " ${TOMLtoINIMap_strings["${Key}"]} " " ${APPLICATION_INI_FILE} " ; then
71- set_toml_val_string \
72- " ${APPLICATION_TOML_FILE} " \
73- " ${Key} " \
74- " $( run_script ' config_get' " ${TOMLtoINIMap_strings["${Key}"]} " " ${APPLICATION_INI_FILE} " ) "
75- fi
76- done
77-
78- # Migrate LineCharacters to ui.borders if Borders doesn't exist (old INI settings)
79- if run_script ' env_var_exists' Borders " ${APPLICATION_INI_FILE} " ; then
80- set_toml_val_bool \
81- " ${APPLICATION_TOML_FILE} " \
82- ui.borders \
83- " $( run_script ' config_get' Borders " ${APPLICATION_INI_FILE} " ) "
84- if run_script ' env_var_exists' LineCharacters " ${APPLICATION_INI_FILE} " ; then
85- set_toml_val_bool \
86- " ${APPLICATION_TOML_FILE} " \
87- ui.line_characters \
88- " $( run_script ' config_get' LineCharacters " ${APPLICATION_INI_FILE} " ) "
74+ for Key in " ${ConfigOptions[@]} " ; do
75+ if Value=$( run_script ' config_get' " ${Key} " " ${APPLICATION_INI_FILE} " ) ; then
76+ run_script ' config_set' " ${Key} " " ${Value} "
8977 fi
90- elif run_script ' env_var_exists' LineCharacters " ${APPLICATION_INI_FILE} " ; then
91- set_toml_val_bool \
92- " ${APPLICATION_TOML_FILE} " \
93- ui.borders \
94- " $( run_script ' config_get' LineCharacters " ${APPLICATION_INI_FILE} " ) "
95- fi
96-
97- for Key in " ${! TOMLtoINIMap_booleans[@]} " ; do
98- local VarList
99- VarList=" ${TOMLtoINIMap_booleans["${Key}"]} "
100- for Val in ${VarList//:/ } ; do
101- if run_script ' env_var_exists' " ${Val} " " ${APPLICATION_INI_FILE} " ; then
102- set_toml_val_bool \
103- " ${APPLICATION_TOML_FILE} " \
104- " ${Key} " \
105- " $( run_script ' config_get' " ${Val} " " ${APPLICATION_INI_FILE} " ) "
106- break
107- fi
108- done
10978 done
11079 else
11180 # Fresh install: copy the default TOML file
@@ -129,7 +98,7 @@ config_create() {
12998detect_compose_folder () {
13099 # Check for a legacy compose folder and update ComposeFolder if needed
131100 local ConfigFolder
132- ConfigFolder=" $( get_toml_val_string " ${APPLICATION_TOML_FILE} " paths.config_folder) "
101+ ConfigFolder=" $( run_script ' config_get ' paths.config_folder) "
133102
134103 local -a ExpandVarList=(
135104 ScriptFolder " ${SCRIPTPATH} "
@@ -154,7 +123,7 @@ detect_compose_folder() {
154123 fi
155124
156125 local DefaultComposeFolder
157- DefaultComposeFolder=" $( get_toml_val_string " ${APPLICATION_TOML_FILE} " paths.compose_folder) "
126+ DefaultComposeFolder=" $( run_script ' config_get ' paths.compose_folder) "
158127 local ExpandedDefaultComposeFolder
159128 ExpandedDefaultComposeFolder=" $( expand_vars " ${DefaultComposeFolder} " " ${ExpandVarList[@]} " ) "
160129
@@ -169,14 +138,15 @@ detect_compose_folder() {
169138 notice \
170139 " Chose the Legacy compose folder location:" \
171140 " '{{|Folder|}}${ExpandedLegacyComposeFolder} {{[-]}}'"
172- set_toml_val_string " ${APPLICATION_TOML_FILE} " paths.compose_folder " ${LegacyComposeFolder} "
141+ run_script ' config_set ' paths.compose_folder " ${LegacyComposeFolder} "
173142 else
174143 notice \
175144 " Chose the Default compose folder location:" \
176145 " '{{|Folder|}}${ExpandedDefaultComposeFolder} {{[-]}}'"
146+ run_script ' config_set' paths.compose_folder " ${DefaultComposeFolder} "
177147 fi
178148 elif [[ ${LegacyHasFiles} == true ]]; then
179- set_toml_val_string " ${APPLICATION_TOML_FILE} " paths.compose_folder " ${LegacyComposeFolder} "
149+ run_script ' config_set ' paths.compose_folder " ${LegacyComposeFolder} "
180150 fi
181151}
182152
0 commit comments