aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2024-02-19 11:23:41 -0300
committerHisham Muhammad <hisham@gobolinux.org>2024-02-19 11:23:41 -0300
commitc23f6a5be7fe54f204bb6d327dfd802225bbc9b7 (patch)
tree5e7a07e808f5705d7ef80f3890ab701cc0a4aa76
parent272921b2adf6136448dda9011425f8304c9d508d (diff)
downloadluarocks-fix-1261.tar.gz
luarocks-fix-1261.tar.bz2
luarocks-fix-1261.zip
fix(config): ensure directory exists when saving config filefix-1261
Fixes #1261.
-rw-r--r--src/luarocks/cmd/config.lua13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/luarocks/cmd/config.lua b/src/luarocks/cmd/config.lua
index 3b100429..0e7a3e3d 100644
--- a/src/luarocks/cmd/config.lua
+++ b/src/luarocks/cmd/config.lua
@@ -175,7 +175,9 @@ local function write_entries(keys, scope, do_unset)
175 return nil, "Current directory is not part of a project. You may want to run `luarocks init`." 175 return nil, "Current directory is not part of a project. You may want to run `luarocks init`."
176 end 176 end
177 177
178 local tbl, err = persist.load_config_file_if_basic(cfg.config_files[scope].file, cfg) 178 local file_name = cfg.config_files[scope].file
179
180 local tbl, err = persist.load_config_file_if_basic(file_name, cfg)
179 if not tbl then 181 if not tbl then
180 return nil, err 182 return nil, err
181 end 183 end
@@ -205,7 +207,12 @@ local function write_entries(keys, scope, do_unset)
205 end) 207 end)
206 end 208 end
207 209
208 local ok, err = persist.save_from_table(cfg.config_files[scope].file, tbl) 210 local ok, err = fs.make_dir(dir.dir_name(file_name))
211 if not ok then
212 return nil, err
213 end
214
215 ok, err = persist.save_from_table(file_name, tbl)
209 if ok then 216 if ok then
210 print(do_unset and "Removed" or "Wrote") 217 print(do_unset and "Removed" or "Wrote")
211 for var, val in util.sortedpairs(keys) do 218 for var, val in util.sortedpairs(keys) do
@@ -216,7 +223,7 @@ local function write_entries(keys, scope, do_unset)
216 end 223 end
217 end 224 end
218 print(do_unset and "from" or "to") 225 print(do_unset and "from" or "to")
219 print("\t" .. cfg.config_files[scope].file) 226 print("\t" .. file_name)
220 return true 227 return true
221 else 228 else
222 return nil, err 229 return nil, err