diff options
author | V1K1NGbg <victor@ilchev.com> | 2024-08-22 17:49:02 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2024-10-21 13:30:51 -0300 |
commit | edd7bd5093060a37ea82628b309b766148bf4014 (patch) | |
tree | cab2761a0673cc68143609312ad3a1ac02a02571 /src | |
parent | cc5723ecad8db0b1ffbd4c85d265d54287e0c732 (diff) | |
download | luarocks-edd7bd5093060a37ea82628b309b766148bf4014.tar.gz luarocks-edd7bd5093060a37ea82628b309b766148bf4014.tar.bz2 luarocks-edd7bd5093060a37ea82628b309b766148bf4014.zip |
Teal: convert luarocks.cmd.build
Diffstat (limited to 'src')
-rw-r--r-- | src/luarocks/cmd/build.tl (renamed from src/luarocks/cmd/build.lua) | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/src/luarocks/cmd/build.lua b/src/luarocks/cmd/build.tl index 8049596f..c8d6a579 100644 --- a/src/luarocks/cmd/build.lua +++ b/src/luarocks/cmd/build.tl | |||
@@ -1,7 +1,9 @@ | |||
1 | 1 | ||
2 | --- Module implementing the LuaRocks "build" command. | 2 | --- Module implementing the LuaRocks "build" command. |
3 | -- Builds a rock, compiling its C parts if any. | 3 | -- Builds a rock, compiling its C parts if any. |
4 | local cmd_build = {} | 4 | local record cmd_build |
5 | needs_lock: function(Args): boolean | ||
6 | end | ||
5 | 7 | ||
6 | local pack = require("luarocks.pack") | 8 | local pack = require("luarocks.pack") |
7 | local path = require("luarocks.path") | 9 | local path = require("luarocks.path") |
@@ -13,12 +15,19 @@ local deps = require("luarocks.deps") | |||
13 | local remove = require("luarocks.remove") | 15 | local remove = require("luarocks.remove") |
14 | local cfg = require("luarocks.core.cfg") | 16 | local cfg = require("luarocks.core.cfg") |
15 | local build = require("luarocks.build") | 17 | local build = require("luarocks.build") |
16 | local writer = require("luarocks.manif.writer") | ||
17 | local search = require("luarocks.search") | 18 | local search = require("luarocks.search") |
18 | local make = require("luarocks.cmd.make") | 19 | local make = require("luarocks.cmd.make") |
19 | local repos = require("luarocks.repos") | 20 | local repos = require("luarocks.repos") |
20 | 21 | ||
21 | function cmd_build.add_to_parser(parser) | 22 | local type Parser = require("luarocks.vendor.argparse").Parser |
23 | |||
24 | local type Args = require("luarocks.core.types.args").Args | ||
25 | |||
26 | local type BOpts = require("luarocks.core.types.bopts").BOpts | ||
27 | |||
28 | local type Rockspec = require("luarocks.core.types.rockspec").Rockspec | ||
29 | |||
30 | function cmd_build.add_to_parser(parser: Parser) | ||
22 | local cmd = parser:command("build", "Build and install a rock, compiling its C parts if any.\n".. -- luacheck: ignore 431 | 31 | local cmd = parser:command("build", "Build and install a rock, compiling its C parts if any.\n".. -- luacheck: ignore 431 |
23 | "If the sources contain a luarocks.lock file, uses it as an authoritative source for ".. | 32 | "If the sources contain a luarocks.lock file, uses it as an authoritative source for ".. |
24 | "exact version of dependencies.\n".. | 33 | "exact version of dependencies.\n".. |
@@ -41,7 +50,7 @@ function cmd_build.add_to_parser(parser) | |||
41 | "versions of each dependency found for this rock (recursively), ".. | 50 | "versions of each dependency found for this rock (recursively), ".. |
42 | "and store it in the rock's directory. ".. | 51 | "and store it in the rock's directory. ".. |
43 | "Ignores any existing luarocks.lock file in the rock's sources.") | 52 | "Ignores any existing luarocks.lock file in the rock's sources.") |
44 | make.cmd_options(cmd) | 53 | make.cmd_options(cmd as Parser) |
45 | end | 54 | end |
46 | 55 | ||
47 | --- Build and install a rock. | 56 | --- Build and install a rock. |
@@ -49,15 +58,13 @@ end | |||
49 | -- @param opts table: build options | 58 | -- @param opts table: build options |
50 | -- @return boolean or (nil, string, [string]): True if build was successful, | 59 | -- @return boolean or (nil, string, [string]): True if build was successful, |
51 | -- or false and an error message and an optional error code. | 60 | -- or false and an error message and an optional error code. |
52 | local function build_rock(rock_filename, opts) | 61 | local function build_rock(rock_filename: string, opts: BOpts): boolean, string, string |
53 | assert(type(rock_filename) == "string") | ||
54 | assert(opts:type() == "build.opts") | ||
55 | 62 | ||
56 | local cwd = fs.absolute_name(dir.path(".")) | 63 | local cwd = fs.absolute_name(dir.path(".")) |
57 | 64 | ||
58 | local ok, err, errcode | 65 | local ok, err, errcode: boolean, string, string |
59 | 66 | ||
60 | local unpack_dir | 67 | local unpack_dir: string |
61 | unpack_dir, err, errcode = fetch.fetch_and_unpack_rock(rock_filename, nil, opts.verify) | 68 | unpack_dir, err, errcode = fetch.fetch_and_unpack_rock(rock_filename, nil, opts.verify) |
62 | if not unpack_dir then | 69 | if not unpack_dir then |
63 | return nil, err, errcode | 70 | return nil, err, errcode |
@@ -68,25 +75,23 @@ local function build_rock(rock_filename, opts) | |||
68 | ok, err = fs.change_dir(unpack_dir) | 75 | ok, err = fs.change_dir(unpack_dir) |
69 | if not ok then return nil, err end | 76 | if not ok then return nil, err end |
70 | 77 | ||
71 | local rockspec | 78 | local rockspec: Rockspec |
72 | rockspec, err, errcode = fetch.load_rockspec(rockspec_filename) | 79 | rockspec, err, errcode = fetch.load_rockspec(rockspec_filename) |
73 | if not rockspec then | 80 | if not rockspec then |
74 | return nil, err, errcode | 81 | return nil, err, errcode |
75 | end | 82 | end |
76 | 83 | ||
77 | ok, err, errcode = build.build_rockspec(rockspec, opts, cwd) | 84 | local n, v = build.build_rockspec(rockspec, opts, cwd) |
85 | |||
86 | ok, err, errcode = n ~= nil, v, nil | ||
78 | 87 | ||
79 | fs.pop_dir() | 88 | fs.pop_dir() |
80 | return ok, err, errcode | 89 | return ok, err, errcode |
81 | end | 90 | end |
82 | 91 | ||
83 | local function do_build(name, namespace, version, opts) | 92 | local function do_build(name: string, namespace: string, version: string, opts: BOpts): string, string, string |
84 | assert(type(name) == "string") | ||
85 | assert(type(namespace) == "string" or not namespace) | ||
86 | assert(version == nil or type(version) == "string") | ||
87 | assert(opts:type() == "build.opts") | ||
88 | 93 | ||
89 | local url, err | 94 | local url, err: string, string |
90 | if name:match("%.rockspec$") or name:match("%.rock$") then | 95 | if name:match("%.rockspec$") or name:match("%.rock$") then |
91 | url = name | 96 | url = name |
92 | else | 97 | else |
@@ -118,7 +123,11 @@ local function do_build(name, namespace, version, opts) | |||
118 | opts.need_to_fetch = false | 123 | opts.need_to_fetch = false |
119 | end | 124 | end |
120 | 125 | ||
121 | return build_rock(url, opts) | 126 | local ok, err, errcode = build_rock(url, opts) |
127 | if not ok then | ||
128 | return nil, err, errcode | ||
129 | end | ||
130 | return name, version | ||
122 | end | 131 | end |
123 | 132 | ||
124 | --- Driver function for "build" command. | 133 | --- Driver function for "build" command. |
@@ -127,12 +136,12 @@ end | |||
127 | -- When passing a package name, a version number may also be given. | 136 | -- When passing a package name, a version number may also be given. |
128 | -- @return boolean or (nil, string, exitcode): True if build was successful; nil and an | 137 | -- @return boolean or (nil, string, exitcode): True if build was successful; nil and an |
129 | -- error message otherwise. exitcode is optionally returned. | 138 | -- error message otherwise. exitcode is optionally returned. |
130 | function cmd_build.command(args) | 139 | function cmd_build.command(args: Args): boolean, string, string |
131 | if not args.rock then | 140 | if not args.rock then |
132 | return make.command(args) | 141 | return make.command(args) |
133 | end | 142 | end |
134 | 143 | ||
135 | local opts = build.opts({ | 144 | local opts = { |
136 | need_to_fetch = true, | 145 | need_to_fetch = true, |
137 | minimal_mode = false, | 146 | minimal_mode = false, |
138 | deps_mode = deps.get_deps_mode(args), | 147 | deps_mode = deps.get_deps_mode(args), |
@@ -144,14 +153,14 @@ function cmd_build.command(args) | |||
144 | pin = not not args.pin, | 153 | pin = not not args.pin, |
145 | rebuild = not not (args.force or args.force_fast), | 154 | rebuild = not not (args.force or args.force_fast), |
146 | no_install = false | 155 | no_install = false |
147 | }) | 156 | } |
148 | 157 | ||
149 | if args.sign and not args.pack_binary_rock then | 158 | if args.sign and not args.pack_binary_rock then |
150 | return nil, "In the build command, --sign is meant to be used only with --pack-binary-rock" | 159 | return nil, "In the build command, --sign is meant to be used only with --pack-binary-rock" |
151 | end | 160 | end |
152 | 161 | ||
153 | if args.pack_binary_rock then | 162 | if args.pack_binary_rock then |
154 | return pack.pack_binary_rock(args.rock, args.namespace, args.version, args.sign, function() | 163 | return pack.pack_binary_rock(args.rock, args.namespace, args.version, args.sign, function(): string, string |
155 | local name, version = do_build(args.rock, args.namespace, args.version, opts) | 164 | local name, version = do_build(args.rock, args.namespace, args.version, opts) |
156 | if name and args.no_doc then | 165 | if name and args.no_doc then |
157 | util.remove_doc_dir(name, version) | 166 | util.remove_doc_dir(name, version) |
@@ -165,7 +174,7 @@ function cmd_build.command(args) | |||
165 | return nil, version | 174 | return nil, version |
166 | end | 175 | end |
167 | if skip == "skip" then | 176 | if skip == "skip" then |
168 | return name, version | 177 | return name ~= nil, version |
169 | end | 178 | end |
170 | 179 | ||
171 | if args.no_doc then | 180 | if args.no_doc then |
@@ -187,12 +196,12 @@ function cmd_build.command(args) | |||
187 | end | 196 | end |
188 | 197 | ||
189 | if opts.deps_mode ~= "none" then | 198 | if opts.deps_mode ~= "none" then |
190 | writer.check_dependencies(nil, deps.get_deps_mode(args)) | 199 | deps.check_dependencies(nil, deps.get_deps_mode(args)) |
191 | end | 200 | end |
192 | return name, version | 201 | return name ~= nil, version |
193 | end | 202 | end |
194 | 203 | ||
195 | cmd_build.needs_lock = function(args) | 204 | cmd_build.needs_lock = function(args: Args): boolean |
196 | if args.pack_binary_rock then | 205 | if args.pack_binary_rock then |
197 | return false | 206 | return false |
198 | end | 207 | end |