diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2019-03-19 10:33:25 -0400 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2019-04-01 17:32:53 -0400 |
commit | 655eacf345a108247ba6ea506721395571108912 (patch) | |
tree | 01c5658eb2d221a49ecd9d47c2d7e7b6094a69af /src | |
parent | 4e97804fc1b8b47667ec1d8b8f3c473d31c8bb29 (diff) | |
download | luarocks-655eacf345a108247ba6ea506721395571108912.tar.gz luarocks-655eacf345a108247ba6ea506721395571108912.tar.bz2 luarocks-655eacf345a108247ba6ea506721395571108912.zip |
Add --sign option to `luarocks pack`
* Introduce a new module, `luarocks.signing`
* Add `--sign` option to `luarocks pack`, which produces a
detached GPG signature
* Includes a basic test, along with some fixtures with
a password-less GPG key
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/cmd/pack.lua | 14 | ||||
-rw-r--r-- | src/luarocks/core/cfg.lua | 2 | ||||
-rw-r--r-- | src/luarocks/signing.lua | 22 | ||||
-rw-r--r-- | src/luarocks/util.lua | 1 |
4 files changed, 39 insertions, 0 deletions
diff --git a/src/luarocks/cmd/pack.lua b/src/luarocks/cmd/pack.lua index 52b2fbca..02e554d9 100644 --- a/src/luarocks/cmd/pack.lua +++ b/src/luarocks/cmd/pack.lua | |||
@@ -5,11 +5,14 @@ local cmd_pack = {} | |||
5 | 5 | ||
6 | local util = require("luarocks.util") | 6 | local util = require("luarocks.util") |
7 | local pack = require("luarocks.pack") | 7 | local pack = require("luarocks.pack") |
8 | local signing = require("luarocks.signing") | ||
8 | local queries = require("luarocks.queries") | 9 | local queries = require("luarocks.queries") |
9 | 10 | ||
10 | cmd_pack.help_summary = "Create a rock, packing sources or binaries." | 11 | cmd_pack.help_summary = "Create a rock, packing sources or binaries." |
11 | cmd_pack.help_arguments = "{<rockspec>|<name> [<version>]}" | 12 | cmd_pack.help_arguments = "{<rockspec>|<name> [<version>]}" |
12 | cmd_pack.help = [[ | 13 | cmd_pack.help = [[ |
14 | --sign Produce a signature file as well. | ||
15 | |||
13 | Argument may be a rockspec file, for creating a source rock, | 16 | Argument may be a rockspec file, for creating a source rock, |
14 | or the name of an installed package, for creating a binary rock. | 17 | or the name of an installed package, for creating a binary rock. |
15 | In the latter case, the app version may be given as a second | 18 | In the latter case, the app version may be given as a second |
@@ -40,7 +43,18 @@ function cmd_pack.command(flags, arg, version) | |||
40 | if err then | 43 | if err then |
41 | return nil, err | 44 | return nil, err |
42 | else | 45 | else |
46 | local sigfile | ||
47 | if flags["sign"] then | ||
48 | sigfile, err = signing.sign_file(file) | ||
49 | util.printout() | ||
50 | end | ||
43 | util.printout("Packed: "..file) | 51 | util.printout("Packed: "..file) |
52 | if sigfile then | ||
53 | util.printout("Sigature stored in: "..sigfile) | ||
54 | end | ||
55 | if err then | ||
56 | return nil, err | ||
57 | end | ||
44 | return true | 58 | return true |
45 | end | 59 | end |
46 | end | 60 | end |
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua index 5b9dec2f..c6824153 100644 --- a/src/luarocks/core/cfg.lua +++ b/src/luarocks/core/cfg.lua | |||
@@ -230,6 +230,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) | |||
230 | SVN = "svn", | 230 | SVN = "svn", |
231 | HG = "hg", | 231 | HG = "hg", |
232 | 232 | ||
233 | GPG = "gpg", | ||
234 | |||
233 | RSYNC = "rsync", | 235 | RSYNC = "rsync", |
234 | WGET = "wget", | 236 | WGET = "wget", |
235 | SCP = "scp", | 237 | SCP = "scp", |
diff --git a/src/luarocks/signing.lua b/src/luarocks/signing.lua new file mode 100644 index 00000000..7503768e --- /dev/null +++ b/src/luarocks/signing.lua | |||
@@ -0,0 +1,22 @@ | |||
1 | local signing = {} | ||
2 | |||
3 | local cfg = require("luarocks.core.cfg") | ||
4 | local fs = require("luarocks.fs") | ||
5 | |||
6 | function signing.sign_file(file) | ||
7 | local vars = cfg.variables | ||
8 | local gpg_ok, err = fs.is_tool_available(vars.GPG, "gpg") | ||
9 | if not gpg_ok then | ||
10 | return nil, err | ||
11 | end | ||
12 | local gpg = vars.GPG | ||
13 | |||
14 | local sigfile = file .. ".asc" | ||
15 | if fs.execute(gpg, "--armor", "--output", sigfile, "--detach-sign", file) then | ||
16 | return sigfile | ||
17 | else | ||
18 | return nil, "failed running " .. gpg .. " to sign " .. file | ||
19 | end | ||
20 | end | ||
21 | |||
22 | return signing | ||
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua index 25c521ea..bba39457 100644 --- a/src/luarocks/util.lua +++ b/src/luarocks/util.lua | |||
@@ -149,6 +149,7 @@ local supported_flags = { | |||
149 | ["rockspec"] = true, | 149 | ["rockspec"] = true, |
150 | ["rockspec-format"] = "<ver>", | 150 | ["rockspec-format"] = "<ver>", |
151 | ["server"] = "<server>", | 151 | ["server"] = "<server>", |
152 | ["sign"] = true, | ||
152 | ["skip-pack"] = true, | 153 | ["skip-pack"] = true, |
153 | ["source"] = true, | 154 | ["source"] = true, |
154 | ["summary"] = "\"<text>\"", | 155 | ["summary"] = "\"<text>\"", |