From 18842a049784cdbba66010fb30f06525e9016600 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Tue, 19 Mar 2019 19:13:05 -0400 Subject: upload: add --sign option --- src/luarocks/cmd/upload.lua | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/luarocks/cmd/upload.lua b/src/luarocks/cmd/upload.lua index ffcb1a0a..b052500e 100644 --- a/src/luarocks/cmd/upload.lua +++ b/src/luarocks/cmd/upload.lua @@ -1,6 +1,7 @@ local upload = {} +local signing = require("luarocks.signing") local util = require("luarocks.util") local fetch = require("luarocks.fetch") local pack = require("luarocks.pack") @@ -12,14 +13,20 @@ upload.help_arguments = "[--skip-pack] [--api-key=] [--force] " upload.help = [[ Pack a source rock file (.src.rock extension), upload rockspec and source rock to server. + --skip-pack Do not pack and send source rock. + --api-key= Give it an API key. It will be stored for subsequent uses. + --temp-key= Use the given a temporary API key in this invocation only. It will not be stored. + --force Replace existing rockspec if the same revision of a module already exists. This should be used only in case of upload mistakes: when updating a rockspec, increment the revision number instead. + +--sign Upload a signature file alongside each file as well. ]] local function is_dev_version(version) @@ -58,6 +65,17 @@ function upload.command(flags, fname) return nil, "Revision "..rockspec.version.." already exists on the server. "..util.see_help("upload") end + local sigfname + local rock_sigfname + + if flags["sign"] then + sigfname, err = signing.sign_file(fname) + if err then + return nil, "Failed signing rockspec: " .. err + end + util.printout("Signed rockspec: "..sigfname) + end + local rock_fname if not flags["skip-pack"] and not is_dev_version(rockspec.version) then util.printout("Packing " .. tostring(rockspec.package)) @@ -65,12 +83,20 @@ function upload.command(flags, fname) if not rock_fname then return nil, err end + if flags["sign"] then + rock_sigfname, err = signing.sign_file(rock_fname) + if err then + return nil, "Failed signing rock: " .. err + end + util.printout("Signed packed rock: "..rock_sigfname) + end end local multipart = require("luarocks.upload.multipart") res, err = api:method("upload", nil, { - rockspec_file = multipart.new_file(fname) + rockspec_file = multipart.new_file(fname), + rockspec_sig = sigfname and multipart.new_file(sigfname), }) if not res then return nil, err end @@ -86,7 +112,8 @@ function upload.command(flags, fname) end util.printout(("Sending " .. tostring(rock_fname) .. " ...")) res, err = api:method("upload_rock/" .. ("%d"):format(res.version.id), nil, { - rock_file = multipart.new_file(rock_fname) + rock_file = multipart.new_file(rock_fname), + rock_sig = rock_sigfname and multipart.new_file(rock_sigfname), }) if not res then return nil, err end end -- cgit v1.2.3-55-g6feb