diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/core/cfg.lua | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua index 7ea86542..e24fa4f6 100644 --- a/src/luarocks/core/cfg.lua +++ b/src/luarocks/core/cfg.lua | |||
| @@ -70,21 +70,6 @@ local function detect_sysconfdir() | |||
| 70 | return basedir | 70 | return basedir |
| 71 | end | 71 | end |
| 72 | 72 | ||
| 73 | local function set_confdirs(cfg, platforms, hardcoded_sysconfdir) | ||
| 74 | local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded_sysconfdir | ||
| 75 | if platforms.windows and not platforms.msys2_mingw_w64 then | ||
| 76 | cfg.home = os.getenv("APPDATA") or "c:" | ||
| 77 | cfg.home_tree = cfg.home.."/luarocks" | ||
| 78 | cfg.homeconfdir = cfg.home_tree | ||
| 79 | cfg.sysconfdir = sysconfdir or ((os.getenv("PROGRAMFILES") or "c:") .. "/luarocks") | ||
| 80 | else | ||
| 81 | cfg.home = os.getenv("HOME") or "" | ||
| 82 | cfg.home_tree = cfg.home.."/.luarocks" | ||
| 83 | cfg.homeconfdir = cfg.home_tree | ||
| 84 | cfg.sysconfdir = sysconfdir or detect_sysconfdir() or "/etc/luarocks" | ||
| 85 | end | ||
| 86 | end | ||
| 87 | |||
| 88 | local load_config_file | 73 | local load_config_file |
| 89 | do | 74 | do |
| 90 | -- Create global environment for the config files; | 75 | -- Create global environment for the config files; |
| @@ -653,17 +638,24 @@ function cfg.init(detected, warning) | |||
| 653 | local sys_config_file | 638 | local sys_config_file |
| 654 | local home_config_file | 639 | local home_config_file |
| 655 | local project_config_file | 640 | local project_config_file |
| 641 | |||
| 642 | local config_file_name = "config-"..cfg.lua_version..".lua" | ||
| 643 | |||
| 656 | do | 644 | do |
| 657 | set_confdirs(cfg, platforms, hardcoded.SYSCONFDIR) | 645 | local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded.SYSCONFDIR |
| 658 | local name = "config-"..cfg.lua_version..".lua" | 646 | if platforms.windows and not platforms.msys2_mingw_w64 then |
| 659 | sys_config_file = (cfg.sysconfdir .. "/" .. name):gsub("\\", "/") | 647 | cfg.home = os.getenv("APPDATA") or "c:" |
| 660 | home_config_file = (cfg.homeconfdir .. "/" .. name):gsub("\\", "/") | 648 | cfg.home_tree = cfg.home.."/luarocks" |
| 661 | if cfg.project_dir then | 649 | cfg.sysconfdir = sysconfdir or ((os.getenv("PROGRAMFILES") or "c:") .. "/luarocks") |
| 662 | project_config_file = cfg.project_dir .. "/.luarocks/" .. name | 650 | else |
| 651 | cfg.home = os.getenv("HOME") or "" | ||
| 652 | cfg.home_tree = cfg.home.."/.luarocks" | ||
| 653 | cfg.sysconfdir = sysconfdir or detect_sysconfdir() or "/etc/luarocks" | ||
| 663 | end | 654 | end |
| 664 | end | 655 | end |
| 665 | 656 | ||
| 666 | -- Load system configuration file | 657 | -- Load system configuration file |
| 658 | sys_config_file = (cfg.sysconfdir .. "/" .. config_file_name):gsub("\\", "/") | ||
| 667 | local sys_config_ok, err = load_config_file(cfg, platforms, sys_config_file) | 659 | local sys_config_ok, err = load_config_file(cfg, platforms, sys_config_file) |
| 668 | if err then | 660 | if err then |
| 669 | return nil, err, "config" | 661 | return nil, err, "config" |
| @@ -693,8 +685,21 @@ function cfg.init(detected, warning) | |||
| 693 | end | 685 | end |
| 694 | end | 686 | end |
| 695 | 687 | ||
| 688 | -- try XDG config home | ||
| 689 | if platforms.unix and not home_config_ok then | ||
| 690 | local xdg_config_home = os.getenv("XDG_CONFIG_HOME") or cfg.home .. "/.config" | ||
| 691 | cfg.homeconfdir = xdg_config_home .. "/luarocks" | ||
| 692 | home_config_file = (cfg.homeconfdir .. "/" .. config_file_name):gsub("\\", "/") | ||
| 693 | home_config_ok, err = load_config_file(cfg, platforms, home_config_file) | ||
| 694 | if err then | ||
| 695 | return nil, err, "config" | ||
| 696 | end | ||
| 697 | end | ||
| 698 | |||
| 696 | -- try the alternative defaults if there was no environment specified file or it didn't work | 699 | -- try the alternative defaults if there was no environment specified file or it didn't work |
| 697 | if not home_config_ok then | 700 | if not home_config_ok then |
| 701 | cfg.homeconfdir = cfg.home_tree | ||
| 702 | home_config_file = (cfg.homeconfdir .. "/" .. config_file_name):gsub("\\", "/") | ||
| 698 | home_config_ok, err = load_config_file(cfg, platforms, home_config_file) | 703 | home_config_ok, err = load_config_file(cfg, platforms, home_config_file) |
| 699 | if err then | 704 | if err then |
| 700 | return nil, err, "config" | 705 | return nil, err, "config" |
| @@ -703,6 +708,7 @@ function cfg.init(detected, warning) | |||
| 703 | 708 | ||
| 704 | -- finally, use the project-specific config file if any | 709 | -- finally, use the project-specific config file if any |
| 705 | if cfg.project_dir then | 710 | if cfg.project_dir then |
| 711 | project_config_file = cfg.project_dir .. "/.luarocks/" .. config_file_name | ||
| 706 | project_config_ok, err = load_config_file(cfg, platforms, project_config_file) | 712 | project_config_ok, err = load_config_file(cfg, platforms, project_config_file) |
| 707 | if err then | 713 | if err then |
| 708 | return nil, err, "config" | 714 | return nil, err, "config" |
