diff --git a/maintainers/scripts/pluginupdate.py b/maintainers/scripts/pluginupdate.py index 55eda3c7d45d..46788edd236e 100644 --- a/maintainers/scripts/pluginupdate.py +++ b/maintainers/scripts/pluginupdate.py @@ -342,6 +342,7 @@ class Editor: self.default_out = default_out or root.joinpath("generated.nix") self.deprecated = deprecated or root.joinpath("deprecated.json") self.cache_file = cache_file or f"{name}-plugin-cache.json" + self.nixpkgs_repo = None def get_current_plugins(self) -> List[Plugin]: """To fill the cache""" @@ -670,16 +671,15 @@ def update_plugins(editor: Editor, args): 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]) + editor.nixpkgs_repo = git.Repo(editor.root, search_parent_directories=True) + commit(editor.nixpkgs_repo, f"{editor.attr_path}: update", [args.outfile]) if redirects: update() if autocommit: commit( - nixpkgs_repo, + editor.nixpkgs_repo, f"{editor.attr_path}: resolve github repository redirects", [args.outfile, args.input_file, editor.deprecated], ) @@ -692,7 +692,7 @@ def update_plugins(editor: Editor, args): plugin, _ = prefetch_plugin(pdesc, ) if autocommit: commit( - nixpkgs_repo, + editor.nixpkgs_repo, "{drv_name}: init at {version}".format( drv_name=editor.get_drv_name(plugin.normalized_name), version=plugin.version diff --git a/pkgs/applications/editors/vim/plugins/update.py b/pkgs/applications/editors/vim/plugins/update.py index 1214e36372a6..7e5c7380597c 100755 --- a/pkgs/applications/editors/vim/plugins/update.py +++ b/pkgs/applications/editors/vim/plugins/update.py @@ -21,10 +21,13 @@ import inspect import os import sys import logging +import subprocess import textwrap from typing import List, Tuple from pathlib import Path +import git + log = logging.getLogger() sh = logging.StreamHandler() @@ -76,8 +79,11 @@ def isNeovimPlugin(plug: pluginupdate.Plugin) -> bool: class VimEditor(pluginupdate.Editor): + nvim_treesitter_updated = False + def generate_nix(self, plugins: List[Tuple[PluginDesc, pluginupdate.Plugin]], outfile: str): sorted_plugins = sorted(plugins, key=lambda v: v[0].name.lower()) + nvim_treesitter_rev = pluginupdate.run_nix_expr("(import { }).vimPlugins.nvim-treesitter.src.rev") with open(outfile, "w+") as f: f.write(HEADER) @@ -91,6 +97,8 @@ class VimEditor(pluginupdate.Editor): for pdesc, plugin in sorted_plugins: content = self.plugin2nix(pdesc, plugin) f.write(content) + if plugin.name == "nvim-treesitter" and plugin.commit != nvim_treesitter_rev: + self.nvim_treesitter_updated = True f.write("\n}\n") print(f"updated {outfile}") @@ -123,6 +131,18 @@ def main(): args = parser.parse_args() pluginupdate.update_plugins(editor, args) + if editor.nvim_treesitter_updated: + print("updating nvim-treesitter grammars") + nvim_treesitter_dir = ROOT.joinpath("nvim-treesitter") + subprocess.check_call([nvim_treesitter_dir.joinpath("update.py")]) + + if editor.nixpkgs_repo: + msg = "vimPlugins.nvim-treesitter: update grammars" + print(f"committing to nixpkgs: {msg}") + index = editor.nixpkgs_repo.index + index.add([str(nvim_treesitter_dir.joinpath("generated.nix"))]) + index.commit(msg) + if __name__ == "__main__": main()