diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2018-06-20 14:23:06 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2018-07-01 15:51:13 -0300 |
commit | 65b1722c12d1ffe99093a2d8ed80d9493ec079a1 (patch) | |
tree | d0f1086e837e50ed334dcedf10e3e1d697a7829f /src | |
parent | 73bb24caafa90b03744451590eebf24d357f9a2e (diff) | |
download | luarocks-65b1722c12d1ffe99093a2d8ed80d9493ec079a1.tar.gz luarocks-65b1722c12d1ffe99093a2d8ed80d9493ec079a1.tar.bz2 luarocks-65b1722c12d1ffe99093a2d8ed80d9493ec079a1.zip |
cmd, cfg: read project-dir configuration
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/cmd.lua | 7 | ||||
-rw-r--r-- | src/luarocks/cmd/help.lua | 9 | ||||
-rw-r--r-- | src/luarocks/core/cfg.lua | 33 |
3 files changed, 40 insertions, 9 deletions
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua index 813587e0..d4ee5bc0 100644 --- a/src/luarocks/cmd.lua +++ b/src/luarocks/cmd.lua | |||
@@ -372,8 +372,13 @@ function cmd.run_command(description, commands, ...) | |||
372 | lua_data = cmd.find_lua(flags["lua-dir"], flags["lua-version"]) | 372 | lua_data = cmd.find_lua(flags["lua-dir"], flags["lua-version"]) |
373 | end | 373 | end |
374 | 374 | ||
375 | local project_dir | ||
376 | if flags["project-tree"] then | ||
377 | project_dir = flags["project-tree"]:gsub("[/\\][^/\\]+$", "") | ||
378 | end | ||
379 | |||
375 | ----------------------------------------------------------------------------- | 380 | ----------------------------------------------------------------------------- |
376 | local ok, err = cfg.init(lua_data, util.warning) | 381 | local ok, err = cfg.init(lua_data, project_dir, util.warning) |
377 | if not ok then | 382 | if not ok then |
378 | die(err) | 383 | die(err) |
379 | end | 384 | end |
diff --git a/src/luarocks/cmd/help.lua b/src/luarocks/cmd/help.lua index 3b13acc2..77e73254 100644 --- a/src/luarocks/cmd/help.lua +++ b/src/luarocks/cmd/help.lua | |||
@@ -85,11 +85,14 @@ function help.command(description, commands, command) | |||
85 | util.printout("\tLua version: " .. cfg.lua_version) | 85 | util.printout("\tLua version: " .. cfg.lua_version) |
86 | util.printout() | 86 | util.printout() |
87 | util.printout("\tConfiguration files:") | 87 | util.printout("\tConfiguration files:") |
88 | util.printout("\t\tSystem: ".. dir.normalize(conf.system.file) .. " (" .. get_status(conf.system.ok) ..")") | 88 | util.printout("\t\tSystem : ".. dir.normalize(conf.system.file) .. " (" .. get_status(conf.system.ok) ..")") |
89 | if conf.user.file then | 89 | if conf.user.file then |
90 | util.printout("\t\tUser : ".. dir.normalize(conf.user.file) .. " (" .. get_status(conf.user.ok) ..")") | 90 | util.printout("\t\tUser : ".. dir.normalize(conf.user.file) .. " (" .. get_status(conf.user.ok) ..")") |
91 | else | 91 | else |
92 | util.printout("\t\tUser : disabled in this LuaRocks installation.") | 92 | util.printout("\t\tUser : disabled in this LuaRocks installation.") |
93 | end | ||
94 | if conf.project then | ||
95 | util.printout("\t\tProject : ".. dir.normalize(conf.project.file) .. " (" .. get_status(conf.project.ok) ..")") | ||
93 | end | 96 | end |
94 | util.printout() | 97 | util.printout() |
95 | util.printout("\tRocks trees in use: ") | 98 | util.printout("\tRocks trees in use: ") |
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua index cd3aadbc..2508fa1d 100644 --- a/src/luarocks/core/cfg.lua +++ b/src/luarocks/core/cfg.lua | |||
@@ -500,7 +500,7 @@ end | |||
500 | 500 | ||
501 | local cfg = {} | 501 | local cfg = {} |
502 | 502 | ||
503 | function cfg.init(lua_data, warning) | 503 | function cfg.init(lua_data, project_dir, warning) |
504 | lua_data = lua_data or {} | 504 | lua_data = lua_data or {} |
505 | 505 | ||
506 | local hc_ok, hardcoded = pcall(require, "luarocks.core.hardcoded") | 506 | local hc_ok, hardcoded = pcall(require, "luarocks.core.hardcoded") |
@@ -581,9 +581,11 @@ function cfg.init(lua_data, warning) | |||
581 | 581 | ||
582 | local sys_config_file | 582 | local sys_config_file |
583 | local home_config_file | 583 | local home_config_file |
584 | local project_config_file | ||
584 | do | 585 | do |
585 | local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded.SYSCONFDIR | 586 | local sysconfdir = os.getenv("LUAROCKS_SYSCONFDIR") or hardcoded.SYSCONFDIR |
586 | local sdir, hdir | 587 | local sdir, hdir |
588 | local name = "config-"..cfg.lua_version..".lua" | ||
587 | if platforms.windows then | 589 | if platforms.windows then |
588 | cfg.home = os.getenv("APPDATA") or "c:" | 590 | cfg.home = os.getenv("APPDATA") or "c:" |
589 | sdir = sysconfdir or (os.getenv("PROGRAMFILES") or "c:") .. "/luarocks" | 591 | sdir = sysconfdir or (os.getenv("PROGRAMFILES") or "c:") .. "/luarocks" |
@@ -595,11 +597,15 @@ function cfg.init(lua_data, warning) | |||
595 | hdir = cfg.home.."/.luarocks" | 597 | hdir = cfg.home.."/.luarocks" |
596 | cfg.home_tree = (os.getenv("USER") ~= "root") and cfg.home.."/.luarocks/" | 598 | cfg.home_tree = (os.getenv("USER") ~= "root") and cfg.home.."/.luarocks/" |
597 | end | 599 | end |
598 | sys_config_file = sdir .. "/config-"..cfg.lua_version..".lua" | 600 | sys_config_file = sdir .. "/" .. name |
599 | home_config_file = hdir .. "/config-"..cfg.lua_version..".lua" | 601 | home_config_file = hdir .. "/" .. name |
600 | 602 | ||
601 | sys_config_file = sys_config_file:gsub("\\", "/") | 603 | sys_config_file = sys_config_file:gsub("\\", "/") |
602 | home_config_file = home_config_file:gsub("\\", "/") | 604 | home_config_file = home_config_file:gsub("\\", "/") |
605 | |||
606 | if project_dir then | ||
607 | project_config_file = project_dir .. "/.luarocks/" .. name | ||
608 | end | ||
603 | end | 609 | end |
604 | 610 | ||
605 | -- Load system configuration file | 611 | -- Load system configuration file |
@@ -610,6 +616,7 @@ function cfg.init(lua_data, warning) | |||
610 | 616 | ||
611 | -- Load user configuration file (if allowed) | 617 | -- Load user configuration file (if allowed) |
612 | local home_config_ok | 618 | local home_config_ok |
619 | local project_config_ok | ||
613 | if not hardcoded.FORCE_CONFIG then | 620 | if not hardcoded.FORCE_CONFIG then |
614 | local env_var = "LUAROCKS_CONFIG_" .. lua_version:gsub("%.", "_") | 621 | local env_var = "LUAROCKS_CONFIG_" .. lua_version:gsub("%.", "_") |
615 | local env_value = os.getenv(env_var) | 622 | local env_value = os.getenv(env_var) |
@@ -633,7 +640,15 @@ function cfg.init(lua_data, warning) | |||
633 | 640 | ||
634 | -- try the alternative defaults if there was no environment specified file or it didn't work | 641 | -- try the alternative defaults if there was no environment specified file or it didn't work |
635 | if not home_config_ok then | 642 | if not home_config_ok then |
636 | home_config_ok = load_config_file(cfg, platforms, home_config_file) | 643 | home_config_ok, err = load_config_file(cfg, platforms, home_config_file) |
644 | if err then | ||
645 | return nil, err, "config" | ||
646 | end | ||
647 | end | ||
648 | |||
649 | -- finally, use the project-specific config file if any | ||
650 | if project_dir then | ||
651 | project_config_ok, err = load_config_file(cfg, platforms, project_config_file) | ||
637 | if err then | 652 | if err then |
638 | return nil, err, "config" | 653 | return nil, err, "config" |
639 | end | 654 | end |
@@ -677,6 +692,10 @@ function cfg.init(lua_data, warning) | |||
677 | 692 | ||
678 | function cfg.which_config() | 693 | function cfg.which_config() |
679 | return { | 694 | return { |
695 | project = project_dir and { | ||
696 | file = project_config_file, | ||
697 | ok = project_config_ok, | ||
698 | }, | ||
680 | system = { | 699 | system = { |
681 | file = sys_config_file, | 700 | file = sys_config_file, |
682 | ok = sys_config_ok, | 701 | ok = sys_config_ok, |
@@ -685,7 +704,11 @@ function cfg.init(lua_data, warning) | |||
685 | file = home_config_file, | 704 | file = home_config_file, |
686 | ok = home_config_ok, | 705 | ok = home_config_ok, |
687 | }, | 706 | }, |
688 | nearest = home_config_ok and home_config_file or sys_config_file, | 707 | nearest = project_config_ok |
708 | and project_config_file | ||
709 | or (home_config_ok | ||
710 | and home_config_file | ||
711 | or sys_config_file), | ||
689 | } | 712 | } |
690 | end | 713 | end |
691 | 714 | ||