about summary refs log tree commit diff
diff options
context:
space:
mode:
authorfigsoda <figsoda@pm.me>2022-11-04 13:56:57 -0400
committerfigsoda <figsoda@pm.me>2022-11-04 15:52:00 -0400
commitc95706ac44ffa749779bace03b115eab89c66cae (patch)
tree7e1beaa281e2bf4897ec5a48a496f574a33238f0
parentf0adf4fcae2aecdd6ade53cb5d4b94d3b7446efd (diff)
vimPlugins: also update nvim-treesitter grammars in the update script
-rw-r--r--maintainers/scripts/pluginupdate.py10
-rwxr-xr-xpkgs/applications/editors/vim/plugins/update.py20
2 files changed, 25 insertions, 5 deletions
diff --git a/maintainers/scripts/pluginupdate.py b/maintainers/scripts/pluginupdate.py
index 55eda3c7d45d7..46788edd236e9 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 1214e36372a62..7e5c7380597c7 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 <localpkgs> { }).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()