diff options
Diffstat (limited to 'maintainers')
-rw-r--r-- | maintainers/maintainer-list.nix | 115 | ||||
-rw-r--r-- | maintainers/scripts/luarocks-packages.csv | 2 | ||||
-rw-r--r-- | maintainers/scripts/pluginupdate.py | 116 | ||||
-rwxr-xr-x | maintainers/scripts/remove-old-aliases.py | 202 | ||||
-rwxr-xr-x | maintainers/scripts/update-luarocks-packages | 13 | ||||
-rwxr-xr-x | maintainers/scripts/update.nix | 2 | ||||
-rw-r--r-- | maintainers/scripts/update.py | 4 | ||||
-rw-r--r-- | maintainers/team-list.nix | 1 |
8 files changed, 383 insertions, 72 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index b708d1a294f..7dea8e39cc5 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -2418,6 +2418,23 @@ githubId = 5510514; name = "Conrad Mearns"; }; + corbanr = { + email = "corban@raunco.co"; + github = "CorbanR"; + githubId = 1918683; + matrix = "@corbansolo:matrix.org"; + name = "Corban Raun"; + keys = [ + { + longkeyid = "rsa4096/0xA697A56F1F151189"; + fingerprint = "6607 0B24 8CE5 64ED 22CE 0950 A697 A56F 1F15 1189"; + } + { + longkeyid = "ed25519/0x230F4AC153F90F29"; + fingerprint = "D8CB 816A B678 A4E6 1EC7 5325 230F 4AC1 53F9 0F29"; + } + ]; + }; couchemar = { email = "couchemar@yandex.ru"; github = "couchemar"; @@ -2993,6 +3010,12 @@ githubId = 8404455; name = "Diego Lelis"; }; + DieracDelta = { + email = "justin@restivo.me"; + github = "DieracDelta"; + githubId = 13730968; + name = "Justin Restivo"; + }; diffumist = { email = "git@diffumist.me"; github = "diffumist"; @@ -6327,6 +6350,12 @@ githubId = 37185887; name = "Calvin Kim"; }; + keldu = { + email = "mail@keldu.de"; + github = "keldu"; + githubId = 15373888; + name = "Claudius Holeksa"; + }; kennyballou = { email = "kb@devnulllabs.io"; github = "kennyballou"; @@ -6524,7 +6553,7 @@ githubId = 18447310; }; kloenk = { - email = "me@kloenk.de"; + email = "me@kloenk.dev"; matrix = "@kloenk:petabyte.dev"; name = "Finn Behrens"; github = "kloenk"; @@ -7718,6 +7747,12 @@ githubId = 1187050; name = "Maximilian Huber"; }; + maximsmol = { + email = "maximsmol@gmail.com"; + github = "maximsmol"; + githubId = 1472826; + name = "Max Smolin"; + }; maxxk = { email = "maxim.krivchikov@gmail.com"; github = "maxxk"; @@ -7898,12 +7933,6 @@ github = "kira-bruneau"; githubId = 382041; }; - meutraa = { - email = "paul+nixpkgs@lost.host"; - name = "Paul Meredith"; - github = "meutraa"; - githubId = 68550871; - }; mephistophiles = { email = "mussitantesmortem@gmail.com"; name = "Maxim Zhukov"; @@ -7946,6 +7975,12 @@ githubId = 668926; name = "Maximilian Güntner"; }; + mh = { + email = "68288772+markus-heinrich@users.noreply.github.com"; + github = "markus-heinrich"; + githubId = 68288772; + name = "Markus Heinrich"; + }; mhaselsteiner = { email = "magdalena.haselsteiner@gmx.at"; github = "mhaselsteiner"; @@ -8515,6 +8550,17 @@ githubId = 25388474; name = "Matej Urbas"; }; + mvisonneau = { + name = "Maxime VISONNEAU"; + email = "maxime@visonneau.fr"; + matrix = "@maxime:visonneau.fr"; + github = "mvisonneau"; + githubId = 1761583; + keys = [{ + longkeyid = "rsa4096/0x150D6F0AE9198D24"; + fingerprint = "EC63 0CEA E8BC 5EE5 5C58 F2E3 150D 6F0A E919 8D24"; + }]; + }; mvnetbiz = { email = "mvnetbiz@gmail.com"; matrix = "@mvtva:matrix.org"; @@ -8540,6 +8586,12 @@ githubId = 9636071; name = "Myrl Hex"; }; + n0emis = { + email = "nixpkgs@n0emis.network"; + github = "n0emis"; + githubId = 22817873; + name = "Ember Keske"; + }; nadrieril = { email = "nadrieril@gmail.com"; github = "nadrieril"; @@ -8770,6 +8822,12 @@ githubId = 8214542; name = "Nicolò Balzarotti"; }; + nidabdella = { + name = "Mohamed Nidabdella"; + email = "nidabdella.mohamed@gmail.com"; + github = "nidabdella"; + githubId = 8083813; + }; NieDzejkob = { email = "kuba@kadziolka.net"; github = "NieDzejkob"; @@ -9075,6 +9133,12 @@ githubId = 158758; name = "Oliver Dunkl"; }; + ofek = { + email = "oss@ofek.dev"; + github = "ofek"; + githubId = 9677399; + name = "Ofek Lev"; + }; offline = { email = "jaka@x-truder.net"; github = "offlinehacker"; @@ -9253,6 +9317,12 @@ githubId = 15930073; name = "Moritz Scheuren"; }; + ozkutuk = { + email = "ozkutuk@protonmail.com"; + github = "ozkutuk"; + githubId = 5948762; + name = "Berk Özkütük"; + }; pablovsky = { email = "dealberapablo07@gmail.com"; github = "pablo1107"; @@ -10264,6 +10334,13 @@ githubId = 6047658; name = "Ryan Horiguchi"; }; + rhysmdnz = { + email = "rhys@memes.nz"; + matrix = "@rhys:memes.nz"; + github = "rhysmdnz"; + githubId = 2162021; + name = "Rhys Davies"; + }; ribose-jeffreylau = { name = "Jeffrey Lau"; email = "jeffrey.lau@ribose.com"; @@ -10940,6 +11017,12 @@ githubId = 19472270; name = "Sebastian"; }; + sebastianblunt = { + name = "Sebastian Blunt"; + email = "nix@sebastianblunt.com"; + github = "sebastianblunt"; + githubId = 47431204; + }; sebbadk = { email = "sebastian@sebba.dk"; github = "SEbbaDK"; @@ -11547,6 +11630,12 @@ githubId = 1699155; name = "Steve Elliott"; }; + stehessel = { + email = "stephan@stehessel.de"; + github = "stehessel"; + githubId = 55607356; + name = "Stephan Heßelmann"; + }; stelcodes = { email = "stel@stel.codes"; github = "stelcodes"; @@ -12792,9 +12881,9 @@ githubId = 5837359; name = "Adrian Pistol"; }; - vika_nezrimaya = { + vikanezrimaya = { email = "vika@fireburn.ru"; - github = "kisik21"; + github = "vikanezrimaya"; githubId = 7953163; name = "Vika Shleina"; keys = [{ @@ -12818,6 +12907,12 @@ githubId = 118959; name = "VinyMeuh"; }; + viraptor = { + email = "nix@viraptor.info"; + github = "viraptor"; + githubId = 188063; + name = "Stanisław Pitucha"; + }; viric = { email = "viric@viric.name"; github = "viric"; @@ -13164,7 +13259,7 @@ name = "Wayne Scott"; }; wucke13 = { - email = "info@wucke13.de"; + email = "wucke13@gmail.com"; github = "wucke13"; githubId = 20400405; name = "Wucke"; diff --git a/maintainers/scripts/luarocks-packages.csv b/maintainers/scripts/luarocks-packages.csv index 23303d22c47..d69546cdf07 100644 --- a/maintainers/scripts/luarocks-packages.csv +++ b/maintainers/scripts/luarocks-packages.csv @@ -68,7 +68,7 @@ luautf8,,,,,,pstn luazip,,,,,, lua-yajl,,,,,,pstn luuid,,,,,, -luv,,,,1.42.0-0,, +luv,,,,1.43.0-0,, lyaml,,,,,,lblasc markdown,,,,,, mediator_lua,,,,,, diff --git a/maintainers/scripts/pluginupdate.py b/maintainers/scripts/pluginupdate.py index de85b88da3f..017e3ac758a 100644 --- a/maintainers/scripts/pluginupdate.py +++ b/maintainers/scripts/pluginupdate.py @@ -1,4 +1,4 @@ -# Used by pkgs/misc/vim-plugins/update.py and pkgs/applications/editors/kakoune/plugins/update.py +# Used by pkgs/applications/editors/vim/plugins/update.py and pkgs/applications/editors/kakoune/plugins/update.py # format: # $ nix run nixpkgs.python3Packages.black -c black update.py @@ -73,9 +73,13 @@ def retry(ExceptionToCheck: Any, tries: int = 4, delay: float = 3, backoff: floa return deco_retry +@dataclass +class FetchConfig: + proc: int + github_token: str + -def make_request(url: str) -> urllib.request.Request: - token = os.getenv("GITHUB_API_TOKEN") +def make_request(url: str, token=None) -> urllib.request.Request: headers = {} if token is not None: headers["Authorization"] = f"token {token}" @@ -90,6 +94,7 @@ class Repo: self.branch = branch self.alias = alias self.redirect: Dict[str, str] = {} + self.token = "dummy_token" @property def name(self): @@ -132,10 +137,11 @@ class Repo: class RepoGitHub(Repo): def __init__( - self, owner: str, repo: str, branch: str, alias: Optional[str] + self, owner: str, repo: str, branch: str, alias: Optional[str] ) -> None: self.owner = owner self.repo = repo + self.token = None '''Url to the repo''' super().__init__(self.url(""), branch, alias) log.debug("Instantiating github repo %s/%s", self.owner, self.repo) @@ -150,7 +156,7 @@ class RepoGitHub(Repo): @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) def has_submodules(self) -> bool: try: - req = make_request(self.url(f"blob/{self.branch}/.gitmodules")) + req = make_request(self.url(f"blob/{self.branch}/.gitmodules"), self.token) urllib.request.urlopen(req, timeout=10).close() except urllib.error.HTTPError as e: if e.code == 404: @@ -162,7 +168,7 @@ class RepoGitHub(Repo): @retry(urllib.error.URLError, tries=4, delay=3, backoff=2) def latest_commit(self) -> Tuple[str, datetime]: commit_url = self.url(f"commits/{self.branch}.atom") - commit_req = make_request(commit_url) + commit_req = make_request(commit_url, self.token) with urllib.request.urlopen(commit_req, timeout=10) as req: self._check_for_redirect(commit_url, req) xml = req.read() @@ -291,15 +297,41 @@ class Editor: """To fill the cache""" return get_current_plugins(self) - def load_plugin_spec(self, plugin_file) -> List[PluginDesc]: - return load_plugin_spec(plugin_file) + def load_plugin_spec(self, config: FetchConfig, plugin_file) -> List[PluginDesc]: + plugins = [] + with open(plugin_file) as f: + for line in f: + if line.startswith("#"): + continue + plugin = parse_plugin_line(config, line) + plugins.append(plugin) + return plugins def generate_nix(self, plugins, outfile: str): '''Returns nothing for now, writes directly to outfile''' raise NotImplementedError() - def get_update(self, input_file: str, outfile: str, proc: int): - return get_update(input_file, outfile, proc, editor=self) + def get_update(self, input_file: str, outfile: str, config: FetchConfig): + cache: Cache = Cache(self.get_current_plugins(), self.cache_file) + _prefetch = functools.partial(prefetch, cache=cache) + + def update() -> dict: + plugin_names = self.load_plugin_spec(config, input_file) + + try: + pool = Pool(processes=config.proc) + results = pool.map(_prefetch, plugin_names) + finally: + cache.store() + + plugins, redirects = check_results(results) + + self.generate_nix(plugins, outfile) + + return redirects + + return update + @property def attr_path(self): @@ -345,7 +377,15 @@ class Editor: dest="proc", type=int, default=30, - help="Number of concurrent processes to spawn. Export GITHUB_API_TOKEN allows higher values.", + help="Number of concurrent processes to spawn. Setting --github-token allows higher values.", + ) + parser.add_argument( + "--github-token", + "-t", + type=str, + default=os.getenv("GITHUB_API_TOKEN"), + help="""Allows to set --proc to higher values. + Uses GITHUB_API_TOKEN environment variables as the default value.""", ) parser.add_argument( "--no-commit", "-n", action="store_true", default=False, @@ -414,8 +454,8 @@ def prefetch_plugin( ) -def fetch_plugin_from_pluginline(plugin_line: str) -> Plugin: - plugin, _ = prefetch_plugin(parse_plugin_line(plugin_line)) +def fetch_plugin_from_pluginline(config: FetchConfig, plugin_line: str) -> Plugin: + plugin, _ = prefetch_plugin(parse_plugin_line(config, plugin_line)) return plugin @@ -465,7 +505,7 @@ def make_repo(uri, branch, alias) -> Repo: repo = Repo(uri.strip(), branch, alias) return repo -def parse_plugin_line(line: str) -> PluginDesc: +def parse_plugin_line(config: FetchConfig, line: str) -> PluginDesc: branch = "HEAD" alias = None uri = line @@ -476,21 +516,11 @@ def parse_plugin_line(line: str) -> PluginDesc: uri, branch = uri.split("@") repo = make_repo(uri.strip(), branch.strip(), alias) + repo.token = config.github_token return PluginDesc(repo, branch.strip(), alias) -def load_plugin_spec(plugin_file: str) -> List[PluginDesc]: - plugins = [] - with open(plugin_file) as f: - for line in f: - if line.startswith("#"): - continue - plugin = parse_plugin_line(line) - plugins.append(plugin) - return plugins - - def get_cache_path(cache_file_name: str) -> Optional[Path]: xdg_cache = os.environ.get("XDG_CACHE_HOME", None) if xdg_cache is None: @@ -556,6 +586,7 @@ def prefetch( def rewrite_input( + config: FetchConfig, input_file: Path, deprecated: Path, redirects: Dict[str, str] = None, @@ -573,8 +604,8 @@ def rewrite_input( with open(deprecated, "r") as f: deprecations = json.load(f) for old, new in redirects.items(): - old_plugin = fetch_plugin_from_pluginline(old) - new_plugin = fetch_plugin_from_pluginline(new) + old_plugin = fetch_plugin_from_pluginline(config, old) + new_plugin = fetch_plugin_from_pluginline(config, new) if old_plugin.normalized_name != new_plugin.normalized_name: deprecations[old_plugin.normalized_name] = { "new": new_plugin.normalized_name, @@ -600,40 +631,21 @@ def commit(repo: git.Repo, message: str, files: List[Path]) -> None: print("no changes in working tree to commit") -def get_update(input_file: str, outfile: str, proc: int, editor: Editor): - cache: Cache = Cache(editor.get_current_plugins(), editor.cache_file) - _prefetch = functools.partial(prefetch, cache=cache) - - def update() -> dict: - plugin_names = editor.load_plugin_spec(input_file) - - try: - pool = Pool(processes=proc) - results = pool.map(_prefetch, plugin_names) - finally: - cache.store() - - plugins, redirects = check_results(results) - - editor.generate_nix(plugins, outfile) - - return redirects - - return update - def update_plugins(editor: Editor, args): """The main entry function of this module. All input arguments are grouped in the `Editor`.""" log.setLevel(LOG_LEVELS[args.debug]) log.info("Start updating plugins") - update = editor.get_update(args.input_file, args.outfile, args.proc) + fetch_config = FetchConfig(args.proc, args.github_token) + update = editor.get_update(args.input_file, args.outfile, fetch_config) redirects = update() - editor.rewrite_input(args.input_file, editor.deprecated, redirects) + editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, redirects) autocommit = not args.no_commit + nixpkgs_repo = None if autocommit: nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True) commit(nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile]) @@ -648,9 +660,9 @@ def update_plugins(editor: Editor, args): ) for plugin_line in args.add_plugins: - editor.rewrite_input(args.input_file, editor.deprecated, append=(plugin_line + "\n",)) + editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, append=(plugin_line + "\n",)) update() - plugin = fetch_plugin_from_pluginline(plugin_line) + plugin = fetch_plugin_from_pluginline(fetch_config, plugin_line) if autocommit: commit( nixpkgs_repo, diff --git a/maintainers/scripts/remove-old-aliases.py b/maintainers/scripts/remove-old-aliases.py new file mode 100755 index 00000000000..5d9398feaa2 --- /dev/null +++ b/maintainers/scripts/remove-old-aliases.py @@ -0,0 +1,202 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ ])" nix +""" +A program to remove old aliases or convert old aliases to throws +Example usage: +./maintainers/scripts/remove-old-aliases.py --year 2018 --file ./pkgs/top-level/aliases.nix + +Check this file with mypy after every change! +$ mypy --strict maintainers/scripts/remove-old-aliases.py +""" +import argparse +import shutil +import subprocess +from datetime import date as datetimedate +from datetime import datetime +from pathlib import Path + + +def process_args() -> argparse.Namespace: + """process args""" + arg_parser = argparse.ArgumentParser() + arg_parser.add_argument( + "--year", required=True, type=int, help="operate on aliases older than $year" + ) + arg_parser.add_argument( + "--month", + type=int, + default=1, + help="operate on aliases older than $year-$month", + ) + arg_parser.add_argument("--file", required=True, type=Path, help="alias file") + arg_parser.add_argument( + "--dry-run", action="store_true", help="don't modify files, only print results" + ) + return arg_parser.parse_args() + + +def get_date_lists( + txt: list[str], cutoffdate: datetimedate +) -> tuple[list[str], list[str], list[str]]: + """get a list of lines in which the date is older than $cutoffdate""" + date_older_list: list[str] = [] + date_older_throw_list: list[str] = [] + date_sep_line_list: list[str] = [] + + for lineno, line in enumerate(txt, start=1): + line = line.rstrip() + my_date = None + for string in line.split(): + string = string.strip(":") + try: + # strip ':' incase there is a string like 2019-11-01: + my_date = datetime.strptime(string, "%Y-%m-%d").date() + except ValueError: + try: + my_date = datetime.strptime(string, "%Y-%m").date() + except ValueError: + continue + + if my_date is None or my_date > cutoffdate: + continue + + if "=" not in line: + date_sep_line_list.append(f"{lineno} {line}") + # 'if' lines could be complicated + elif "if " in line and "if =" not in line: + print(f"RESOLVE MANUALLY {line}") + elif "throw" in line: + date_older_throw_list.append(line) + else: + date_older_list.append(line) + + return ( + date_older_list, + date_sep_line_list, + date_older_throw_list, + ) + + +def convert_to_throw(date_older_list: list[str]) -> list[tuple[str, str]]: + """convert a list of lines to throws""" + converted_list = [] + for line in date_older_list.copy(): + indent: str = " " * (len(line) - len(line.lstrip())) + before_equal = "" + after_equal = "" + try: + before_equal, after_equal = (x.strip() for x in line.split("=", maxsplit=2)) + except ValueError as err: + print(err, line, "\n") + date_older_list.remove(line) + continue + + alias = before_equal.strip() + after_equal_list = [x.strip(";:") for x in after_equal.split()] + + converted = ( + f"{indent}{alias} = throw \"'{alias}' has been renamed to/replaced by" + f" '{after_equal_list.pop(0)}'\";" + f' # Converted to throw {datetime.today().strftime("%Y-%m-%d")}' + ) + converted_list.append((line, converted)) + + return converted_list + + +def generate_text_to_write( + txt: list[str], + date_older_list: list[str], + converted_to_throw: list[tuple[str, str]], + date_older_throw_list: list[str], +) -> list[str]: + """generate a list of text to be written to the aliasfile""" + text_to_write: list[str] = [] + for line in txt: + text_to_append: str = "" + if converted_to_throw: + for tupl in converted_to_throw: + if line == tupl[0]: + text_to_append = f"{tupl[1]}\n" + if line not in date_older_list and line not in date_older_throw_list: + text_to_append = f"{line}\n" + if text_to_append: + text_to_write.append(text_to_append) + + return text_to_write + + +def write_file( + aliasfile: Path, + text_to_write: list[str], +) -> None: + """write file""" + temp_aliasfile = Path(f"{aliasfile}.raliases") + with open(temp_aliasfile, "w", encoding="utf-8") as far: + for line in text_to_write: + far.write(line) + print("\nChecking the syntax of the new aliasfile") + try: + subprocess.run( + ["nix-instantiate", "--eval", temp_aliasfile], + check=True, + stdout=subprocess.DEVNULL, + ) + except subprocess.CalledProcessError: + print( + "\nSyntax check failed,", + "there may have been a line which only has\n" + 'aliasname = "reason why";\n' + "when it should have been\n" + 'aliasname = throw "reason why";', + ) + temp_aliasfile.unlink() + return + shutil.move(f"{aliasfile}.raliases", aliasfile) + print(f"{aliasfile} modified! please verify with 'git diff'.") + + +def main() -> None: + """main""" + args = process_args() + + aliasfile = Path(args.file).absolute() + cutoffdate = (datetime.strptime(f"{args.year}-{args.month}-01", "%Y-%m-%d")).date() + + txt: list[str] = (aliasfile.read_text(encoding="utf-8")).splitlines() + + date_older_list: list[str] = [] + date_sep_line_list: list[str] = [] + date_older_throw_list: list[str] = [] + + date_older_list, date_sep_line_list, date_older_throw_list = get_date_lists( + txt, cutoffdate + ) + + converted_to_throw: list[tuple[str, str]] = [] + converted_to_throw = convert_to_throw(date_older_list) + + if date_older_list: + print(" Will be converted to throws. ".center(100, "-")) + for l_n in date_older_list: + print(l_n) + + if date_older_throw_list: + print(" Will be removed. ".center(100, "-")) + for l_n in date_older_throw_list: + print(l_n) + + if date_sep_line_list: + print(" On separate line, resolve manually. ".center(100, "-")) + for l_n in date_sep_line_list: + print(l_n) + + if not args.dry_run: + text_to_write = generate_text_to_write( + txt, date_older_list, converted_to_throw, date_older_throw_list + ) + write_file(aliasfile, text_to_write) + + +if __name__ == "__main__": + main() diff --git a/maintainers/scripts/update-luarocks-packages b/maintainers/scripts/update-luarocks-packages index c559d5699df..73a233c5f10 100755 --- a/maintainers/scripts/update-luarocks-packages +++ b/maintainers/scripts/update-luarocks-packages @@ -25,8 +25,8 @@ from pathlib import Path log = logging.getLogger() log.addHandler(logging.StreamHandler()) -ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent -from pluginupdate import Editor, update_plugins, PluginDesc, CleanEnvironment, LOG_LEVELS, Cache +ROOT = Path(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))).parent.parent # type: ignore +from pluginupdate import Editor, update_plugins, FetchConfig, CleanEnvironment PKG_LIST="maintainers/scripts/luarocks-packages.csv" TMP_FILE="$(mktemp)" @@ -118,7 +118,7 @@ class LuaEditor(Editor): def attr_path(self): return "luaPackages" - def get_update(self, input_file: str, outfile: str, proc: int): + def get_update(self, input_file: str, outfile: str, config: FetchConfig): _prefetch = generate_pkg_nix def update() -> dict: @@ -126,14 +126,14 @@ class LuaEditor(Editor): sorted_plugin_specs = sorted(plugin_specs, key=lambda v: v.name.lower()) try: - pool = Pool(processes=proc) + pool = Pool(processes=config.proc) results = pool.map(_prefetch, sorted_plugin_specs) finally: pass self.generate_nix(results, outfile) - redirects = [] + redirects = {} return redirects return update @@ -181,11 +181,9 @@ def generate_pkg_nix(plug: LuaPlugin): cmd.append(plug.version) - # if plug.server != "src" and plug.server: cmd.append(f"--only-server={plug.server}") - if plug.luaversion: with CleanEnvironment(): local_pkgs = str(ROOT.resolve()) @@ -209,7 +207,6 @@ def main(): parser = editor.create_parser() args = parser.parse_args() - log.setLevel(LOG_LEVELS[args.debug]) update_plugins(editor, args) diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix index d881d68301b..1a2f06c73a2 100755 --- a/maintainers/scripts/update.nix +++ b/maintainers/scripts/update.nix @@ -147,7 +147,7 @@ let to run update script for specific package, or - % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: builtins.isList pkg.updateScript && builtins.length pkg.updateScript >= 1 && (let script = builtins.head pkg.updateScript; in builtins.isAttrs script && script.name == "gnome-update-script"))' + % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: pkg.updateScript.name or null == "gnome-update-script")' to run update script for all packages matching given predicate, or diff --git a/maintainers/scripts/update.py b/maintainers/scripts/update.py index 06b12a0ee04..07e0b5c6830 100644 --- a/maintainers/scripts/update.py +++ b/maintainers/scripts/update.py @@ -88,6 +88,10 @@ async def commit_changes(name: str, merge_lock: asyncio.Lock, worktree: str, bra async with merge_lock: await check_subprocess('git', 'add', *change['files'], cwd=worktree) commit_message = '{attrPath}: {oldVersion} → {newVersion}'.format(**change) + if 'commitMessage' in change: + commit_message = change['commitMessage'] + elif 'commitBody' in change: + commit_message = commit_message + '\n\n' + change['commitBody'] await check_subprocess('git', 'commit', '--quiet', '-m', commit_message, cwd=worktree) await check_subprocess('git', 'cherry-pick', branch) diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index 1b4b2f8b6f6..bf4fcc6a4a7 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -50,6 +50,7 @@ with lib.maintainers; { DianaOlympos gleber happysalada + minijackson yurrriq ]; scope = "Maintain BEAM-related packages and modules."; |