From b096e35e29f5406f74c5cf7bdb86eff8ebf3b526 Mon Sep 17 00:00:00 2001 From: George Roman Date: Fri, 25 Jan 2019 13:24:30 +0200 Subject: Support installations without documentation --- src/luarocks/cmd/build.lua | 23 ++++++++++++++++++++++- src/luarocks/cmd/install.lua | 18 ++++++++++++++++-- src/luarocks/util.lua | 1 + 3 files changed, 39 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/luarocks/cmd/build.lua b/src/luarocks/cmd/build.lua index daccd6cc..29b1bd6e 100644 --- a/src/luarocks/cmd/build.lua +++ b/src/luarocks/cmd/build.lua @@ -3,6 +3,7 @@ -- Builds a rock, compiling its C parts if any. local cmd_build = {} +local dir = require("luarocks.dir") local pack = require("luarocks.pack") local path = require("luarocks.path") local util = require("luarocks.util") @@ -113,6 +114,18 @@ local function do_build(ns_name, version, opts) return build_rock(url, opts) end +local function remove_doc_dir(name, version) + local install_dir = path.install_dir(name, version) + for _, f in ipairs(fs.list_dir(install_dir)) do + local doc_dirs = { "doc", "docs" } + for _, d in ipairs(doc_dirs) do + if f == d then + fs.delete(dir.path(install_dir, f)) + end + end + end +end + --- Driver function for "build" command. -- @param name string: A local or remote rockspec or rock file. -- If a package name is given, forwards the request to "search" and, @@ -143,7 +156,11 @@ function cmd_build.command(flags, name, version) if flags["pack-binary-rock"] then return pack.pack_binary_rock(name, version, function() opts.build_only_deps = false - return do_build(name, version, opts) + local status, err, errcode = do_build(name, version, opts) + if status and flags["no-doc"] then + remove_doc_dir(name, version) + end + return status, err, errcode end) end @@ -156,6 +173,10 @@ function cmd_build.command(flags, name, version) if not ok then return nil, err end name, version = ok, err + if flags["no-doc"] then + remove_doc_dir(name, version) + end + if opts.build_only_deps then util.printout("Stopping after installing dependencies for " ..name.." "..version) util.printout() diff --git a/src/luarocks/cmd/install.lua b/src/luarocks/cmd/install.lua index 824ca248..97c693d9 100644 --- a/src/luarocks/cmd/install.lua +++ b/src/luarocks/cmd/install.lua @@ -29,6 +29,7 @@ or a filename of a locally available rock. in the configuration file. --only-deps Installs only the dependencies of the rock. +--no-doc Installs the rock without its documentation. ]]..util.deps_mode_help() @@ -154,17 +155,30 @@ local function install_rock_file_deps(filename, deps_mode) return name, version end -local function install_rock_file(filename, namespace, deps_mode, keep, force, force_fast) +local function install_rock_file(filename, namespace, deps_mode, keep, force, force_fast, no_doc) assert(type(filename) == "string") assert(type(namespace) == "string" or namespace == nil) assert(type(deps_mode) == "string") assert(type(keep) == "boolean" or keep == nil) assert(type(force) == "boolean" or force == nil) assert(type(force_fast) == "boolean" or force_fast == nil) + assert(type(no_doc) == "boolean" or no_doc == nil) local name, version = install.install_binary_rock(filename, deps_mode, namespace) if not name then return nil, version end + if no_doc then + local install_dir = path.install_dir(name, version) + for _, f in ipairs(fs.list_dir(install_dir)) do + local doc_dirs = { "doc", "docs" } + for _, d in ipairs(doc_dirs) do + if f == d then + fs.delete(dir.path(install_dir, f)) + end + end + end + end + if (not keep) and not cfg.keep_other_versions then local ok, err = remove.remove_other_versions(name, version, force, force_fast) if not ok then util.printerr(err) end @@ -202,7 +216,7 @@ function install.command(flags, name, version) if flags["only-deps"] then return install_rock_file_deps(name, deps_mode) else - return install_rock_file(name, flags["namespace"], deps_mode, flags["keep"], flags["force"], flags["force-fast"]) + return install_rock_file(name, flags["namespace"], deps_mode, flags["keep"], flags["force"], flags["force-fast"], flags["no-doc"]) end else local url, err = search.find_suitable_rock(queries.new(name:lower(), version)) diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index 9aef9049..7f7ad80f 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua @@ -125,6 +125,7 @@ local supported_flags = { ["mversion"] = true, ["namespace"] = "", ["no-bin"] = true, + ["no-doc"] = true, ["no-refresh"] = true, ["nodeps"] = true, ["old-versions"] = true, -- cgit v1.2.3-55-g6feb