aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/queries/nix/injections.scm104
-rw-r--r--tests/query/injections/nix/test-nix-injections.nix28
2 files changed, 101 insertions, 31 deletions
diff --git a/runtime/queries/nix/injections.scm b/runtime/queries/nix/injections.scm
index 26ba6e2da..7d0ffe8e5 100644
--- a/runtime/queries/nix/injections.scm
+++ b/runtime/queries/nix/injections.scm
@@ -34,7 +34,7 @@
((string_fragment) @injection.content
(#set! injection.language "regex")))
]
- (#match? @_func "(^|\\.)match$")
+ (#lua-match? @_func "^%a*%.*match$")
(#set! injection.combined))
(binding
@@ -48,7 +48,46 @@
((string_fragment) @injection.content
(#set! injection.language "bash")))
]
- (#match? @_path "(^\\w+(Phase|Hook|Check)|(pre|post)[A-Z]\\w+|script)$"))
+ (#lua-match? @_path "^%a+Phase$"))
+
+(binding
+ attrpath: (attrpath
+ (identifier) @_path)
+ expression: [
+ (string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ (indented_string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ ]
+ (#lua-match? @_path "^pre%a+$"))
+
+(binding
+ attrpath: (attrpath
+ (identifier) @_path)
+ expression: [
+ (string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ (indented_string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ ]
+ (#lua-match? @_path "^post%a+$"))
+
+(binding
+ attrpath: (attrpath
+ (identifier) @_path)
+ expression: [
+ (string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ (indented_string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ ]
+ (#lua-match? @_path "^script$"))
(apply_expression
function: (_) @_func
@@ -67,8 +106,8 @@
((string_fragment) @injection.content
(#set! injection.language "bash")))
])))
- (#match? @_func "(^|\\.)writeShellApplication$")
- (#match? @_path "^text$")
+ (#lua-match? @_func "^%a*%.*writeShellApplication$")
+ (#lua-match? @_path "^text$")
(#set! injection.combined))
(apply_expression
@@ -83,7 +122,7 @@
((string_fragment) @injection.content
(#set! injection.language "bash")))
]
- (#match? @_func "(^|\\.)runCommand((No)?CC)?(Local)?$")
+ (#lua-match? @_func "^%a*%.*runCommand%a*$")
(#set! injection.combined))
((apply_expression
@@ -97,7 +136,35 @@
((string_fragment) @injection.content
(#set! injection.language "bash")))
])
- (#match? @_func "(^|\\.)write(Bash|Dash|ShellScript)(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writeBash%a*$")
+ (#set! injection.combined))
+
+((apply_expression
+ function: (apply_expression
+ function: (_) @_func)
+ argument: [
+ (string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ (indented_string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ ])
+ (#lua-match? @_func "^%a*%.*writeDash%a*$")
+ (#set! injection.combined))
+
+((apply_expression
+ function: (apply_expression
+ function: (_) @_func)
+ argument: [
+ (string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ (indented_string_expression
+ ((string_fragment) @injection.content
+ (#set! injection.language "bash")))
+ ])
+ (#lua-match? @_func "^%a*%.*writeShellScript%a*$")
(#set! injection.combined))
((apply_expression
@@ -111,7 +178,7 @@
((string_fragment) @injection.content
(#set! injection.language "fish")))
])
- (#match? @_func "(^|\\.)writeFish(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writeFish%a*$")
(#set! injection.combined))
((apply_expression
@@ -126,13 +193,12 @@
((string_fragment) @injection.content
(#set! injection.language "haskell")))
])
- (#match? @_func "(^|\\.)writeHaskell(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writeHaskell%a*$")
(#set! injection.combined))
((apply_expression
function: (apply_expression
- function: (apply_expression
- function: (_) @_func))
+ function: (_) @_func)
argument: [
(string_expression
((string_fragment) @injection.content
@@ -141,13 +207,12 @@
((string_fragment) @injection.content
(#set! injection.language "javascript")))
])
- (#match? @_func "(^|\\.)writeJS(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writeJS%a*$")
(#set! injection.combined))
((apply_expression
function: (apply_expression
- function: (apply_expression
- function: (_) @_func))
+ function: (_) @_func)
argument: [
(string_expression
((string_fragment) @injection.content
@@ -156,13 +221,12 @@
((string_fragment) @injection.content
(#set! injection.language "perl")))
])
- (#match? @_func "(^|\\.)writePerl(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writePerl%a*$")
(#set! injection.combined))
((apply_expression
function: (apply_expression
- function: (apply_expression
- function: (_) @_func))
+ function: (_) @_func)
argument: [
(string_expression
((string_fragment) @injection.content
@@ -171,13 +235,11 @@
((string_fragment) @injection.content
(#set! injection.language "python")))
])
- (#match? @_func "(^|\\.)write(PyPy|Python)[23](Bin)?$")
+ (#lua-match? @_func "^%a*%.*writePy%a*%d*%a*$")
(#set! injection.combined))
((apply_expression
- function: (apply_expression
- function: (apply_expression
- function: (_) @_func))
+ function: (_) @_func
argument: [
(string_expression
((string_fragment) @injection.content
@@ -186,7 +248,7 @@
((string_fragment) @injection.content
(#set! injection.language "rust")))
])
- (#match? @_func "(^|\\.)writeRust(Bin)?$")
+ (#lua-match? @_func "^%a*%.*writeRust%a*$")
(#set! injection.combined))
; (nixosTest) testScript
diff --git a/tests/query/injections/nix/test-nix-injections.nix b/tests/query/injections/nix/test-nix-injections.nix
index 477ca4abb..b358326ab 100644
--- a/tests/query/injections/nix/test-nix-injections.nix
+++ b/tests/query/injections/nix/test-nix-injections.nix
@@ -1,8 +1,11 @@
-{ pkgs, stdenv }:
# NOTE: This file is for testing queries. If evaluated with nix, this will probably error.
-{
+{ pkgs, stdenv }: let
+ match = builtins.match;
+in {
regex = builtins.match "^.*[{](.+)[}].*$" "blahblah {something} blahblah" [ "something" ];
+ regex2 = match "^.*[{](.+)[}].*$" "blahblah {something} blahblah" [ "something" ];
+
drv1 = stdenv.mkDerivation {
buildPhase = "mkdir $out";
installPhase = ''
@@ -23,38 +26,43 @@
echo "bar" > $out/foo.txt
'';
- drv4 = pkgs.writeShellScriptBin "hello" ''
+ drv4 = pkgs.runCommandNoCC "foo-bar" {} ''
+ mkir $out
+ echo "bar" > $out/foo.txt
+ '';
+
+ drv5 = pkgs.writeShellScriptBin "hello" ''
echo "Hello world!"
'';
- drv5 = pkgs.writeFishBin "hello" ''
+ drv6 = pkgs.writeFishBin "hello" ''
echo "Hello world!"
'';
- drv6 = pkgs.writeHaskellBin "hello" ''
+ drv7 = pkgs.writeHaskellBin "hello" ''
main :: IO ()
main = putStrLn "Hello world!"
'';
- drv7 = pkgs.writeJSBin "hello" ''
+ drv8 = pkgs.writeJSBin "hello" ''
console.log('Hello world!');
'';
- drv8 = pkgs.writePerlBin "hello" ''
+ drv9 = pkgs.writePerlBin "hello" ''
print("Hello world!\n");
'';
- drv9 = pkgs.writePythonBin "hello" ''
+ drv10 = pkgs.writePythonBin "hello" ''
print("Hello world!");
'';
- drv10 = pkgs.writeRustBin "hello" ''
+ drv11 = pkgs.writeRustBin "hello" ''
fn main() {
println!("Hello world!");
}
'';
- drv11 = {
+ drv12 = {
nodes = null;
testScript = ''
print("Hello world!");