luarocks-packages-updater: handle errors better

This commit is contained in:
Austin Horstman 2024-12-19 14:15:08 -06:00
parent 8af52ff6ba
commit 213f4d95bf
No known key found for this signature in database

View File

@ -127,7 +127,7 @@ class LuaEditor(pluginupdate.Editor):
config: FetchConfig,
# TODO: implement support for adding/updating individual plugins
to_update: list[str] | None,
):
):
if to_update is not None:
raise NotImplementedError("For now, lua updater doesn't support updating individual packages.")
_prefetch = generate_pkg_nix
@ -142,7 +142,15 @@ class LuaEditor(pluginupdate.Editor):
finally:
pass
self.generate_nix(results, output_file)
successful_results = [(plug, nix_expr) for plug, nix_expr, error in results if nix_expr is not None]
errors = [(plug, error) for plug, nix_expr, error in results if error is not None]
self.generate_nix(successful_results, output_file)
if errors:
log.error("The following plugins failed to update:")
for plug, error in errors:
log.error("%s: %s", plug.name, error)
redirects = {}
return redirects
@ -171,39 +179,43 @@ def generate_pkg_nix(plug: LuaPlugin):
"""
log.debug("Generating nix expression for %s", plug.name)
cmd = ["luarocks", "nix"]
try:
cmd = ["luarocks", "nix"]
if plug.maintainers:
cmd.append(f"--maintainers={plug.maintainers}")
if plug.maintainers:
cmd.append(f"--maintainers={plug.maintainers}")
if plug.rockspec != "":
if plug.ref or plug.version:
msg = "'version' and 'ref' will be ignored as the rockspec is hardcoded for package %s" % plug.name
log.warning(msg)
if plug.rockspec != "":
if plug.ref or plug.version:
msg = "'version' and 'ref' will be ignored as the rockspec is hardcoded for package %s" % plug.name
log.warning(msg)
log.debug("Updating from rockspec %s", plug.rockspec)
cmd.append(plug.rockspec)
log.debug("Updating from rockspec %s", plug.rockspec)
cmd.append(plug.rockspec)
# update the plugin from luarocks
else:
cmd.append(plug.name)
if plug.version and plug.version != "src":
cmd.append(plug.version)
# update the plugin from luarocks
else:
cmd.append(plug.name)
if plug.version and plug.version != "src":
cmd.append(plug.version)
if plug.server != "src" and plug.server:
cmd.append(f"--only-server={plug.server}")
if plug.server != "src" and plug.server:
cmd.append(f"--only-server={plug.server}")
if plug.luaversion:
cmd.append(f"--lua-version={plug.luaversion}")
luaver = plug.luaversion.replace(".", "")
if luaver := os.getenv(f"LUA_{luaver}"):
cmd.append(f"--lua-dir={luaver}")
if plug.luaversion:
cmd.append(f"--lua-version={plug.luaversion}")
luaver = plug.luaversion.replace(".", "")
if luaver := os.getenv(f"LUA_{luaver}"):
cmd.append(f"--lua-dir={luaver}")
log.debug("running %s", " ".join(cmd))
log.debug("running %s", " ".join(cmd))
output = subprocess.check_output(cmd, text=True)
output = "callPackage(" + output.strip() + ") {};\n\n"
return (plug, output)
output = subprocess.check_output(cmd, text=True)
output = "callPackage(" + output.strip() + ") {};\n\n"
return (plug, output, None)
except subprocess.CalledProcessError as e:
log.error("Failed to generate nix expression for %s: %s", plug.name, e)
return (plug, None, str(e))
def main():