diff --git a/syntaxes/just.tmLanguage.json b/syntaxes/just.tmLanguage.json index c02f339..7fde244 100644 --- a/syntaxes/just.tmLanguage.json +++ b/syntaxes/just.tmLanguage.json @@ -60,6 +60,11 @@ "comment": "Integer", "name": "constant.language.integer.just", "match": "\\b\\d+\\b" + }, + { + "comment": "Hex", + "name": "constant.language.hex.just", + "match": "\\b(HEX|HEXLOWER|HEXUPPER)\\b" } ] }, diff --git a/syntaxes/just.tmLanguage.yml b/syntaxes/just.tmLanguage.yml index a03b5d3..45dee57 100644 --- a/syntaxes/just.tmLanguage.yml +++ b/syntaxes/just.tmLanguage.yml @@ -30,6 +30,9 @@ repository: - comment: Integer name: constant.language.integer.just match: "\\b\\d+\\b" + - comment: Hex + name: constant.language.hex.just + match: "\\b(HEX|HEXLOWER|HEXUPPER)\\b" keywords: patterns: diff --git a/tests/command_evaluation.just b/tests/embedded/command_evaluation.just similarity index 100% rename from tests/command_evaluation.just rename to tests/embedded/command_evaluation.just diff --git a/tests/command_evaluation.just.snap b/tests/embedded/command_evaluation.just.snap similarity index 100% rename from tests/command_evaluation.just.snap rename to tests/embedded/command_evaluation.just.snap diff --git a/tests/embedded.just b/tests/embedded/embedded.just similarity index 86% rename from tests/embedded.just rename to tests/embedded/embedded.just index 0ee536c..9cfe052 100644 --- a/tests/embedded.just +++ b/tests/embedded/embedded.just @@ -1,5 +1,7 @@ # Embedded languages +# TODO: how to test embedded grammars in snapshots? + python: #!/usr/bin/env python3 print('Hello from python!') diff --git a/tests/embedded.just.snap b/tests/embedded/embedded.just.snap similarity index 96% rename from tests/embedded.just.snap rename to tests/embedded/embedded.just.snap index 73bd3c4..99ca781 100644 --- a/tests/embedded.just.snap +++ b/tests/embedded/embedded.just.snap @@ -1,6 +1,9 @@ ># Embedded languages #^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just > +># TODO: how to test embedded grammars in snapshots? +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> >python: #^^^^^^ source.just entity.name.function.just # ^ source.just keyword.operator.recipe.end.just diff --git a/tests/escaping.just b/tests/escaping.just deleted file mode 100644 index a1bf042..0000000 --- a/tests/escaping.just +++ /dev/null @@ -1,18 +0,0 @@ -# Escaped blocks - -publish: - rm -f {{tarball}} - mkdir {{tardir}} - cp README.md *.c {{tardir}} - tar zcvf {{tarball}} {{tardir}} - scp {{tarball}} me@server.com:release/ - rm -rf {{tarball}} {{tardir}} - -braces: - echo 'I {{{{LOVE}} curly braces!' - -braces: - echo '{{'I {{LOVE}} curly braces!'}}' - -braces: - echo 'I {{ "{{" }}LOVE}} curly braces!' \ No newline at end of file diff --git a/tests/escaping.just.snap b/tests/escaping.just.snap deleted file mode 100644 index d8777d2..0000000 --- a/tests/escaping.just.snap +++ /dev/null @@ -1,85 +0,0 @@ -># Escaped blocks -#^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just -> ->publish: -#^^^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> rm -f {{tarball}} -#^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> mkdir {{tardir}} -#^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> cp README.md *.c {{tardir}} -#^^^^^^^^^^^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> tar zcvf {{tarball}} {{tardir}} -#^^^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> scp {{tarball}} me@server.com:release/ -#^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^^^^^^^^^^^^^^^^ source.just -# ^ source.just keyword.operator.path-join.just -> rm -rf {{tarball}} {{tardir}} -#^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> ->braces: -#^^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'I {{{{LOVE}} curly braces!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->braces: -#^^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo '{{'I {{LOVE}} curly braces!'}}' -#^^^^^^^ source.just -# ^^^^ source.just string.quoted.double.indented.just -# ^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->braces: -#^^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'I {{ "{{" }}LOVE}} curly braces!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^^^ source.just string.quoted.single.just string.interpolated.escaping.just string.quoted.double.indented.just -# ^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just \ No newline at end of file diff --git a/tests/general.just b/tests/general.just deleted file mode 100644 index cc366a3..0000000 --- a/tests/general.just +++ /dev/null @@ -1,3 +0,0 @@ -# Comments - -# I am a comment diff --git a/tests/general.just.snap b/tests/general.just.snap deleted file mode 100644 index 897f3f0..0000000 --- a/tests/general.just.snap +++ /dev/null @@ -1,6 +0,0 @@ -># Comments -#^^^^^^^^^^ source.just comment.line.number-sign.just -> -># I am a comment -#^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just -> \ No newline at end of file diff --git a/tests/builtins.just b/tests/general/builtins.just similarity index 91% rename from tests/builtins.just rename to tests/general/builtins.just index 510faa5..7676fd9 100644 --- a/tests/builtins.just +++ b/tests/general/builtins.just @@ -1,5 +1,20 @@ +# Builin keywords + +alias +set +export +import +mod + +# Control keywords + +if +else + # Builtin functions +# TODO: should parentheses be optional or required? + # System info arch() diff --git a/tests/builtins.just.snap b/tests/general/builtins.just.snap similarity index 94% rename from tests/builtins.just.snap rename to tests/general/builtins.just.snap index ebc327f..87cb624 100644 --- a/tests/builtins.just.snap +++ b/tests/general/builtins.just.snap @@ -1,6 +1,31 @@ +># Builin keywords +#^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>alias +#^^^^^ source.just keyword.other.reserved.just +>set +#^^^ source.just keyword.other.reserved.just +>export +#^^^^^^ source.just keyword.other.reserved.just +>import +#^^^^^^ source.just keyword.other.reserved.just +>mod +#^^^ source.just keyword.other.reserved.just +> +># Control keywords +#^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>if +#^^ source.just keyword.control.conditional.just +>else +#^^^^ source.just keyword.control.conditional.just +> ># Builtin functions #^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just > +># TODO: should parentheses be optional or required? +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> ># System info #^^^^^^^^^^^^^ source.just comment.line.number-sign.just > diff --git a/tests/general/constants.just b/tests/general/constants.just new file mode 100644 index 0000000..1273a82 --- /dev/null +++ b/tests/general/constants.just @@ -0,0 +1,8 @@ +# Constants + +true +false + +HEX +HEXLOWER +HEXUPPER diff --git a/tests/general/constants.just.snap b/tests/general/constants.just.snap new file mode 100644 index 0000000..41af3df --- /dev/null +++ b/tests/general/constants.just.snap @@ -0,0 +1,15 @@ +># Constants +#^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>true +#^^^^ source.just constant.language.boolean.just +>false +#^^^^^ source.just constant.language.boolean.just +> +>HEX +#^^^ source.just constant.language.hex.just +>HEXLOWER +#^^^^^^^^ source.just constant.language.hex.just +>HEXUPPER +#^^^^^^^^ source.just constant.language.hex.just +> \ No newline at end of file diff --git a/tests/general/general.just b/tests/general/general.just new file mode 100644 index 0000000..aad52d9 --- /dev/null +++ b/tests/general/general.just @@ -0,0 +1,17 @@ +# Comments + +# Standard comment + +something # Comment after code + +# Numbers + +123 +# TODO: should the "." be colored differently? +123.456 + +# Imports + +import 'foo/bar.just' + +mod bar diff --git a/tests/general/general.just.snap b/tests/general/general.just.snap new file mode 100644 index 0000000..be28f7a --- /dev/null +++ b/tests/general/general.just.snap @@ -0,0 +1,37 @@ +># Comments +#^^^^^^^^^^ source.just comment.line.number-sign.just +> +># Standard comment +#^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>something # Comment after code +#^^^^^^^^^^ source.just +# ^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +># Numbers +#^^^^^^^^^ source.just comment.line.number-sign.just +> +>123 +#^^^ source.just constant.language.integer.just +># TODO: should the "." be colored differently? +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +>123.456 +#^^^ source.just constant.language.integer.just +# ^ source.just +# ^^^ source.just constant.language.integer.just +> +># Imports +#^^^^^^^^^ source.just comment.line.number-sign.just +> +>import 'foo/bar.just' +#^^^^^^ source.just keyword.other.reserved.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>mod bar +#^^^ source.just keyword.other.reserved.just +# ^ source.just +# ^^^^ source.just +> \ No newline at end of file diff --git a/tests/general/multi-line-constructs.just b/tests/general/multi-line-constructs.just new file mode 100644 index 0000000..c887e53 --- /dev/null +++ b/tests/general/multi-line-constructs.just @@ -0,0 +1,63 @@ +# Multi-line constructs + +# TODO: do we need to validate this? +# TODO: should just-specific highlighting in recipes be conditional (ex. only in interpolation blocks) +# or always on? + +multi-line-recipe: + if true; then \ + echo 'True!'; \ + fi + + +# Parenthesis blocks don't need explicit line breaks + +abc := ('a' + + 'b' + + 'c') + +abc2 := ( + 'a' + + 'b' + + 'c' +) + +# TODO: multi-line recipe def broken + +foo param=('foo' + + 'bar' + ): + echo {{param}} + +bar: (foo + 'Foo' + ) + echo 'Bar!' + +# Backslash continues as if whitespace + +a := 'foo' + \ + 'bar' + +foo param1 \ + param2='foo' \ + *varparam='': dep1 \ + (dep2 'foo') + echo {{param1}} {{param2}} {{varparam}} + +dep1: \ + # this comment is not part of the recipe body + echo 'dep1' + +dep2 \ + param: + echo 'Dependency with parameter {{param}}' + +# Line continuation in interpolations + +recipe: + echo '{{ \ + "This interpolation " + \ + "has a lot of text." \ + }}' + echo 'back to recipe body' \ No newline at end of file diff --git a/tests/general/multi-line-constructs.just.snap b/tests/general/multi-line-constructs.just.snap new file mode 100644 index 0000000..82593bc --- /dev/null +++ b/tests/general/multi-line-constructs.just.snap @@ -0,0 +1,227 @@ +># Multi-line constructs +#^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +># TODO: do we need to validate this? +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +># TODO: should just-specific highlighting in recipes be conditional (ex. only in interpolation blocks) +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +># or always on? +#^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>multi-line-recipe: +#^^^^^^^^^^^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> if true; then \ +#^^ source.just +# ^^ source.just keyword.control.conditional.just +# ^ source.just +# ^^^^ source.just constant.language.boolean.just +# ^^^^^^^^^ source.just +> echo 'True!'; \ +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^^^^ source.just +> fi +#^^^^^ source.just +> +> +># Parenthesis blocks don't need explicit line breaks +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>abc := ('a' + +#^^^ source.just variable.other.just +# ^ source.just +# ^^ source.just keyword.operator.assignment.just +# ^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +> 'b' +#^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> + 'c') +#^^^^^^^^^ source.just +# ^ source.just keyword.operator.concat.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^^ source.just +> +>abc2 := ( +#^^^^ source.just variable.other.just +# ^ source.just +# ^^ source.just keyword.operator.assignment.just +# ^^^ source.just +> 'a' + +#^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +> 'b' + +#^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +> 'c' +#^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +>) +#^^ source.just +> +># TODO: multi-line recipe def broken +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>foo param=('foo' +#^^^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> + 'bar' +#^^^^^^ source.just +# ^ source.just keyword.operator.concat.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> ): +#^^^^^^^ source.just +> echo {{param}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>bar: (foo +#^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^^ source.just +# ^^^ source.just entity.name.function.just +> 'Foo' +#^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> ) +#^^^^^^^ source.just +> echo 'Bar!' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +># Backslash continues as if whitespace +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>a := 'foo' + \ +#^ source.just variable.other.just +# ^ source.just +# ^^ source.just keyword.operator.assignment.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +# ^^^ source.just +> 'bar' +#^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>foo param1 \ +#^^^^^^^^^^^^^ source.just +> param2='foo' \ +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^^^ source.just +> *varparam='': dep1 \ +#^^^^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^^^^^^^^^ source.just +> (dep2 'foo') +#^^^^^^^^^^^^^^^^ source.just +# ^ source.just +# ^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +> echo {{param1}} {{param2}} {{varparam}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>dep1: \ +#^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^^ source.just +> # this comment is not part of the recipe body +#^^^^ source.just +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> echo 'dep1' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>dep2 \ +#^^^^^^^ source.just +> param: +#^^^^^^^^^ source.just +> echo 'Dependency with parameter {{param}}' +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just +> +># Line continuation in interpolations +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>recipe: +#^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo '{{ \ +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^ source.just string.quoted.single.just +> "This interpolation " + \ +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +> "has a lot of text." \ +#^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +> }}' +#^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> echo 'back to recipe body' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just \ No newline at end of file diff --git a/tests/recipes/recipe-attributes.just b/tests/recipes/recipe-attributes.just index 929bd34..c4f1b0e 100644 --- a/tests/recipes/recipe-attributes.just +++ b/tests/recipes/recipe-attributes.just @@ -28,3 +28,19 @@ delete-everything: [confirm: "Are you sure you want to delete everything?"] delete-everything: rm -rf * + + +# Recipe groups + +[group('lint')] +js-lint: + echo 'Running JS linter...' + +[group('rust recipes')] +[group('lint')] +rust-lint: + echo 'Running Rust linter...' + +[group('lint')] +cpp-lint: + echo 'Running C++ linter...' \ No newline at end of file diff --git a/tests/recipes/recipe-attributes.just.snap b/tests/recipes/recipe-attributes.just.snap index 9dfb4c7..b3227c1 100644 --- a/tests/recipes/recipe-attributes.just.snap +++ b/tests/recipes/recipe-attributes.just.snap @@ -100,4 +100,70 @@ # ^ source.just keyword.operator.recipe.end.just > rm -rf * #^^^^^^^^^^^^^ source.just -> \ No newline at end of file +> +> +># Recipe groups +#^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>[group('lint')] +#^ source.just +# ^^^^^ source.just support.function.system.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^^ source.just +>js-lint: +#^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo 'Running JS linter...' +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>[group('rust recipes')] +#^ source.just +# ^^^^^ source.just support.function.system.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^^ source.just +>[group('lint')] +#^ source.just +# ^^^^^ source.just support.function.system.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^^ source.just +>rust-lint: +#^^^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo 'Running Rust linter...' +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>[group('lint')] +#^ source.just +# ^^^^^ source.just support.function.system.just +# ^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just +# ^^ source.just +>cpp-lint: +#^^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo 'Running C++ linter...' +#^^^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just \ No newline at end of file diff --git a/tests/recipes/recipe-content.just b/tests/recipes/recipe-content.just new file mode 100644 index 0000000..8a656b2 --- /dev/null +++ b/tests/recipes/recipe-content.just @@ -0,0 +1,17 @@ +# Noise operators + +@quiet: + echo hello + +_private: + echo hello + +body: + -echo "supress error" + @echo quiet + +# Variables in recipes illegal + +# TODO: not implemented +# foo: +# x := "hello" \ No newline at end of file diff --git a/tests/recipes/recipe-content.just.snap b/tests/recipes/recipe-content.just.snap new file mode 100644 index 0000000..90c82f2 --- /dev/null +++ b/tests/recipes/recipe-content.just.snap @@ -0,0 +1,41 @@ +># Noise operators +#^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>@quiet: +#^ source.just keyword.other.recipe.prefix.just +# ^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo hello +#^^^^^^^^^^^^^ source.just +> +>_private: +#^ source.just keyword.other.recipe.prefix.just +# ^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo hello +#^^^^^^^^^^^^^ source.just +> +>body: +#^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> -echo "supress error" +#^^ source.just +# ^ source.just keyword.operator.error-suppression.just +# ^^^^^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^^^^^^^^^^^^^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +> @echo quiet +#^^ source.just +# ^ source.just keyword.operator.quiet.just +# ^^^^^^^^^^^ source.just +> +># Variables in recipes illegal +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +># TODO: not implemented +#^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +># foo: +#^^^^^^ source.just comment.line.number-sign.just +># x := "hello" +#^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just \ No newline at end of file diff --git a/tests/recipes/recipe-definition.just b/tests/recipes/recipe-definition.just new file mode 100644 index 0000000..501404d --- /dev/null +++ b/tests/recipes/recipe-definition.just @@ -0,0 +1,51 @@ +# Recipes + +# Basic +foo: + echo 'hello' + +abc-DEF-123: + echo 'hello' + +# Parameters + +foo param1: + echo {{param1}} + +foo param1 param2: + echo {{param1}} {{param2}} + +foo $bar: + echo $bar + +foo a b=var: + echo {{a}} {{b}} + +default_value a=("a" + ("b" + "c")): + echo {{a}} + +foo a=(arch + "-unknown-unknown") b=(arch / "input.dat"): + echo {{a}} {{b}} + +# TODO: backticks broken +a $A $B=`echo $A`: + echo $A $B + +variadic MESSAGE *FLAGS: + echo {{MESSAGE}} {{FLAGS}} + +plus_variadic +FLAGS='-q': + echo {{FLAGS}} + +# Dependencies + +basic: foo + echo 'bar' + +b: a && c d + echo 'hello from b' + +default: (build "main") + +complex: lint && (build ("a" + ("b" / "c"))) && test + echo "hello" diff --git a/tests/recipes/recipe-definition.just.snap b/tests/recipes/recipe-definition.just.snap new file mode 100644 index 0000000..d6b77cf --- /dev/null +++ b/tests/recipes/recipe-definition.just.snap @@ -0,0 +1,280 @@ +># Recipes +#^^^^^^^^^ source.just comment.line.number-sign.just +> +># Basic +#^^^^^^^ source.just comment.line.number-sign.just +>foo: +#^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo 'hello' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>abc-DEF-123: +#^^^^^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo 'hello' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +># Parameters +#^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>foo param1: +#^^^ source.just entity.name.function.just +# ^ source.just +# ^^^^^^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{param1}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>foo param1 param2: +#^^^ source.just entity.name.function.just +# ^ source.just +# ^^^^^^ source.just variable.parameter.recipe.just +# ^ source.just +# ^^^^^^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{param1}} {{param2}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>foo $bar: +#^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just keyword.other.recipe.variadic.just +# ^^^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.recipe.end.just +> echo $bar +#^^^^^^^^^^^^ source.just +> +>foo a b=var: +#^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^^^ source.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{a}} {{b}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>default_value a=("a" + ("b" + "c")): +#^^^^^^^^^^^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +# ^^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{a}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>foo a=(arch + "-unknown-unknown") b=(arch / "input.dat"): +#^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^ source.just +# ^^^^ source.just support.function.builtin.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^^^^^^^^^^^^^^^^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^ source.just +# ^^^^ source.just support.function.builtin.just +# ^ source.just +# ^ source.just keyword.operator.path-join.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^^^^^^^^^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{a}} {{b}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +># TODO: backticks broken +#^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +>a $A $B=`echo $A`: +#^ source.just entity.name.function.just +# ^ source.just +# ^ source.just keyword.other.recipe.variadic.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just +# ^ source.just keyword.other.recipe.variadic.just +# ^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^^^^^^^^^ source.just +# ^ source.just keyword.operator.recipe.end.just +> echo $A $B +#^^^^^^^^^^^^^ source.just +> +>variadic MESSAGE *FLAGS: +#^^^^^^^^ source.just entity.name.function.just +# ^ source.just +# ^^^^^^^ source.just variable.parameter.recipe.just +# ^ source.just +# ^ source.just keyword.other.recipe.variadic.just +# ^^^^^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{MESSAGE}} {{FLAGS}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +>plus_variadic +FLAGS='-q': +#^^^^^^^^^^^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just keyword.other.recipe.variadic.just +# ^^^^^ source.just variable.parameter.recipe.just +# ^ source.just keyword.operator.default.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{FLAGS}} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> +># Dependencies +#^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>basic: foo +#^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^ source.just +# ^^^ source.just entity.name.function.just +> echo 'bar' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>b: a && c d +#^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^ source.just +# ^ source.just entity.name.function.just +# ^ source.just +# ^^ source.just keyword.operator.and.just +# ^ source.just +# ^ source.just entity.name.function.just +# ^ source.just +# ^ source.just entity.name.function.just +> echo 'hello from b' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> +>default: (build "main") +#^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^ source.just +# ^ source.just +# ^^^^^ source.just entity.name.function.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^^^^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +> +>complex: lint && (build ("a" + ("b" / "c"))) && test +#^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +# ^ source.just +# ^^^^ source.just entity.name.function.just +# ^ source.just +# ^^ source.just keyword.operator.and.just +# ^ source.just +# ^ source.just +# ^^^^^ source.just entity.name.function.just +# ^^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just keyword.operator.concat.just +# ^^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just keyword.operator.path-join.just +# ^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +# ^ source.just +# ^ source.just +# ^^ source.just +# ^^ source.just keyword.operator.and.just +# ^ source.just +# ^^^^ source.just entity.name.function.just +> echo "hello" +#^^^^^^^ source.just +# ^ source.just string.quoted.double.just string.quoted.double.just +# ^^^^^ source.just string.quoted.double.just +# ^ source.just string.quoted.double.just +> \ No newline at end of file diff --git a/tests/recipes/recipes.just b/tests/recipes/recipes.just deleted file mode 100644 index 26b849d..0000000 --- a/tests/recipes/recipes.just +++ /dev/null @@ -1,69 +0,0 @@ -# Recipes - -default: (build "main") - -build target: - @echo 'Building {{target}}…' - cd {{target}} && make - -foo: - -cat foo - echo 'Done!' - -build target: - @echo "Building {{target}}…" - -push target: (build target) - @echo 'Pushing {{target}}…' - -# Extra - -test: lint && (build ("a" + ("b" / "c"))) && test - @echo "test" - -default := 'all' - -test target tests=default: - @echo 'Testing {{target}}:{{tests}}…' - ./test --tests {{tests}} {{target}} - -test triple=(arch + "-unknown-unknown") input=(arch / "input.dat"): - ./test {{triple}} - -# Extra case -test nested=("a" + ("b" + "c")): - ./test {{nested}} - echo (("a") + ("b" + "c")) - -commit MESSAGE *FLAGS: - git commit {{FLAGS}} -m "{{MESSAGE}}" - -test +FLAGS='-q': - cargo test {{FLAGS}} - -foo $bar: - echo $bar - -a: - echo 'A!' - -b: a && c d - echo 'B!' - -c: - echo 'C!' - -d: - echo 'D!' - -@quiet: - echo hello - echo goodbye - @# all done! - - -# Imports - -import 'foo/bar.just' - -mod bar diff --git a/tests/recipes/recipes.just.snap b/tests/recipes/recipes.just.snap deleted file mode 100644 index 50bbb48..0000000 --- a/tests/recipes/recipes.just.snap +++ /dev/null @@ -1,390 +0,0 @@ -># Recipes -#^^^^^^^^^ source.just comment.line.number-sign.just -> ->default: (build "main") -#^^^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -# ^ source.just -# ^ source.just -# ^^^^^ source.just entity.name.function.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^^^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -> ->build target: -#^^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.recipe.end.just -> @echo 'Building {{target}}…' -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^^ source.just string.quoted.single.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> cd {{target}} && make -#^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just -# ^^ source.just keyword.operator.and.just -# ^^^^^^ source.just -> ->foo: -#^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> -cat foo -#^^ source.just -# ^ source.just keyword.operator.error-suppression.just -# ^^^^^^^^ source.just -> echo 'Done!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->build target: -#^^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.recipe.end.just -> @echo "Building {{target}}…" -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^^^^^^^^ source.just string.quoted.double.just -# ^^ source.just string.quoted.double.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.quoted.double.just string.interpolated.escaping.just -# ^^ source.just string.quoted.double.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -> ->push target: (build target) -#^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.recipe.end.just -# ^ source.just -# ^ source.just -# ^^^^^ source.just entity.name.function.just -# ^^^^^^^ source.just -# ^ source.just -> @echo 'Pushing {{target}}…' -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^ source.just string.quoted.single.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> -># Extra -#^^^^^^^ source.just comment.line.number-sign.just -> ->test: lint && (build ("a" + ("b" / "c"))) && test -#^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -# ^ source.just -# ^^^^ source.just entity.name.function.just -# ^ source.just -# ^^ source.just keyword.operator.and.just -# ^ source.just -# ^ source.just -# ^^^^^ source.just entity.name.function.just -# ^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.path-join.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just -# ^^ source.just -# ^^ source.just keyword.operator.and.just -# ^ source.just -# ^^^^ source.just entity.name.function.just -> @echo "test" -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^^^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -> ->default := 'all' -#^^^^^^^ source.just variable.other.just -# ^ source.just -# ^^ source.just keyword.operator.assignment.just -# ^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->test target tests=default: -#^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just -# ^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.default.just -# ^^^^^^^ source.just -# ^ source.just keyword.operator.recipe.end.just -> @echo 'Testing {{target}}:{{tests}}…' -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^ source.just string.quoted.single.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.single.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just -# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ./test --tests {{tests}} {{target}} -#^^^ source.just -# ^ source.just keyword.operator.path-join.just -# ^^^^^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> ->test triple=(arch + "-unknown-unknown") input=(arch / "input.dat"): -#^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.default.just -# ^ source.just -# ^^^^ source.just support.function.builtin.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^^^^^^^^^^^^^^^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just -# ^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.default.just -# ^ source.just -# ^^^^ source.just support.function.builtin.just -# ^ source.just -# ^ source.just keyword.operator.path-join.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^^^^^^^^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.recipe.end.just -> ./test {{triple}} -#^^^ source.just -# ^ source.just keyword.operator.path-join.just -# ^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> -># Extra case -#^^^^^^^^^^^^ source.just comment.line.number-sign.just ->test nested=("a" + ("b" + "c")): -#^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.default.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just -# ^ source.just keyword.operator.recipe.end.just -> ./test {{nested}} -#^^^ source.just -# ^ source.just keyword.operator.path-join.just -# ^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> echo (("a") + ("b" + "c")) -#^^^^^^^ source.just -# ^ source.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^ source.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^ source.just keyword.operator.concat.just -# ^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just string.quoted.double.just -# ^ source.just -# ^^ source.just -> ->commit MESSAGE *FLAGS: -#^^^^^^ source.just entity.name.function.just -# ^ source.just -# ^^^^^^^ source.just variable.parameter.recipe.just -# ^ source.just -# ^ source.just keyword.other.recipe.variadic.just -# ^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.recipe.end.just -> git commit {{FLAGS}} -m "{{MESSAGE}}" -#^^^^^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^ source.just -# ^ source.just string.quoted.double.just string.quoted.double.just -# ^^ source.just string.quoted.double.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^^^ source.just string.quoted.double.just string.interpolated.escaping.just -# ^^ source.just string.quoted.double.just string.interpolated.escaping.just string.interpolated.escape.just -# ^ source.just string.quoted.double.just -> ->test +FLAGS='-q': -#^^^^ source.just entity.name.function.just -# ^ source.just -# ^ source.just keyword.other.recipe.variadic.just -# ^^^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.default.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -# ^ source.just keyword.operator.recipe.end.just -> cargo test {{FLAGS}} -#^^^^^^^^^^^^^ source.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -# ^^^^^ source.just string.interpolated.escaping.just -# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just -> ->foo $bar: -#^^^ source.just entity.name.function.just -# ^ source.just -# ^ source.just keyword.other.recipe.variadic.just -# ^^^ source.just variable.parameter.recipe.just -# ^ source.just keyword.operator.recipe.end.just -> echo $bar -#^^^^^^^^^^^^ source.just -> ->a: -#^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'A!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->b: a && c d -#^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -# ^ source.just -# ^ source.just entity.name.function.just -# ^ source.just -# ^^ source.just keyword.operator.and.just -# ^ source.just -# ^ source.just entity.name.function.just -# ^ source.just -# ^ source.just entity.name.function.just -> echo 'B!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->c: -#^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'C!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->d: -#^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'D!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->@quiet: -#^ source.just keyword.other.recipe.prefix.just -# ^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo hello -#^^^^^^^^^^^^^ source.just -> echo goodbye -#^^^^^^^^^^^^^^^ source.just -> @# all done! -#^^ source.just -# ^ source.just keyword.operator.quiet.just -# ^^^^^^^^^^^ source.just comment.line.number-sign.just -> -> -># Imports -#^^^^^^^^^ source.just comment.line.number-sign.just -> ->import 'foo/bar.just' -#^^^^^^ source.just keyword.other.reserved.just -# ^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^^^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just -> ->mod bar -#^^^ source.just keyword.other.reserved.just -# ^ source.just -# ^^^^ source.just -> \ No newline at end of file diff --git a/tests/conditionals.just b/tests/statements/conditionals.just similarity index 100% rename from tests/conditionals.just rename to tests/statements/conditionals.just diff --git a/tests/conditionals.just.snap b/tests/statements/conditionals.just.snap similarity index 100% rename from tests/conditionals.just.snap rename to tests/statements/conditionals.just.snap diff --git a/tests/statements/interpolation.just b/tests/statements/interpolation.just new file mode 100644 index 0000000..a2986dd --- /dev/null +++ b/tests/statements/interpolation.just @@ -0,0 +1,26 @@ +# Interpolation blocks + +# TODO: interpolation blocks don't really work highlighting-wise + +base: + echo {{var}} {{ var }} + echo {{ a + 'b' + c }} + echo {{ 'a' / 'b' }} + echo '{{ var }}' + echo '''{{ var }}''' + echo '{{ 'var' }}' + echo '''{{ 'var' }}''' + +# Braces are escaped + +escaped: + echo '{{{{ var }}' + echo '''{{{{ var }}''' + echo {{{{ var }} + echo '{{ "{{" }} var }}' + echo {{ "{{" }} var }} + echo '{{'{{ var }}'}}' + # TODO: broken + # echo {{ '{{ var }}' }} + # echo {{ "{{ var" }} }} + # echo {{ "{{ 'var' }}" }} diff --git a/tests/statements/interpolation.just.snap b/tests/statements/interpolation.just.snap new file mode 100644 index 0000000..485ad65 --- /dev/null +++ b/tests/statements/interpolation.just.snap @@ -0,0 +1,141 @@ +># Interpolation blocks +#^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +># TODO: interpolation blocks don't really work highlighting-wise +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>base: +#^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo {{var}} {{ var }} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> echo {{ a + 'b' + c }} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just keyword.operator.concat.just +# ^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just keyword.operator.concat.just +# ^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> echo {{ 'a' / 'b' }} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just keyword.operator.path-join.just +# ^ source.just string.interpolated.escaping.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +> echo '{{ var }}' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just +> echo '''{{ var }}''' +#^^^^^^^ source.just +# ^^^ source.just string.quoted.single.indented.just string.quoted.single.indented.just +# ^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^ source.just string.quoted.single.indented.just +> echo '{{ 'var' }}' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just +> echo '''{{ 'var' }}''' +#^^^^^^^ source.just +# ^^^ source.just string.quoted.single.indented.just string.quoted.single.indented.just +# ^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.indented.just string.interpolated.escaping.just +# ^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.quoted.single.just string.quoted.single.just +# ^^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.quoted.single.just +# ^ source.just string.quoted.single.indented.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.indented.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^ source.just string.quoted.single.indented.just +> +># Braces are escaped +#^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> +>escaped: +#^^^^^^^ source.just entity.name.function.just +# ^ source.just keyword.operator.recipe.end.just +> echo '{{{{ var }}' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^^^^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> echo '''{{{{ var }}''' +#^^^^^^^ source.just +# ^^^ source.just string.quoted.single.indented.just string.quoted.single.indented.just +# ^^^^^^^^^^^ source.just string.quoted.single.indented.just +# ^^^ source.just string.quoted.single.indented.just +> echo {{{{ var }} +#^^^^^^^^^^^^^^^^^^^ source.just +> echo '{{ "{{" }} var }}' +#^^^^^^^ source.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^^^^ source.just string.quoted.single.just string.interpolated.escaping.just string.quoted.double.indented.just +# ^ source.just string.quoted.single.just string.interpolated.escaping.just +# ^^ source.just string.quoted.single.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> echo {{ "{{" }} var }} +#^^^^^^^ source.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.interpolated.escaping.just +# ^^^^ source.just string.interpolated.escaping.just string.quoted.double.indented.just +# ^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^^^^ source.just +> echo '{{'{{ var }}'}}' +#^^^^^^^ source.just +# ^^^^ source.just string.quoted.double.indented.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^^^^^ source.just string.interpolated.escaping.just +# ^^ source.just string.interpolated.escaping.just string.interpolated.escape.just +# ^ source.just string.quoted.single.just string.quoted.single.just +# ^^ source.just string.quoted.single.just +# ^ source.just string.quoted.single.just +> # TODO: broken +#^^ source.just +# ^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> # echo {{ '{{ var }}' }} +#^^ source.just +# ^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> # echo {{ "{{ var" }} }} +#^^ source.just +# ^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> # echo {{ "{{ 'var' }}" }} +#^^ source.just +# ^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> \ No newline at end of file diff --git a/tests/strings.just b/tests/statements/strings.just similarity index 90% rename from tests/strings.just rename to tests/statements/strings.just index f676e62..a1dfcb3 100644 --- a/tests/strings.just +++ b/tests/statements/strings.just @@ -39,6 +39,8 @@ y := """ # Expanded +# TODO: should there be special highlighting for these strings? + foobar := x"~/$FOO/${BAR}" foobar := x"""~/$FOO/${BAR}""" foobar := x'~/$FOO/${BAR}' diff --git a/tests/strings.just.snap b/tests/statements/strings.just.snap similarity index 98% rename from tests/strings.just.snap rename to tests/statements/strings.just.snap index 1edf8be..077c4d3 100644 --- a/tests/strings.just.snap +++ b/tests/statements/strings.just.snap @@ -142,6 +142,9 @@ ># Expanded #^^^^^^^^^^ source.just comment.line.number-sign.just > +># TODO: should there be special highlighting for these strings? +#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just +> >foobar := x"~/$FOO/${BAR}" #^^^^^^ source.just variable.other.just # ^ source.just diff --git a/tests/settings.just b/tests/variables/settings.just similarity index 100% rename from tests/settings.just rename to tests/variables/settings.just diff --git a/tests/settings.just.snap b/tests/variables/settings.just.snap similarity index 100% rename from tests/settings.just.snap rename to tests/variables/settings.just.snap diff --git a/tests/variables.just b/tests/variables/variables.just similarity index 85% rename from tests/variables.just rename to tests/variables/variables.just index 5c1667b..e909f8b 100644 --- a/tests/variables.just +++ b/tests/variables/variables.just @@ -2,9 +2,7 @@ # Aliases alias b := build - -build: - echo 'Building!' +alias help-123 := some-recipe # Variables and substitution @@ -16,5 +14,7 @@ tarball := tardir + ".tar.gz" foo := "a/" bar := foo / "b" +# Exports + export RUST_BACKTRACE := "1" diff --git a/tests/variables.just.snap b/tests/variables/variables.just.snap similarity index 91% rename from tests/variables.just.snap rename to tests/variables/variables.just.snap index 22560b4..6f39c4c 100644 --- a/tests/variables.just.snap +++ b/tests/variables/variables.just.snap @@ -9,15 +9,13 @@ # ^ source.just # ^^ source.just keyword.operator.assignment.just # ^^^^^^^ source.just -> ->build: -#^^^^^ source.just entity.name.function.just -# ^ source.just keyword.operator.recipe.end.just -> echo 'Building!' -#^^^^^^^ source.just -# ^ source.just string.quoted.single.just string.quoted.single.just -# ^^^^^^^^^ source.just string.quoted.single.just -# ^ source.just string.quoted.single.just +>alias help-123 := some-recipe +#^^^^^ source.just keyword.other.assignment.just +# ^ source.just +# ^^^^^^^^ source.just variable.other.just +# ^ source.just +# ^^ source.just keyword.operator.assignment.just +# ^^^^^^^^^^^^^ source.just > ># Variables and substitution #^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.just comment.line.number-sign.just @@ -81,6 +79,9 @@ # ^ source.just string.quoted.double.just # ^ source.just string.quoted.double.just > +># Exports +#^^^^^^^^^ source.just comment.line.number-sign.just +> >export RUST_BACKTRACE := "1" #^^^^^^ source.just keyword.other.assignment.just # ^ source.just diff --git a/yarn.lock b/yarn.lock index 7c31484..02fe0c2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -68,9 +68,9 @@ tslib "^2.6.2" "@azure/identity@^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.0.tgz#acaee2f50785cc87778ec7eedcc20d6e72c1da23" - integrity sha512-ve3aYv79qXOJ8wRxQ5jO0eIz2DZ4o0TyME4m4vlGV5YyePddVZ+pFMzusAMODNAflYAAv1cBIhKnd4xytmXyig== + version "4.2.1" + resolved "https://registry.yarnpkg.com/@azure/identity/-/identity-4.2.1.tgz#22b366201e989b7b41c0e1690e103bd579c31e4c" + integrity sha512-U8hsyC9YPcEIzoaObJlRDvp7KiF0MGS7xcWbyJSVvXRkC/HXo1f0oYeBYmEvVgRfacw7GHf6D6yAoh9JHz6A5Q== dependencies: "@azure/abort-controller" "^1.0.0" "@azure/core-auth" "^1.5.0" @@ -80,7 +80,7 @@ "@azure/core-util" "^1.3.0" "@azure/logger" "^1.0.0" "@azure/msal-browser" "^3.11.1" - "@azure/msal-node" "^2.6.6" + "@azure/msal-node" "^2.9.2" events "^3.0.0" jws "^4.0.0" open "^8.0.0" @@ -95,32 +95,93 @@ tslib "^2.6.2" "@azure/msal-browser@^3.11.1": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.14.0.tgz#1cb5cab438a9943212aa50c403d11f775c787b21" - integrity sha512-Un85LhOoecJ3HDTS3Uv3UWnXC9/43ZSO+Kc+anSqpZvcEt58SiO/3DuVCAe1A3I5UIBYJNMgTmZPGXQ0MVYrwA== + version "3.17.0" + resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.17.0.tgz#dee9ccae586239e7e0708b261f7ffa5bc7e00fb7" + integrity sha512-csccKXmW2z7EkZ0I3yAoW/offQt+JECdTIV/KrnRoZyM7wCSsQWODpwod8ZhYy7iOyamcHApR9uCh0oD1M+0/A== dependencies: - "@azure/msal-common" "14.10.0" + "@azure/msal-common" "14.12.0" -"@azure/msal-common@14.10.0": - version "14.10.0" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.10.0.tgz#215449726717b53d549953db77562cad6cb8421c" - integrity sha512-Zk6DPDz7e1wPgLoLgAp0349Yay9RvcjPM5We/ehuenDNsz/t9QEFI7tRoHpp/e47I4p20XE3FiDlhKwAo3utDA== +"@azure/msal-common@14.12.0": + version "14.12.0" + resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.12.0.tgz#844abe269b071f8fa8949dadc2a7b65bbb147588" + integrity sha512-IDDXmzfdwmDkv4SSmMEyAniJf6fDu3FJ7ncOjlxkDuT85uSnLEhZi3fGZpoR7T4XZpOMx9teM9GXBgrfJgyeBw== -"@azure/msal-node@^2.6.6": - version "2.8.1" - resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.8.1.tgz#aded28d37eea2e7278c9bd44f2016647390f239c" - integrity sha512-VcZZM+5VvCWRBTOF7SxMKaxrz+EXjntx2u5AQe7QE06e6FuPJElGBrImgNgCh5QmFaNCfVFO+3qNR7UoFD/Gfw== +"@azure/msal-node@^2.9.2": + version "2.9.2" + resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.9.2.tgz#e6d3c1661012c1bd0ef68e328f73a2fdede52931" + integrity sha512-8tvi6Cos3m+0KmRbPjgkySXi+UQU/QiuVRFnrxIwt5xZlEEFa69O04RTaNESGgImyBBlYbo2mfE8/U8Bbdk1WQ== dependencies: - "@azure/msal-common" "14.10.0" + "@azure/msal-common" "14.12.0" jsonwebtoken "^9.0.0" uuid "^8.3.0" +"@vscode/vsce-sign-alpine-arm64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz#4accc485e55aa6ff04b195b47f722ead57daa58e" + integrity sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ== + +"@vscode/vsce-sign-alpine-x64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz#4a4b7b505b4cc0f58596394897c49a0bce0e540c" + integrity sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw== + +"@vscode/vsce-sign-darwin-arm64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz#10aa69feb7f81a3dc68c242038ca03eaff19c12e" + integrity sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ== + +"@vscode/vsce-sign-darwin-x64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz#3315528f3ea1007a648b3320bff36a33a9e07aa5" + integrity sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw== + +"@vscode/vsce-sign-linux-arm64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz#ce5c5cfc99e3454b4fb770405812b46bd6dca870" + integrity sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA== + +"@vscode/vsce-sign-linux-arm@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz#4142fda83e7130b31aedd8aa81e4daa6334323c2" + integrity sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ== + +"@vscode/vsce-sign-linux-x64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz#59ab93f322efb3cf49166d4e2e812789c3117428" + integrity sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg== + +"@vscode/vsce-sign-win32-arm64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz#d095704a14b0404c0b6f696e9889e9a51b31a86c" + integrity sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ== + +"@vscode/vsce-sign-win32-x64@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz#294ea72b44fedd694d49f5cef4c55bf3876dc257" + integrity sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg== + +"@vscode/vsce-sign@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz#b4bf155d16f2a4badc069df850dc86f756124842" + integrity sha512-0uL32egStKYfy60IqnynAChMTbL0oqpqk0Ew0YHiIb+fayuGZWADuIPHWUcY1GCnAA+VgchOPDMxnc2R3XGWEA== + optionalDependencies: + "@vscode/vsce-sign-alpine-arm64" "2.0.2" + "@vscode/vsce-sign-alpine-x64" "2.0.2" + "@vscode/vsce-sign-darwin-arm64" "2.0.2" + "@vscode/vsce-sign-darwin-x64" "2.0.2" + "@vscode/vsce-sign-linux-arm" "2.0.2" + "@vscode/vsce-sign-linux-arm64" "2.0.2" + "@vscode/vsce-sign-linux-x64" "2.0.2" + "@vscode/vsce-sign-win32-arm64" "2.0.2" + "@vscode/vsce-sign-win32-x64" "2.0.2" + "@vscode/vsce@^2.22.0": - version "2.26.1" - resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.26.1.tgz#c4f13b04225e5cd16d0a80eb5bb98b96451ce431" - integrity sha512-QOG6Ht7V93nhwcBxPWcG33UK0qDGEoJdg0xtVeaTN27W6PGdMJUJGTPhB/sNHUIFKwvwzv/zMAHvDgMNXbcwlA== + version "2.27.0" + resolved "https://registry.yarnpkg.com/@vscode/vsce/-/vsce-2.27.0.tgz#4d58e789ed8a2a2dfc5c049324d038a505a599b7" + integrity sha512-FFUMBVSyyjjJpWszwqk7d4U3YllY8FdWslbUDMRki1x4ZjA3Z0hmRMfypWrjP9sptbSR9nyPFU4uqjhy2qRB/w== dependencies: "@azure/identity" "^4.1.0" + "@vscode/vsce-sign" "^2.0.0" azure-devops-node-api "^12.5.0" chalk "^2.4.2" cheerio "^1.0.0-rc.9" @@ -339,9 +400,9 @@ css-what@^6.1.0: integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== debug@4, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" @@ -830,9 +891,9 @@ napi-build-utils@^1.0.1: integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== node-abi@^3.3.0: - version "3.62.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.62.0.tgz#017958ed120f89a3a14a7253da810f5d724e3f36" - integrity sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g== + version "3.65.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3" + integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA== dependencies: semver "^7.3.5" @@ -920,9 +981,9 @@ prebuild-install@^7.0.1: tunnel-agent "^0.6.0" prettier@^3.2.4: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + version "3.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" + integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== pump@^3.0.0: version "3.0.0" @@ -971,9 +1032,9 @@ safe-buffer@^5.0.1, safe-buffer@~5.2.0: integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== sax@>=0.6.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== semver@^5.1.0: version "5.7.2" @@ -1072,9 +1133,9 @@ tmp@^0.2.1: integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== tslib@^2.2.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tunnel-agent@^0.6.0: version "0.6.0"