mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-09-21 20:49:52 +03:00
update-luarocks-packages: use pluginupdate.py
Cleans up the common interface between the updaters. Restores the ability to regen the lua packages in parallel.
This commit is contained in:
parent
4b88ab8c5c
commit
8ddad244ea
@ -42,8 +42,6 @@ LOG_LEVELS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log = logging.getLogger()
|
log = logging.getLogger()
|
||||||
log.addHandler(logging.StreamHandler())
|
|
||||||
|
|
||||||
|
|
||||||
def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: float = 2):
|
def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: float = 2):
|
||||||
"""Retry calling the decorated function using an exponential backoff.
|
"""Retry calling the decorated function using an exponential backoff.
|
||||||
@ -203,7 +201,6 @@ class Editor:
|
|||||||
name: str,
|
name: str,
|
||||||
root: Path,
|
root: Path,
|
||||||
get_plugins: str,
|
get_plugins: str,
|
||||||
generate_nix: Callable[[List[Tuple[str, str, Plugin]], str], None],
|
|
||||||
default_in: Optional[Path] = None,
|
default_in: Optional[Path] = None,
|
||||||
default_out: Optional[Path] = None,
|
default_out: Optional[Path] = None,
|
||||||
deprecated: Optional[Path] = None,
|
deprecated: Optional[Path] = None,
|
||||||
@ -213,7 +210,6 @@ class Editor:
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.root = root
|
self.root = root
|
||||||
self.get_plugins = get_plugins
|
self.get_plugins = get_plugins
|
||||||
self._generate_nix = generate_nix
|
|
||||||
self.default_in = default_in or root.joinpath(f"{name}-plugin-names")
|
self.default_in = default_in or root.joinpath(f"{name}-plugin-names")
|
||||||
self.default_out = default_out or root.joinpath("generated.nix")
|
self.default_out = default_out or root.joinpath("generated.nix")
|
||||||
self.deprecated = deprecated or root.joinpath("deprecated.json")
|
self.deprecated = deprecated or root.joinpath("deprecated.json")
|
||||||
@ -226,9 +222,9 @@ class Editor:
|
|||||||
def load_plugin_spec(self, plugin_file) -> List[PluginDesc]:
|
def load_plugin_spec(self, plugin_file) -> List[PluginDesc]:
|
||||||
return load_plugin_spec(plugin_file)
|
return load_plugin_spec(plugin_file)
|
||||||
|
|
||||||
def generate_nix(self, plugins, outfile):
|
def generate_nix(self, plugins, outfile: str):
|
||||||
'''Returns nothing for now, writes directly to outfile'''
|
'''Returns nothing for now, writes directly to outfile'''
|
||||||
self._generate_nix(plugins, outfile)
|
raise NotImplementedError()
|
||||||
|
|
||||||
def get_update(self, input_file: str, outfile: str, proc: int):
|
def get_update(self, input_file: str, outfile: str, proc: int):
|
||||||
return get_update(input_file, outfile, proc, editor=self)
|
return get_update(input_file, outfile, proc, editor=self)
|
||||||
@ -237,9 +233,58 @@ class Editor:
|
|||||||
def attr_path(self):
|
def attr_path(self):
|
||||||
return self.name + "Plugins"
|
return self.name + "Plugins"
|
||||||
|
|
||||||
|
def get_drv_name(self, name: str):
|
||||||
|
return self.attr_path + "." + name
|
||||||
|
|
||||||
def rewrite_input(self, *args, **kwargs):
|
def rewrite_input(self, *args, **kwargs):
|
||||||
return rewrite_input(*args, **kwargs)
|
return rewrite_input(*args, **kwargs)
|
||||||
|
|
||||||
|
def create_parser(self):
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description=(
|
||||||
|
f"Updates nix derivations for {self.name} plugins"
|
||||||
|
f"By default from {self.default_in} to {self.default_out}"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--add",
|
||||||
|
dest="add_plugins",
|
||||||
|
default=[],
|
||||||
|
action="append",
|
||||||
|
help=f"Plugin to add to {self.attr_path} from Github in the form owner/repo",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--input-names",
|
||||||
|
"-i",
|
||||||
|
dest="input_file",
|
||||||
|
default=self.default_in,
|
||||||
|
help="A list of plugins in the form owner/repo",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--out",
|
||||||
|
"-o",
|
||||||
|
dest="outfile",
|
||||||
|
default=self.default_out,
|
||||||
|
help="Filename to save generated nix code",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--proc",
|
||||||
|
"-p",
|
||||||
|
dest="proc",
|
||||||
|
type=int,
|
||||||
|
default=30,
|
||||||
|
help="Number of concurrent processes to spawn.",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--no-commit", "-n", action="store_true", default=False,
|
||||||
|
help="Whether to autocommit changes"
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--debug", "-d", choices=LOG_LEVELS.keys(),
|
||||||
|
default=logging.getLevelName(logging.WARN),
|
||||||
|
help="Adjust log level"
|
||||||
|
)
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -466,54 +511,6 @@ def rewrite_input(
|
|||||||
with open(input_file, "w") as f:
|
with open(input_file, "w") as f:
|
||||||
f.writelines(lines)
|
f.writelines(lines)
|
||||||
|
|
||||||
# TODO move to Editor ?
|
|
||||||
def parse_args(editor: Editor):
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description=(
|
|
||||||
f"Updates nix derivations for {editor.name} plugins"
|
|
||||||
f"By default from {editor.default_in} to {editor.default_out}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--add",
|
|
||||||
dest="add_plugins",
|
|
||||||
default=[],
|
|
||||||
action="append",
|
|
||||||
help=f"Plugin to add to {editor.attr_path} from Github in the form owner/repo",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--input-names",
|
|
||||||
"-i",
|
|
||||||
dest="input_file",
|
|
||||||
default=editor.default_in,
|
|
||||||
help="A list of plugins in the form owner/repo",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--out",
|
|
||||||
"-o",
|
|
||||||
dest="outfile",
|
|
||||||
default=editor.default_out,
|
|
||||||
help="Filename to save generated nix code",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--proc",
|
|
||||||
"-p",
|
|
||||||
dest="proc",
|
|
||||||
type=int,
|
|
||||||
default=30,
|
|
||||||
help="Number of concurrent processes to spawn.",
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--no-commit", "-n", action="store_true", default=False,
|
|
||||||
help="Whether to autocommit changes"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"--debug", "-d", choices=LOG_LEVELS.keys(),
|
|
||||||
default=logging.getLevelName(logging.WARN),
|
|
||||||
help="Adjust log level"
|
|
||||||
)
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
|
def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
|
||||||
repo.index.add([str(f.resolve()) for f in files])
|
repo.index.add([str(f.resolve()) for f in files])
|
||||||
@ -547,12 +544,10 @@ def get_update(input_file: str, outfile: str, proc: int, editor: Editor):
|
|||||||
return update
|
return update
|
||||||
|
|
||||||
|
|
||||||
def update_plugins(editor: Editor):
|
def update_plugins(editor: Editor, args):
|
||||||
"""The main entry function of this module. All input arguments are grouped in the `Editor`."""
|
"""The main entry function of this module. All input arguments are grouped in the `Editor`."""
|
||||||
|
|
||||||
args = parse_args(editor)
|
|
||||||
log.setLevel(LOG_LEVELS[args.debug])
|
log.setLevel(LOG_LEVELS[args.debug])
|
||||||
|
|
||||||
log.info("Start updating plugins")
|
log.info("Start updating plugins")
|
||||||
nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
|
nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True)
|
||||||
update = editor.get_update(args.input_file, args.outfile, args.proc)
|
update = editor.get_update(args.input_file, args.outfile, args.proc)
|
||||||
@ -581,7 +576,7 @@ def update_plugins(editor: Editor):
|
|||||||
if autocommit:
|
if autocommit:
|
||||||
commit(
|
commit(
|
||||||
nixpkgs_repo,
|
nixpkgs_repo,
|
||||||
"{editor.attr_path}.{name}: init at {version}".format(
|
"{editor.get_drv_name name}: init at {version}".format(
|
||||||
editor=editor.name, name=plugin.normalized_name, version=plugin.version
|
editor=editor.name, name=plugin.normalized_name, version=plugin.version
|
||||||
),
|
),
|
||||||
[args.outfile, args.input_file],
|
[args.outfile, args.input_file],
|
||||||
|
@ -16,20 +16,17 @@ from dataclasses import dataclass
|
|||||||
import subprocess
|
import subprocess
|
||||||
import csv
|
import csv
|
||||||
import logging
|
import logging
|
||||||
|
import textwrap
|
||||||
|
from multiprocessing.dummy import Pool
|
||||||
|
|
||||||
from typing import List
|
from typing import List, Tuple
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
LOG_LEVELS = {
|
|
||||||
logging.getLevelName(level): level for level in [
|
|
||||||
logging.DEBUG, logging.INFO, logging.WARN, logging.ERROR ]
|
|
||||||
}
|
|
||||||
|
|
||||||
log = logging.getLogger()
|
log = logging.getLogger()
|
||||||
log.addHandler(logging.StreamHandler())
|
log.addHandler(logging.StreamHandler())
|
||||||
|
|
||||||
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent
|
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent
|
||||||
from pluginupdate import Editor, parse_args, update_plugins, PluginDesc, CleanEnvironment
|
from pluginupdate import Editor, update_plugins, PluginDesc, CleanEnvironment, LOG_LEVELS, Cache
|
||||||
|
|
||||||
PKG_LIST="maintainers/scripts/luarocks-packages.csv"
|
PKG_LIST="maintainers/scripts/luarocks-packages.csv"
|
||||||
TMP_FILE="$(mktemp)"
|
TMP_FILE="$(mktemp)"
|
||||||
@ -67,12 +64,11 @@ class LuaEditor(Editor):
|
|||||||
def get_current_plugins(self):
|
def get_current_plugins(self):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def load_plugin_spec(self, input_file) -> List[PluginDesc]:
|
def load_plugin_spec(self, input_file) -> List[LuaPlugin]:
|
||||||
luaPackages = []
|
luaPackages = []
|
||||||
csvfilename=input_file
|
csvfilename=input_file
|
||||||
log.info("Loading package descriptions from %s", csvfilename)
|
log.info("Loading package descriptions from %s", csvfilename)
|
||||||
|
|
||||||
|
|
||||||
with open(csvfilename, newline='') as csvfile:
|
with open(csvfilename, newline='') as csvfile:
|
||||||
reader = csv.DictReader(csvfile,)
|
reader = csv.DictReader(csvfile,)
|
||||||
for row in reader:
|
for row in reader:
|
||||||
@ -81,96 +77,115 @@ class LuaEditor(Editor):
|
|||||||
luaPackages.append(plugin)
|
luaPackages.append(plugin)
|
||||||
return luaPackages
|
return luaPackages
|
||||||
|
|
||||||
|
def generate_nix(
|
||||||
|
self,
|
||||||
|
results: List[Tuple[LuaPlugin, str]],
|
||||||
|
outfilename: str
|
||||||
|
):
|
||||||
|
|
||||||
|
with tempfile.NamedTemporaryFile("w+") as f:
|
||||||
|
f.write(HEADER)
|
||||||
|
header2 = textwrap.dedent(
|
||||||
|
# header2 = inspect.cleandoc(
|
||||||
|
"""
|
||||||
|
{ self, stdenv, lib, fetchurl, fetchgit, ... } @ args:
|
||||||
|
self: super:
|
||||||
|
with self;
|
||||||
|
{
|
||||||
|
""")
|
||||||
|
f.write(header2)
|
||||||
|
for (plugin, nix_expr) in results:
|
||||||
|
f.write(f"{plugin.normalized_name} = {nix_expr}")
|
||||||
|
f.write(FOOTER)
|
||||||
|
f.flush()
|
||||||
|
|
||||||
|
# if everything went fine, move the generated file to its destination
|
||||||
|
# using copy since move doesn't work across disks
|
||||||
|
shutil.copy(f.name, outfilename)
|
||||||
|
|
||||||
|
print(f"updated {outfilename}")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def attr_path(self):
|
def attr_path(self):
|
||||||
return "luaPackages"
|
return "luaPackages"
|
||||||
|
|
||||||
def get_update(self, input_file: str, outfile: str, _: int):
|
def get_update(self, input_file: str, outfile: str, proc: int):
|
||||||
|
cache: Cache = Cache(self.cache_file)
|
||||||
|
_prefetch = generate_pkg_nix
|
||||||
|
|
||||||
def update() -> dict:
|
def update() -> dict:
|
||||||
plugin_specs = self.load_plugin_spec(input_file)
|
plugin_specs = self.load_plugin_spec(input_file)
|
||||||
|
sorted_plugin_specs = sorted(plugin_specs, key=lambda v: v.name.lower())
|
||||||
|
|
||||||
self.generate_nix(plugin_specs, outfile)
|
try:
|
||||||
|
pool = Pool(processes=proc)
|
||||||
|
results = pool.map(_prefetch, sorted_plugin_specs)
|
||||||
|
finally:
|
||||||
|
pass
|
||||||
|
|
||||||
|
self.generate_nix(results, outfile)
|
||||||
|
|
||||||
redirects = []
|
redirects = []
|
||||||
return redirects
|
return redirects
|
||||||
|
|
||||||
return update
|
return update
|
||||||
|
|
||||||
def rewrite_input(self, *args, **kwargs):
|
def rewrite_input(self, input_file: str, *args, **kwargs):
|
||||||
|
# vim plugin reads the file before update but that shouldn't be our case
|
||||||
# not implemented yet
|
# not implemented yet
|
||||||
|
# fieldnames = ['name', 'server', 'version', 'luaversion', 'maintainers']
|
||||||
|
# input_file = "toto.csv"
|
||||||
|
# with open(input_file, newline='') as csvfile:
|
||||||
|
# writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
||||||
|
# writer.writeheader()
|
||||||
|
# for row in reader:
|
||||||
|
# # name,server,version,luaversion,maintainers
|
||||||
|
# plugin = LuaPlugin(**row)
|
||||||
|
# luaPackages.append(plugin)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def generate_nix(
|
def generate_pkg_nix(plug: LuaPlugin):
|
||||||
plugins: List[LuaPlugin],
|
'''
|
||||||
outfilename: str
|
Generate nix expression for a luarocks package
|
||||||
):
|
Our cache key associates "p.name-p.version" to its rockspec
|
||||||
sorted_plugins = sorted(plugins, key=lambda v: v.name.lower())
|
'''
|
||||||
|
log.debug("Generating nix expression for %s", plug.name)
|
||||||
|
cmd = [ "luarocks", "nix", plug.name]
|
||||||
|
|
||||||
# plug = {}
|
if plug.server:
|
||||||
# selon le manifest luarocks.org/manifest
|
cmd.append(f"--only-server={plug.server}")
|
||||||
def _generate_pkg_nix(plug):
|
|
||||||
cmd = [ "luarocks", "nix", plug.name]
|
|
||||||
if plug.server:
|
|
||||||
cmd.append(f"--only-server={plug.server}")
|
|
||||||
|
|
||||||
if plug.maintainers:
|
if plug.maintainers:
|
||||||
cmd.append(f"--maintainers={plug.maintainers}")
|
cmd.append(f"--maintainers={plug.maintainers}")
|
||||||
|
|
||||||
if plug.version:
|
if plug.version:
|
||||||
cmd.append(plug.version)
|
cmd.append(plug.version)
|
||||||
|
|
||||||
if plug.luaversion:
|
if plug.luaversion:
|
||||||
with CleanEnvironment():
|
with CleanEnvironment():
|
||||||
local_pkgs = str(ROOT.resolve())
|
local_pkgs = str(ROOT.resolve())
|
||||||
cmd2 = ["nix-build", "--no-out-link", local_pkgs, "-A", f"{plug.luaversion}"]
|
cmd2 = ["nix-build", "--no-out-link", local_pkgs, "-A", f"{plug.luaversion}"]
|
||||||
|
|
||||||
log.debug("running %s", cmd2)
|
log.debug("running %s", ' '.join(cmd2))
|
||||||
lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
|
lua_drv_path=subprocess.check_output(cmd2, text=True).strip()
|
||||||
cmd.append(f"--lua-dir={lua_drv_path}/bin")
|
cmd.append(f"--lua-dir={lua_drv_path}/bin")
|
||||||
|
|
||||||
log.debug("running %s", cmd)
|
|
||||||
output = subprocess.check_output(cmd, text=True)
|
|
||||||
return output
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile("w+") as f:
|
|
||||||
f.write(HEADER)
|
|
||||||
f.write("""
|
|
||||||
{ self, stdenv, lib, fetchurl, fetchgit, ... } @ args:
|
|
||||||
self: super:
|
|
||||||
with self;
|
|
||||||
{
|
|
||||||
""")
|
|
||||||
|
|
||||||
for plugin in sorted_plugins:
|
|
||||||
|
|
||||||
nix_expr = _generate_pkg_nix(plugin)
|
|
||||||
f.write(f"{plugin.normalized_name} = {nix_expr}"
|
|
||||||
)
|
|
||||||
f.write(FOOTER)
|
|
||||||
f.flush()
|
|
||||||
|
|
||||||
# if everything went fine, move the generated file to its destination
|
|
||||||
# using copy since move doesn't work across disks
|
|
||||||
shutil.copy(f.name, outfilename)
|
|
||||||
|
|
||||||
print(f"updated {outfilename}")
|
|
||||||
|
|
||||||
def load_plugin_spec():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
log.debug("running %s", cmd)
|
||||||
|
output = subprocess.check_output(cmd, text=True)
|
||||||
|
return (plug, output)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
editor = LuaEditor("lua", ROOT, '', generate_nix,
|
editor = LuaEditor("lua", ROOT, '',
|
||||||
default_in = ROOT.joinpath(PKG_LIST),
|
default_in = ROOT.joinpath(PKG_LIST),
|
||||||
default_out = ROOT.joinpath(GENERATED_NIXFILE)
|
default_out = ROOT.joinpath(GENERATED_NIXFILE)
|
||||||
)
|
)
|
||||||
|
|
||||||
args = parse_args(editor)
|
parser = editor.create_parser()
|
||||||
|
args = parser.parse_args()
|
||||||
log.setLevel(LOG_LEVELS[args.debug])
|
log.setLevel(LOG_LEVELS[args.debug])
|
||||||
|
|
||||||
update_plugins(editor)
|
update_plugins(editor, args)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -39,52 +39,57 @@ in lib.filterAttrs (n: v: v != null) checksums)"""
|
|||||||
|
|
||||||
HEADER = "# This file has been generated by ./pkgs/applications/editors/kakoune/plugins/update.py. Do not edit!"
|
HEADER = "# This file has been generated by ./pkgs/applications/editors/kakoune/plugins/update.py. Do not edit!"
|
||||||
|
|
||||||
|
class KakouneEditor(pluginupdate.Editor):
|
||||||
|
|
||||||
def generate_nix(plugins: List[Tuple[str, str, pluginupdate.Plugin]], outfile: str):
|
|
||||||
sorted_plugins = sorted(plugins, key=lambda v: v[2].name.lower())
|
|
||||||
|
|
||||||
with open(outfile, "w+") as f:
|
def generate_nix(plugins: List[Tuple[str, str, pluginupdate.Plugin]], outfile: str):
|
||||||
f.write(HEADER)
|
sorted_plugins = sorted(plugins, key=lambda v: v[2].name.lower())
|
||||||
f.write(
|
|
||||||
"""
|
|
||||||
{ lib, buildKakounePluginFrom2Nix, fetchFromGitHub, overrides ? (self: super: {}) }:
|
|
||||||
let
|
|
||||||
packages = ( self:
|
|
||||||
{"""
|
|
||||||
)
|
|
||||||
for owner, repo, plugin in sorted_plugins:
|
|
||||||
if plugin.has_submodules:
|
|
||||||
submodule_attr = "\n fetchSubmodules = true;"
|
|
||||||
else:
|
|
||||||
submodule_attr = ""
|
|
||||||
|
|
||||||
|
with open(outfile, "w+") as f:
|
||||||
|
f.write(HEADER)
|
||||||
f.write(
|
f.write(
|
||||||
f"""
|
"""
|
||||||
{plugin.normalized_name} = buildKakounePluginFrom2Nix {{
|
{ lib, buildKakounePluginFrom2Nix, fetchFromGitHub, overrides ? (self: super: {}) }:
|
||||||
pname = "{plugin.normalized_name}";
|
let
|
||||||
version = "{plugin.version}";
|
packages = ( self:
|
||||||
src = fetchFromGitHub {{
|
{"""
|
||||||
owner = "{owner}";
|
|
||||||
repo = "{repo}";
|
|
||||||
rev = "{plugin.commit}";
|
|
||||||
sha256 = "{plugin.sha256}";{submodule_attr}
|
|
||||||
}};
|
|
||||||
meta.homepage = "https://github.com/{owner}/{repo}/";
|
|
||||||
}};
|
|
||||||
"""
|
|
||||||
)
|
)
|
||||||
f.write(
|
for owner, repo, plugin in sorted_plugins:
|
||||||
"""
|
if plugin.has_submodules:
|
||||||
});
|
submodule_attr = "\n fetchSubmodules = true;"
|
||||||
in lib.fix' (lib.extends overrides packages)
|
else:
|
||||||
"""
|
submodule_attr = ""
|
||||||
)
|
|
||||||
print(f"updated {outfile}")
|
f.write(
|
||||||
|
f"""
|
||||||
|
{plugin.normalized_name} = buildKakounePluginFrom2Nix {{
|
||||||
|
pname = "{plugin.normalized_name}";
|
||||||
|
version = "{plugin.version}";
|
||||||
|
src = fetchFromGitHub {{
|
||||||
|
owner = "{owner}";
|
||||||
|
repo = "{repo}";
|
||||||
|
rev = "{plugin.commit}";
|
||||||
|
sha256 = "{plugin.sha256}";{submodule_attr}
|
||||||
|
}};
|
||||||
|
meta.homepage = "https://github.com/{owner}/{repo}/";
|
||||||
|
}};
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
f.write(
|
||||||
|
"""
|
||||||
|
});
|
||||||
|
in lib.fix' (lib.extends overrides packages)
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
print(f"updated {outfile}")
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
editor = pluginupdate.Editor("kakoune", ROOT, GET_PLUGINS, generate_nix)
|
editor = KakouneEditor("kakoune", ROOT, GET_PLUGINS)
|
||||||
pluginupdate.update_plugins(editor)
|
parser = editor.create_parser()
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
pluginupdate.update_plugins(editor, args)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -110,20 +110,20 @@ binaryheap = buildLuarocksPackage {
|
|||||||
|
|
||||||
bit32 = buildLuarocksPackage {
|
bit32 = buildLuarocksPackage {
|
||||||
pname = "bit32";
|
pname = "bit32";
|
||||||
version = "5.3.0-1";
|
version = "5.3.5.1-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/bit32-5.3.0-1.src.rock";
|
url = "https://luarocks.org/bit32-5.3.0-1.src.rock";
|
||||||
sha256 = "19i7kc2pfg9hc6qjq4kka43q6qk71bkl2rzvrjaks6283q6wfyzy";
|
sha256 = "19i7kc2pfg9hc6qjq4kka43q6qk71bkl2rzvrjaks6283q6wfyzy";
|
||||||
};
|
};
|
||||||
disabled = (luaOlder "5.1");
|
disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
|
||||||
propagatedBuildInputs = [ lua ];
|
propagatedBuildInputs = [ lua ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "http://www.lua.org/manual/5.2/manual.html#6.7";
|
homepage = "http://www.lua.org/manual/5.2/manual.html#6.7";
|
||||||
description = "Lua 5.2 bit manipulation library";
|
description = "Lua 5.2 bit manipulation library";
|
||||||
maintainers = with maintainers; [ lblasc ];
|
maintainers = with maintainers; [ lblasc ];
|
||||||
license.fullName = "MIT/X11";
|
license.fullName = "MIT";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -169,16 +169,15 @@ cassowary = buildLuarocksPackage {
|
|||||||
license.fullName = "Apache 2";
|
license.fullName = "Apache 2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
compat53 = buildLuarocksPackage {
|
compat53 = buildLuarocksPackage {
|
||||||
pname = "compat53";
|
pname = "compat53";
|
||||||
version = "0.7-1";
|
version = "0.8-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/compat53-0.7-1.src.rock";
|
url = "https://luarocks.org/compat53-0.7-1.src.rock";
|
||||||
sha256 = "0kpaxbpgrwjn4jjlb17fn29a09w6lw732d21bi0302kqcaixqpyb";
|
sha256 = "0kpaxbpgrwjn4jjlb17fn29a09w6lw732d21bi0302kqcaixqpyb";
|
||||||
};
|
};
|
||||||
disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
|
disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
|
||||||
propagatedBuildInputs = [ lua ];
|
propagatedBuildInputs = [ lua ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
@ -275,7 +274,7 @@ cyrussasl = buildLuarocksPackage {
|
|||||||
|
|
||||||
digestif = buildLuarocksPackage {
|
digestif = buildLuarocksPackage {
|
||||||
pname = "digestif";
|
pname = "digestif";
|
||||||
version = "0.2-1";
|
version = "0.4-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://luarocks/digestif-0.2-1.src.rock";
|
url = "mirror://luarocks/digestif-0.2-1.src.rock";
|
||||||
@ -328,7 +327,7 @@ fifo = buildLuarocksPackage {
|
|||||||
|
|
||||||
http = buildLuarocksPackage {
|
http = buildLuarocksPackage {
|
||||||
pname = "http";
|
pname = "http";
|
||||||
version = "0.3-0";
|
version = "0.4-0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/http-0.3-0.src.rock";
|
url = "https://luarocks.org/http-0.3-0.src.rock";
|
||||||
@ -1130,13 +1129,13 @@ luaevent = buildLuarocksPackage {
|
|||||||
|
|
||||||
luaexpat = buildLuarocksPackage {
|
luaexpat = buildLuarocksPackage {
|
||||||
pname = "luaexpat";
|
pname = "luaexpat";
|
||||||
version = "1.3.0-1";
|
version = "1.3.3-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/luaexpat-1.3.0-1.src.rock";
|
url = "https://luarocks.org/luaexpat-1.3.0-1.src.rock";
|
||||||
sha256 = "15jqz5q12i9zvjyagzwz2lrpzya64mih8v1hxwr0wl2gsjh86y5a";
|
sha256 = "15jqz5q12i9zvjyagzwz2lrpzya64mih8v1hxwr0wl2gsjh86y5a";
|
||||||
};
|
};
|
||||||
disabled = (luaOlder "5.1");
|
disabled = (luaOlder "5.0");
|
||||||
propagatedBuildInputs = [ lua ];
|
propagatedBuildInputs = [ lua ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
@ -1167,7 +1166,7 @@ luaffi = buildLuarocksPackage {
|
|||||||
|
|
||||||
luafilesystem = buildLuarocksPackage {
|
luafilesystem = buildLuarocksPackage {
|
||||||
pname = "luafilesystem";
|
pname = "luafilesystem";
|
||||||
version = "1.7.0-2";
|
version = "1.8.0-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/luafilesystem-1.7.0-2.src.rock";
|
url = "https://luarocks.org/luafilesystem-1.7.0-2.src.rock";
|
||||||
@ -1220,14 +1219,14 @@ luaossl = buildLuarocksPackage {
|
|||||||
|
|
||||||
luaposix = buildLuarocksPackage {
|
luaposix = buildLuarocksPackage {
|
||||||
pname = "luaposix";
|
pname = "luaposix";
|
||||||
version = "34.1.1-1";
|
version = "35.0-1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/luaposix-34.1.1-1.src.rock";
|
url = "https://luarocks.org/luaposix-34.1.1-1.src.rock";
|
||||||
sha256 = "1l9pkn3g0nzlbmmfj12rhfwvkqb06c21ydqxqgmnmd3w9z4ck53w";
|
sha256 = "1l9pkn3g0nzlbmmfj12rhfwvkqb06c21ydqxqgmnmd3w9z4ck53w";
|
||||||
};
|
};
|
||||||
disabled = (luaOlder "5.1") || (luaAtLeast "5.4");
|
disabled = (luaOlder "5.1") || (luaAtLeast "5.5");
|
||||||
propagatedBuildInputs = [ bit32 lua ];
|
propagatedBuildInputs = [ lua ];
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
homepage = "http://github.com/luaposix/luaposix/";
|
homepage = "http://github.com/luaposix/luaposix/";
|
||||||
@ -1408,7 +1407,6 @@ luazip = buildLuarocksPackage {
|
|||||||
license.fullName = "MIT";
|
license.fullName = "MIT";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
luuid = buildLuarocksPackage {
|
luuid = buildLuarocksPackage {
|
||||||
pname = "luuid";
|
pname = "luuid";
|
||||||
version = "20120509-2";
|
version = "20120509-2";
|
||||||
@ -1429,11 +1427,11 @@ luuid = buildLuarocksPackage {
|
|||||||
|
|
||||||
luv = buildLuarocksPackage {
|
luv = buildLuarocksPackage {
|
||||||
pname = "luv";
|
pname = "luv";
|
||||||
version = "1.30.0-0";
|
version = "1.41.1-0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://luarocks.org/luv-1.30.0-0.src.rock";
|
url = "https://luarocks.org/luv-1.41.1-0.src.rock";
|
||||||
sha256 = "1z5sdq9ld4sm5pws9qxpk9cadv9i7ycwad1zwsa57pj67gly11vi";
|
sha256 = "0l1v07nhrkzsddbcc4bak382b5flyw6x8g4i394ylbfl25zwcmai";
|
||||||
};
|
};
|
||||||
disabled = (luaOlder "5.1");
|
disabled = (luaOlder "5.1");
|
||||||
propagatedBuildInputs = [ lua ];
|
propagatedBuildInputs = [ lua ];
|
||||||
@ -1546,7 +1544,6 @@ mpack = buildLuarocksPackage {
|
|||||||
license.fullName = "MIT";
|
license.fullName = "MIT";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nvim-client = buildLuarocksPackage {
|
nvim-client = buildLuarocksPackage {
|
||||||
pname = "nvim-client";
|
pname = "nvim-client";
|
||||||
version = "0.2.2-1";
|
version = "0.2.2-1";
|
||||||
|
@ -11,9 +11,14 @@
|
|||||||
import inspect
|
import inspect
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import logging
|
||||||
|
import textwrap
|
||||||
from typing import List, Tuple
|
from typing import List, Tuple
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
log = logging.getLogger()
|
||||||
|
log.addHandler(logging.StreamHandler())
|
||||||
|
|
||||||
# Import plugin update library from maintainers/scripts/pluginupdate.py
|
# Import plugin update library from maintainers/scripts/pluginupdate.py
|
||||||
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))))
|
||||||
sys.path.insert(0, os.path.join(ROOT.parent.parent.parent, "maintainers", "scripts"))
|
sys.path.insert(0, os.path.join(ROOT.parent.parent.parent, "maintainers", "scripts"))
|
||||||
@ -40,50 +45,49 @@ HEADER = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def generate_nix(plugins: List[Tuple[str, str, pluginupdate.Plugin]], outfile: str):
|
class VimEditor(pluginupdate.Editor):
|
||||||
sorted_plugins = sorted(plugins, key=lambda v: v[2].name.lower())
|
def generate_nix(self, plugins: List[Tuple[str, str, pluginupdate.Plugin]], outfile: str):
|
||||||
|
sorted_plugins = sorted(plugins, key=lambda v: v[2].name.lower())
|
||||||
|
|
||||||
with open(outfile, "w+") as f:
|
with open(outfile, "w+") as f:
|
||||||
f.write(HEADER)
|
f.write(HEADER)
|
||||||
f.write(
|
f.write(textwrap.dedent("""
|
||||||
"""
|
{ lib, buildVimPluginFrom2Nix, fetchFromGitHub }:
|
||||||
{ lib, buildVimPluginFrom2Nix, fetchFromGitHub }:
|
|
||||||
|
|
||||||
final: prev:
|
final: prev:
|
||||||
{"""
|
{"""
|
||||||
)
|
))
|
||||||
for owner, repo, plugin in sorted_plugins:
|
for owner, repo, plugin in sorted_plugins:
|
||||||
if plugin.has_submodules:
|
if plugin.has_submodules:
|
||||||
submodule_attr = "\n fetchSubmodules = true;"
|
submodule_attr = "\n fetchSubmodules = true;"
|
||||||
else:
|
else:
|
||||||
submodule_attr = ""
|
submodule_attr = ""
|
||||||
|
|
||||||
|
f.write(textwrap.indent(textwrap.dedent(
|
||||||
|
f"""
|
||||||
|
{plugin.normalized_name} = buildVimPluginFrom2Nix {{
|
||||||
|
pname = "{plugin.normalized_name}";
|
||||||
|
version = "{plugin.version}";
|
||||||
|
src = fetchFromGitHub {{
|
||||||
|
owner = "{owner}";
|
||||||
|
repo = "{repo}";
|
||||||
|
rev = "{plugin.commit}";
|
||||||
|
sha256 = "{plugin.sha256}";{submodule_attr}
|
||||||
|
}};
|
||||||
|
meta.homepage = "https://github.com/{owner}/{repo}/";
|
||||||
|
}};
|
||||||
|
"""
|
||||||
|
), ' '))
|
||||||
|
f.write("\n}")
|
||||||
|
print(f"updated {outfile}")
|
||||||
|
|
||||||
f.write(
|
|
||||||
f"""
|
|
||||||
{plugin.normalized_name} = buildVimPluginFrom2Nix {{
|
|
||||||
pname = "{plugin.normalized_name}";
|
|
||||||
version = "{plugin.version}";
|
|
||||||
src = fetchFromGitHub {{
|
|
||||||
owner = "{owner}";
|
|
||||||
repo = "{repo}";
|
|
||||||
rev = "{plugin.commit}";
|
|
||||||
sha256 = "{plugin.sha256}";{submodule_attr}
|
|
||||||
}};
|
|
||||||
meta.homepage = "https://github.com/{owner}/{repo}/";
|
|
||||||
}};
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
f.write(
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
print(f"updated {outfile}")
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
editor = pluginupdate.Editor("vim", ROOT, GET_PLUGINS, generate_nix)
|
editor = VimEditor("vim", ROOT, GET_PLUGINS)
|
||||||
pluginupdate.update_plugins(editor)
|
parser = editor.create_parser()
|
||||||
|
args = parser.parse_args()
|
||||||
|
pluginupdate.update_plugins(editor, args)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user