From b2d24d390bdfc6217211e182dbe4a0f7c6242e36 Mon Sep 17 00:00:00 2001 From: Vladimir Dronnikov Date: Wed, 17 Oct 2012 18:27:27 +0400 Subject: introduce --porcelain cmdline flag to force machine-readable output --- src/luarocks/list.lua | 16 +++++++++---- src/luarocks/search.lua | 62 +++++++++++++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/luarocks/list.lua b/src/luarocks/list.lua index 1943f932..f9aa5fe1 100644 --- a/src/luarocks/list.lua +++ b/src/luarocks/list.lua @@ -26,10 +26,16 @@ function run(...) for _, tree in ipairs(cfg.rocks_trees) do search.manifest_search(results, path.rocks_dir(tree), query) end - util.printout() - util.printout("Installed rocks:") - util.printout("----------------") - util.printout() - search.print_results(results, false) + -- machine-readable output + if flags["porcelain"] then + search.print_results(results, true) + -- pretty human-readable output + else + util.printout() + util.printout("Installed rocks:") + util.printout("----------------") + util.printout() + search.print_results(results) + end return true end diff --git a/src/luarocks/search.lua b/src/luarocks/search.lua index 692004ae..eeb9c20c 100644 --- a/src/luarocks/search.lua +++ b/src/luarocks/search.lua @@ -282,25 +282,30 @@ end --- Print a list of rocks/rockspecs on standard output. -- @param results table: A table where keys are package names and versions -- are tables matching version strings to an array of rocks servers. --- @param show_repo boolean or nil: Whether to show repository -function print_results(results, show_repo) +-- @param porcelain boolean or nil: A flag to force machine-friendly output. +function print_results(results, porcelain) assert(type(results) == "table") - assert(type(show_repo) == "boolean" or not show_repo) - -- Force display of repo location for the time being - show_repo = true -- show_repo == nil and true or show_repo + assert(type(porcelain) == "boolean" or not porcelain) for package, versions in util.sortedpairs(results) do - util.printout(package) - for version, repositories in util.sortedpairs(versions, deps.compare_versions) do - if show_repo then - for _, repo in ipairs(repositories) do - util.printout(" "..version.." ("..repo.arch..") - "..repo.repo) + if not porcelain then + util.printout(package) + end + for version, repos in util.sortedpairs(versions, deps.compare_versions) do + for _, repo in ipairs(repos) do + if porcelain then + util.printout(package, version, repo.arch, repo.repo) + --for k, v in pairs(repo) do print(k, v) end + else + util.printout( + " "..version.." ("..repo.arch..") - "..repo.repo + ) end - else - util.printout(" "..version) end end - util.printout() + if not porcelain then + util.printout() + end end end @@ -369,22 +374,29 @@ function run(...) local query = make_query(name:lower(), version) query.exact_name = false local results, err = search_repos(query) - util.printout() - util.printout("Search results:") - util.printout("===============") - util.printout() + -- N.B. --porcelain forces machine-readable output + if not flags["porcelain"] then + util.printout() + util.printout("Search results:") + util.printout("===============") + util.printout() + end local sources, binaries = split_source_and_binary_results(results) if next(sources) and not flags["binary"] then - util.printout("Rockspecs and source rocks:") - util.printout("---------------------------") - util.printout() - print_results(sources, true) + if not flags["porcelain"] then + util.printout("Rockspecs and source rocks:") + util.printout("---------------------------") + util.printout() + end + print_results(sources, flags["porcelain"]) end if next(binaries) and not flags["source"] then - util.printout("Binary and pure-Lua rocks:") - util.printout("--------------------------") - util.printout() - print_results(binaries, true) + if not flags["porcelain"] then + util.printout("Binary and pure-Lua rocks:") + util.printout("--------------------------") + util.printout() + end + print_results(binaries, flags["porcelain"]) end return true end -- cgit v1.2.3-55-g6feb From 960c8b1f79837ea305ef93cb128b22ed96565c18 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Wed, 17 Oct 2012 15:12:23 -0300 Subject: Cleanup display of titles, simplify porcelain a bit. --- src/luarocks/download.lua | 4 +--- src/luarocks/install.lua | 4 +--- src/luarocks/list.lua | 13 ++----------- src/luarocks/search.lua | 30 +++++++----------------------- src/luarocks/util.lua | 8 ++++++++ src/luarocks/validate.lua | 8 ++------ 6 files changed, 21 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/luarocks/download.lua b/src/luarocks/download.lua index ae835bf2..0012cb18 100644 --- a/src/luarocks/download.lua +++ b/src/luarocks/download.lua @@ -50,9 +50,7 @@ function download(arch, name, version, all) return all_ok, any_err else util.printerr("Multiple search results were returned.") - util.printout() - util.printout("Search results:") - util.printout("---------------") + util.title("Search results:") search.print_results(results) return nil, "Please narrow your query or use --all." end diff --git a/src/luarocks/install.lua b/src/luarocks/install.lua index 6b5ea85f..708d6abe 100644 --- a/src/luarocks/install.lua +++ b/src/luarocks/install.lua @@ -141,9 +141,7 @@ function run(...) else util.printout() util.printerr("Could not determine which rock to install.") - util.printout() - util.printout("Search results:") - util.printout("---------------") + util.title("Search results:") search.print_results(results) return nil, (next(results) and "Please narrow your query." or "No results found.") end diff --git a/src/luarocks/list.lua b/src/luarocks/list.lua index f9aa5fe1..f56fc7e9 100644 --- a/src/luarocks/list.lua +++ b/src/luarocks/list.lua @@ -26,16 +26,7 @@ function run(...) for _, tree in ipairs(cfg.rocks_trees) do search.manifest_search(results, path.rocks_dir(tree), query) end - -- machine-readable output - if flags["porcelain"] then - search.print_results(results, true) - -- pretty human-readable output - else - util.printout() - util.printout("Installed rocks:") - util.printout("----------------") - util.printout() - search.print_results(results) - end + util.title("Installed rocks:", flags["porcelain"]) + search.print_results(results, flags["porcelain"]) return true end diff --git a/src/luarocks/search.lua b/src/luarocks/search.lua index eeb9c20c..7db88d74 100644 --- a/src/luarocks/search.lua +++ b/src/luarocks/search.lua @@ -295,11 +295,8 @@ function print_results(results, porcelain) for _, repo in ipairs(repos) do if porcelain then util.printout(package, version, repo.arch, repo.repo) - --for k, v in pairs(repo) do print(k, v) end else - util.printout( - " "..version.." ("..repo.arch..") - "..repo.repo - ) + util.printout(" "..version.." ("..repo.arch..") - "..repo.repo) end end end @@ -374,29 +371,16 @@ function run(...) local query = make_query(name:lower(), version) query.exact_name = false local results, err = search_repos(query) - -- N.B. --porcelain forces machine-readable output - if not flags["porcelain"] then - util.printout() - util.printout("Search results:") - util.printout("===============") - util.printout() - end + local porcelain = flags["porcelain"] + util.title("Search results:", porcelain, "=") local sources, binaries = split_source_and_binary_results(results) if next(sources) and not flags["binary"] then - if not flags["porcelain"] then - util.printout("Rockspecs and source rocks:") - util.printout("---------------------------") - util.printout() - end - print_results(sources, flags["porcelain"]) + util.title("Rockspecs and source rocks:", porcelain) + print_results(sources, porcelain) end if next(binaries) and not flags["source"] then - if not flags["porcelain"] then - util.printout("Binary and pure-Lua rocks:") - util.printout("--------------------------") - util.printout() - end - print_results(binaries, flags["porcelain"]) + util.title("Binary and pure-Lua rocks:", porcelain) + print_results(binaries, porcelain) end return true end diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index 512644c6..de7a43a2 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua @@ -299,6 +299,14 @@ function warning(msg) printerr("Warning: "..msg) end +function title(msg, porcelain, underline) + if porcelain then return end + printout() + printout(msg) + printout((underline or "-"):rep(#msg)) + printout() +end + -- from http://lua-users.org/wiki/SplitJoin -- by PhilippeLhoste function split_string(str, delim, maxNb) diff --git a/src/luarocks/validate.lua b/src/luarocks/validate.lua index 03e90ecf..ed12f8f0 100644 --- a/src/luarocks/validate.lua +++ b/src/luarocks/validate.lua @@ -124,9 +124,7 @@ local function validate(repo, flags) fs.delete(sandbox) end restore_settings(settings) - util.printout() - util.printout("Results:") - util.printout("--------") + util.title("Results:") util.printout("OK: "..tostring(#results.ok)) for _, entry in ipairs(results.ok) do util.printout(entry.file) @@ -141,9 +139,7 @@ local function validate(repo, flags) end end - util.printout() - util.printout("Summary:") - util.printout("--------") + util.title("Summary:") local total = 0 for errcode, errors in pairs(results) do util.printout(errcode..": "..tostring(#errors)) -- cgit v1.2.3-55-g6feb