-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
toolkit.nu in nushell repo root problems #1
Comments
Hmmm, this could be because it's not finding the config file or something like that? Seems like it's ignoring my $env.TOPIARY_blah settings. 🤔 |
I think it's finding my config now, but I have no idea what's going on here and why it things the languages.ncl is invalid. It looks good to me.
|
I think your topiary version is out of date, maybe try to install the github version with cargo? |
That was definitely the case. Now it just doesn't compile on Windows.
|
Just found out that latest topiary supports referring grammar to local path like this: grammar = {
# source.git = {
# git = "https://github.com/nushell/tree-sitter-nu.git",
# rev = "7e0f16f608a9e804fae61430ade734f9f849fb80",
# },
source.path = "<local-directory>/libtree-sitter-nu.dylib",
symbol = "tree_sitter_nu",
}, Maybe you can try manually compiling the parser with Remember to checkout the commit above since the latest grammar is not well-supported by this project (still struggling with annoying whitespaces issues). |
Interesting. I was able to get it to do something at least.
I did all that on the hash you specified above. On the latest main I get this:
|
You need to run tree-sitter generate before the build, otherwise the grammar is still the latest. Make doesn't require that because it directly use the generated c files, which is git tracked. Actually I'm not sure how tree-sitter build works, but the error message definitely suggests that the built parser is newer than that commit point, maybe even need to cleanup something before tree-sitter generate. |
ifeq ($(OS),Windows_NT)
$(error Windows is not supported)
endif Aha, so the makefile is designed to not work on windows, interesting. |
Ya, I noticed that too.
I tried that and it didn't make a difference. ❯ tree-sitter generate
❯ rm nu.dll
❯ tree-sitter build
❯ z nush
toolkit module detected...
activating toolkit module with `use toolkit.nu`
❯ open toolkit.nu | topiary format --language nushell --verbose --tolerate-parsing-errors
[2024-12-03T18:07:44Z ERROR topiary] Error parsing query file
[2024-12-03T18:07:44Z ERROR topiary] Cause: QueryError { row: 4, column: 7, offset: 65, message: "long_flag_equals_value", kind: NodeType } |
Yeah I realized my guess was wrong, it doesn't make any sense to me, if tree-sitter-nu is at the correct head, it should contain the rule for long-flag-equals-value (removed recently by me). |
@fdncred I think this is now compatible with the latest parser, if you have the I've tested all Lines 5 to 34 in 68572e8
|
@blindFS I wonder what I'm doing wrong.
❯ $env.TOPIARY_CONFIG_FILE
C:/Users/fdncred/source/repos/topiary-nushell/languages.ncl
❯ $env.TOPIARY_LANGUAGE_DIR
C:/Users/fdncred/source/repos/topiary-nushell/languages ❯ open toolkit.nu | topiary format --language nushell --verbose --tolerate-parsing-errors
[2024-12-20T14:43:28Z ERROR topiary] Error parsing query file
[2024-12-20T14:43:28Z ERROR topiary] Cause: QueryError { row: 4, column: 7, offset: 65, message: "long_flag_equals_value", kind: NodeType }
❯ topiary format toolkit.nu
[2024-12-20T14:44:22Z ERROR topiary] Error parsing query file
[2024-12-20T14:44:22Z ERROR topiary] Cause: QueryError { row: 4, column: 7, offset: 65, message: "long_flag_equals_value", kind: NodeType } |
@fdncred This topiary-nushell on main branch with latest commit? {
languages = {
nu = {
extensions = ["nu"],
grammar.source.path = ".../tree-sitter-nu/nu.dylib",
},
},
}
|
I think the language name on the main branch has changed to |
I didn't have the topiary-nushell latest but I do now. This is what I get This is my languages.ncl {
languages = {
nu = {
extensions = ["nu"],
grammar.source.path = "C:/Users/fdncred/source/repos/tree-sitter-nu/nu.dll",
symbol = "tree_sitter_nu",
},
},
} It tried to do something
and
|
@fdncred I think it's working, except for the write access. I'll ask the owners of topiary to see what's going on with the write accessibility. |
yup, you're right. yay! it's interesting to see what it changed. 99.9% is fine but the section with diff --git a/toolkit.nu b/toolkit.nu
index d848dce18..6096879a5 100644
--- a/toolkit.nu
+++ b/toolkit.nu
@@ -8,108 +8,108 @@
# check standard code formatting and apply the changes
export def fmt [
- --check # do not apply the format changes, only check the syntax
- --verbose # print extra information about the command's progress
+ --check # do not apply the format changes, only check the syntax
+ --verbose # print extra information about the command's progress
] {
- if $verbose {
- print $"running ('toolkit fmt' | pretty-format-command)"
- }
+ if $verbose {
+ print $"running ('toolkit fmt' | pretty-format-command)"
+ }
- if $check {
- try {
- ^cargo fmt --all -- --check
- } catch {
- error make --unspanned {
- msg: $"\nplease run ('toolkit fmt' | pretty-format-command) to fix formatting!"
- }
- }
- } else {
- ^cargo fmt --all
+ if $check {
+ try {
+ ^cargo fmt --all -- --check
+ } catch {
+ error make --unspanned {
+ msg: $"\nplease run ('toolkit fmt' | pretty-format-command) to fix formatting!"
+ }
}
+ } else {
+ ^cargo fmt --all
+ }
}
# check that you're using the standard code style
#
# > it is important to make `clippy` happy :relieved:
export def clippy [
- --verbose # print extra information about the command's progress
- --features: list<string> # the list of features to run *Clippy* on
+ --verbose # print extra information about the command's progress
+ --features: list<string> # the list of features to run *Clippy* on
] {
- if $verbose {
- print $"running ('toolkit clippy' | pretty-format-command)"
- }
+ if $verbose {
+ print $"running ('toolkit clippy' | pretty-format-command)"
+ }
- # If changing these settings also change CI settings in .github/workflows/ci.yml
- try {(
- ^cargo clippy
- --workspace
- --exclude nu_plugin_*
- --features ($features | str join ",")
- --
- -D warnings
- -D clippy::unwrap_used
- -D clippy::unchecked_duration_subtraction
+ # If changing these settings also change CI settings in .github/workflows/ci.yml
+ try {
+ (
+ ^cargo clippy
+ --workspace
+ --exclude nu_plugin_*
+ --features ($features | str join ",")
+ --
+ -D warnings
+ -D clippy::unwrap_used
+ -D clippy::unchecked_duration_subtraction
)
if $verbose {
- print $"running ('toolkit clippy' | pretty-format-command) on tests"
+ print $"running ('toolkit clippy' | pretty-format-command) on tests"
}
# In tests we don't have to deny unwrap
(
- ^cargo clippy
- --tests
- --workspace
- --exclude nu_plugin_*
- --features ($features | str join ",")
- --
- -D warnings
+ ^cargo clippy
+ --tests
+ --workspace
+ --exclude nu_plugin_*
+ --features ($features | str join ",")
+ --
+ -D warnings
)
if $verbose {
- print $"running ('toolkit clippy' | pretty-format-command) on plugins"
+ print $"running ('toolkit clippy' | pretty-format-command) on plugins"
}
(
- ^cargo clippy
- --package nu_plugin_*
- --
- -D warnings
- -D clippy::unwrap_used
- -D clippy::unchecked_duration_subtraction
+ ^cargo clippy
+ --package nu_plugin_*
+ --
+ -D warnings
+ -D clippy::unwrap_used
+ -D clippy::unchecked_duration_subtraction
)
-
- } catch {
- error make --unspanned {
- msg: $"\nplease fix the above ('clippy' | pretty-format-command) errors before continuing!"
- }
+ } catch {
+ error make --unspanned {
+ msg: $"\nplease fix the above ('clippy' | pretty-format-command) errors before continuing!"
}
+ }
}
# check that all the tests pass
export def test [
- --fast # use the "nextext" `cargo` subcommand to speed up the tests (see [`cargo-nextest`](https://nexte.st/) and [`nextest-rs/nextest`](https://github.com/nextest-rs/nextest))
- --features: list<string> # the list of features to run the tests on
- --workspace # run the *Clippy* command on the whole workspace (overrides `--features`)
+ --fast # use the "nextext" `cargo` subcommand to speed up the tests (see [`cargo-nextest`](https://nexte.st/) and [`nextest-rs/nextest`](https://github.com/nextest-rs/nextest))
+ --features: list<string> # the list of features to run the tests on
+ --workspace # run the *Clippy* command on the whole workspace (overrides `--features`)
] {
- if $fast {
- if $workspace {
- ^cargo nextest run --all
- } else {
- ^cargo nextest run --features ($features | str join ",")
- }
+ if $fast {
+ if $workspace {
+ ^cargo nextest run --all
+ } else {
+ ^cargo nextest run --features ($features | str join ",")
+ }
+ } else {
+ if $workspace {
+ ^cargo test --workspace
} else {
- if $workspace {
- ^cargo test --workspace
- } else {
- ^cargo test --features ($features | str join ",")
- }
+ ^cargo test --features ($features | str join ",")
}
+ }
}
# run the tests for the standard library
export def "test stdlib" [
- --extra-args: string = ''
+ --extra-args: string= ''
] {
- ^cargo run -- --no-config-file -c $"
+ ^cargo run -- --no-config-file -c $"
use crates/nu-std/testing.nu
testing run-tests --path crates/nu-std ($extra_args)
"
@@ -117,7 +117,7 @@ export def "test stdlib" [
# formats the pipe input inside backticks, dimmed and italic, as a pretty command
def pretty-format-command [] {
- $"`(ansi default_dimmed)(ansi default_italic)($in)(ansi reset)`"
+ $"`(ansi default_dimmed)(ansi default_italic)($in)(ansi reset)`"
}
# return a report about the check stage
@@ -130,36 +130,31 @@ def pretty-format-command [] {
# otherwise, the truth values will be incremental, following
# the order above.
def report [
- --fail-fmt
- --fail-clippy
- --fail-test
- --fail-test-stdlib
- --no-fail
+ --fail-fmt
+ --fail-clippy
+ --fail-test
+ --fail-test-stdlib
+ --no-fail
] {
- [fmt clippy test "test stdlib"]
- | wrap stage
- | merge (
- if $no_fail { [true true true true] }
- else if $fail_fmt { [false null null null] }
- else if $fail_clippy { [true false null null] }
- else if $fail_test { [true true false null] }
- else if $fail_test_stdlib { [true true true false] }
- else { [null null null null] }
- | wrap success
- )
- | upsert emoji {|it|
- if ($it.success == null) {
- ":black_circle:"
- } else if $it.success {
- ":green_circle:"
- } else {
- ":red_circle:"
- }
- }
- | each {|it|
- $"- ($it.emoji) `toolkit ($it.stage)`"
+ [fmt clippy test "test stdlib"]
+ | wrap stage
+ | merge (
+ if $no_fail {[true true true true]} else if $fail_fmt {[false null null null]} else if $fail_clippy {[true false null null]} else if $fail_test {[true true false null]} else if $fail_test_stdlib {[true true true false]} else {[null null null null]}
+ | wrap success
+ )
+ | upsert emoji {|it|
+ if ($it.success == null) {
+ ":black_circle:"
+ } else if $it.success {
+ ":green_circle:"
+ } else {
+ ":red_circle:"
}
- | to text
+ }
+ | each {|it|
+ $"- ($it.emoji) `toolkit ($it.stage)`"
+ }
+ | to text
}
# run all the necessary checks and tests to submit a perfect PR
@@ -253,242 +248,243 @@ def report [
#
# now the whole `toolkit check pr` passes! :tada:
export def "check pr" [
- --fast # use the "nextext" `cargo` subcommand to speed up the tests (see [`cargo-nextest`](https://nexte.st/) and [`nextest-rs/nextest`](https://github.com/nextest-rs/nextest))
- --features: list<string> # the list of features to check the current PR on
+ --fast # use the "nextext" `cargo` subcommand to speed up the tests (see [`cargo-nextest`](https://nexte.st/) and [`nextest-rs/nextest`](https://github.com/nextest-rs/nextest))
+ --features: list<string> # the list of features to check the current PR on
] {
- $env.NU_TEST_LOCALE_OVERRIDE = 'en_US.utf8'
- $env.LANG = 'en_US.UTF-8'
- $env.LANGUAGE = 'en'
-
- try {
- fmt --check --verbose
- } catch {
- return (report --fail-fmt)
- }
-
- try {
- clippy --features $features --verbose
- } catch {
- return (report --fail-clippy)
- }
-
- print $"running ('toolkit test' | pretty-format-command)"
- try {
- if $fast {
- if ($features | is-empty) {
- test --workspace --fast
- } else {
- test --features $features --fast
- }
- } else {
- if ($features | is-empty) {
- test --workspace
- } else {
- test --features $features
- }
- }
- } catch {
- return (report --fail-test)
- }
-
- print $"running ('toolkit test stdlib' | pretty-format-command)"
- try {
- test stdlib
- } catch {
- return (report --fail-test-stdlib)
+ $env.NU_TEST_LOCALE_OVERRIDE = 'en_US.utf8'
+ $env.LANG = 'en_US.UTF-8'
+ $env.LANGUAGE = 'en'
+
+ try {
+ fmt --check --verbose
+ } catch {
+ return (report --fail-fmt)
+ }
+
+ try {
+ clippy --features $features --verbose
+ } catch {
+ return (report --fail-clippy)
+ }
+
+ print $"running ('toolkit test' | pretty-format-command)"
+ try {
+ if $fast {
+ if ($features | is-empty) {
+ test --workspace --fast
+ } else {
+ test --features $features --fast
+ }
+ } else {
+ if ($features | is-empty) {
+ test --workspace
+ } else {
+ test --features $features
+ }
}
-
- report --no-fail
+ } catch {
+ return (report --fail-test)
+ }
+
+ print $"running ('toolkit test stdlib' | pretty-format-command)"
+ try {
+ test stdlib
+ } catch {
+ return (report --fail-test-stdlib)
+ }
+
+ report --no-fail
}
# run Nushell from source with a right indicator
export def run [] {
- ^cargo run -- ...[
- -e "$env.PROMPT_COMMAND_RIGHT = $'(ansi magenta_reverse)trying Nushell inside Cargo(ansi reset)'"
- ]
+ ^cargo run -- ...[
+ -e
+ "$env.PROMPT_COMMAND_RIGHT = $'(ansi magenta_reverse)trying Nushell inside Cargo(ansi reset)'"
+ ]
}
# set up git hooks to run:
# - `toolkit fmt --check --verbose` on `git commit`
# - `toolkit fmt --check --verbose` and `toolkit clippy --verbose` on `git push`
export def setup-git-hooks [] {
- print "This command will change your local git configuration and hence modify your development workflow. Are you sure you want to continue? [y]"
- if (input) == "y" {
- print $"running ('toolkit setup-git-hooks' | pretty-format-command)"
- git config --local core.hooksPath .githooks
- } else {
- print $"aborting ('toolkit setup-git-hooks' | pretty-format-command)"
- }
+ print "This command will change your local git configuration and hence modify your development workflow. Are you sure you want to continue? [y]"
+ if (input) == "y" {
+ print $"running ('toolkit setup-git-hooks' | pretty-format-command)"
+ git config --local core.hooksPath .githooks
+ } else {
+ print $"aborting ('toolkit setup-git-hooks' | pretty-format-command)"
+ }
}
def build-nushell [features: string] {
- print $'(char nl)Building nushell'
- print '----------------------------'
+ print $'(char nl)Building nushell'
+ print '----------------------------'
- ^cargo build --features $features --locked
+ ^cargo build --features $features --locked
}
def build-plugin [] {
- let plugin = $in
+ let plugin = $in
- print $'(char nl)Building ($plugin)'
- print '----------------------------'
+ print $'(char nl)Building ($plugin)'
+ print '----------------------------'
- cd $"crates/($plugin)"
- ^cargo build
+ cd $"crates/($plugin)"
+ ^cargo build
}
# build Nushell and plugins with some features
export def build [
- ...features: string@"nu-complete list features" # a space-separated list of feature to install with Nushell
- --all # build all plugins with Nushell
+ ...features: string@"nu-complete list features" # a space-separated list of feature to install with Nushell
+ --all # build all plugins with Nushell
] {
- build-nushell ($features | str join ",")
-
- if not $all {
- return
- }
-
- let plugins = [
- nu_plugin_inc,
- nu_plugin_gstat,
- nu_plugin_query,
- nu_plugin_example,
- nu_plugin_custom_values,
- nu_plugin_formats,
- ]
-
- for plugin in $plugins {
- $plugin | build-plugin
- }
+ build-nushell ($features | str join ",")
+
+ if not $all {
+ return
+ }
+
+ let plugins = [
+ nu_plugin_inc
+ nu_plugin_gstat
+ nu_plugin_query
+ nu_plugin_example
+ nu_plugin_custom_values
+ nu_plugin_formats
+ ]
+
+ for plugin in $plugins {
+ $plugin | build-plugin
+ }
}
# build crates for wasm
export def "build wasm" [] {
- ^rustup target add wasm32-unknown-unknown
-
- # these crates should compile for wasm
- let compatible_crates = [
- "nu-cmd-base",
- "nu-cmd-extra",
- "nu-cmd-lang",
- "nu-color-config",
- "nu-command",
- "nu-derive-value",
- "nu-engine",
- "nu-glob",
- "nu-json",
- "nu-parser",
- "nu-path",
- "nu-pretty-hex",
- "nu-protocol",
- "nu-std",
- "nu-system",
- "nu-table",
- "nu-term-grid",
- "nu-utils",
- "nuon"
- ]
-
- for crate in $compatible_crates {
- print $'(char nl)Building ($crate) for wasm'
- print '----------------------------'
- ^cargo build -p $crate --target wasm32-unknown-unknown --no-default-features
- }
+ ^rustup target add wasm32-unknown-unknown
+
+ # these crates should compile for wasm
+ let compatible_crates = [
+ "nu-cmd-base"
+ "nu-cmd-extra"
+ "nu-cmd-lang"
+ "nu-color-config"
+ "nu-command"
+ "nu-derive-value"
+ "nu-engine"
+ "nu-glob"
+ "nu-json"
+ "nu-parser"
+ "nu-path"
+ "nu-pretty-hex"
+ "nu-protocol"
+ "nu-std"
+ "nu-system"
+ "nu-table"
+ "nu-term-grid"
+ "nu-utils"
+ "nuon"
+ ]
+
+ for crate in $compatible_crates {
+ print $'(char nl)Building ($crate) for wasm'
+ print '----------------------------'
+ ^cargo build -p $crate --target wasm32-unknown-unknown --no-default-features
+ }
}
def "nu-complete list features" [] {
- open Cargo.toml | get features | transpose feature dependencies | get feature
+ open Cargo.toml | get features | transpose feature dependencies | get feature
}
def install-plugin [] {
- let plugin = $in
+ let plugin = $in
- print $'(char nl)Installing ($plugin)'
- print '----------------------------'
+ print $'(char nl)Installing ($plugin)'
+ print '----------------------------'
- ^cargo install --path $"crates/($plugin)"
+ ^cargo install --path $"crates/($plugin)"
}
# install Nushell and features you want
export def install [
- ...features: string@"nu-complete list features" # a space-separated list of feature to install with Nushell
- --all # install all plugins with Nushell
+ ...features: string@"nu-complete list features" # a space-separated list of feature to install with Nushell
+ --all # install all plugins with Nushell
] {
- touch crates/nu-cmd-lang/build.rs # needed to make sure `version` has the correct `commit_hash`
- ^cargo install --path . --features ($features | str join ",") --locked --force
- if not $all {
- return
- }
-
- let plugins = [
- nu_plugin_inc,
- nu_plugin_gstat,
- nu_plugin_query,
- nu_plugin_example,
- nu_plugin_custom_values,
- nu_plugin_formats,
- ]
-
- for plugin in $plugins {
- $plugin | install-plugin
- }
+ touch crates/nu-cmd-lang/build.rs # needed to make sure `version` has the correct `commit_hash`
+ ^cargo install --path . --features ($features | str join ",") --locked --force
+ if not $all {
+ return
+ }
+
+ let plugins = [
+ nu_plugin_inc
+ nu_plugin_gstat
+ nu_plugin_query
+ nu_plugin_example
+ nu_plugin_custom_values
+ nu_plugin_formats
+ ]
+
+ for plugin in $plugins {
+ $plugin | install-plugin
+ }
}
def windows? [] {
- $nu.os-info.name == windows
+ $nu.os-info.name == windows
}
# filter out files that end in .d
def keep-plugin-executables [] {
- if (windows?) { where name ends-with '.exe' } else { where name !~ '\.d' }
+ if (windows?) { where name ends-with '.exe'} else { where name !~ '\.d'}
}
# add all installed plugins
export def "add plugins" [] {
- let plugin_path = (which nu | get path.0 | path dirname)
- let plugins = (ls $plugin_path | where name =~ nu_plugin | keep-plugin-executables | get name)
+ let plugin_path = (which nu | get path.0 | path dirname)
+ let plugins = (ls $plugin_path | where name =~ nu_plugin | keep-plugin-executables | get name)
- if ($plugins | is-empty) {
- print $"no plugins found in ($plugin_path)..."
- return
- }
+ if ($plugins | is-empty) {
+ print $"no plugins found in ($plugin_path)..."
+ return
+ }
- for plugin in $plugins {
- try {
- print $"> plugin add ($plugin)"
- plugin add $plugin
- } catch { |err|
- print -e $"(ansi rb)Failed to add ($plugin):\n($err.msg)(ansi reset)"
- }
+ for plugin in $plugins {
+ try {
+ print $"> plugin add ($plugin)"
+ plugin add $plugin
+ } catch {|err|
+ print -e $"(ansi rb)Failed to add ($plugin):\n($err.msg)(ansi reset)"
}
+ }
- print $"\n(ansi gb)plugins registered, please restart nushell(ansi reset)"
+ print $"\n(ansi gb)plugins registered, please restart nushell(ansi reset)"
}
def compute-coverage [] {
- print "Setting up environment variables for coverage"
- # Enable LLVM coverage tracking through environment variables
- # show env outputs .ini/.toml style description of the variables
- # In order to use from toml, we need to make sure our string literals are single quoted
- # This is especially important when running on Windows since "C:\blah" is treated as an escape
- ^cargo llvm-cov show-env | str replace (char dq) (char sq) -a | from toml | load-env
-
- print "Cleaning up coverage data"
- ^cargo llvm-cov clean --workspace
-
- print "Building with workspace and profile=ci"
- # Apparently we need to explicitly build the necessary parts
- # using the `--profile=ci` is basically `debug` build with unnecessary symbols stripped
- # leads to smaller binaries and potential savings when compiling and running
- ^cargo build --workspace --profile=ci
-
- print "Running tests with --workspace and profile=ci"
- ^cargo test --workspace --profile=ci
-
- # You need to provide the used profile to find the raw data
- print "Generating coverage report as lcov.info"
- ^cargo llvm-cov report --lcov --output-path lcov.info --profile=ci
+ print "Setting up environment variables for coverage"
+ # Enable LLVM coverage tracking through environment variables
+ # show env outputs .ini/.toml style description of the variables
+ # In order to use from toml, we need to make sure our string literals are single quoted
+ # This is especially important when running on Windows since "C:\blah" is treated as an escape
+ ^cargo llvm-cov show-env | str replace (char dq) (char sq) -a | from toml | load-env
+
+ print "Cleaning up coverage data"
+ ^cargo llvm-cov clean --workspace
+
+ print "Building with workspace and profile=ci"
+ # Apparently we need to explicitly build the necessary parts
+ # using the `--profile=ci` is basically `debug` build with unnecessary symbols stripped
+ # leads to smaller binaries and potential savings when compiling and running
+ ^cargo build --workspace --profile=ci
+
+ print "Running tests with --workspace and profile=ci"
+ ^cargo test --workspace --profile=ci
+
+ # You need to provide the used profile to find the raw data
+ print "Generating coverage report as lcov.info"
+ ^cargo llvm-cov report --lcov --output-path lcov.info --profile=ci
}
# Script to generate coverage locally
@@ -516,13 +512,13 @@ def compute-coverage [] {
# - https://github.com/umaumax/vim-lcov
# - https://github.com/andythigpen/nvim-coverage (probably needs some additional config)
export def cov [] {
- let start = (date now)
- $env.NUSHELL_CARGO_PROFILE = "ci"
+ let start = (date now)
+ $env.NUSHELL_CARGO_PROFILE = "ci"
- compute-coverage
+ compute-coverage
- let end = (date now)
- print $"Coverage generation took ($end - $start)."
+ let end = (date now)
+ print $"Coverage generation took ($end - $start)."
}
# Benchmark a target revision (default: current branch) against a reference revision (default: main branch)
@@ -530,37 +526,37 @@ export def cov [] {
# Results are saved in a `./tango` directory
# Ensure you have `cargo-export` installed to generate separate artifacts for each branch.
export def benchmark-compare [
- target?: string # which branch to compare (default: current branch)
- reference?: string # the reference to compare against (default: main branch)
+ target?: string # which branch to compare (default: current branch)
+ reference?: string # the reference to compare against (default: main branch)
] {
- let reference = $reference | default "main"
- let current = git branch --show-current
- let target = $target | default $current
-
- print $'-- Benchmarking ($target) against ($reference)'
-
- let export_dir = $env.PWD | path join "tango"
- let ref_bin_dir = $export_dir | path join bin $reference
- let tgt_bin_dir = $export_dir | path join bin $target
-
- # benchmark the target revision
- print $'-- Running benchmarks for ($target)'
- git checkout $target
- ^cargo export $tgt_bin_dir -- bench
-
- # benchmark the comparison reference revision
- print $'-- Running benchmarks for ($reference)'
- git checkout $reference
- ^cargo export $ref_bin_dir -- bench
-
- # return back to the whatever revision before benchmarking
- print '-- Done'
- git checkout $current
-
- # report results
- let reference_bin = $ref_bin_dir | path join benchmarks
- let target_bin = $tgt_bin_dir | path join benchmarks
- ^$target_bin compare $reference_bin -o -s 50 --dump ($export_dir | path join samples)
+ let reference = $reference | default "main"
+ let current = git branch --show-current
+ let target = $target | default $current
+
+ print $'-- Benchmarking ($target) against ($reference)'
+
+ let export_dir = $env.PWD | path join "tango"
+ let ref_bin_dir = $export_dir | path join bin $reference
+ let tgt_bin_dir = $export_dir | path join bin $target
+
+ # benchmark the target revision
+ print $'-- Running benchmarks for ($target)'
+ git checkout $target
+ ^cargo export $tgt_bin_dir -- bench
+
+ # benchmark the comparison reference revision
+ print $'-- Running benchmarks for ($reference)'
+ git checkout $reference
+ ^cargo export $ref_bin_dir -- bench
+
+ # return back to the whatever revision before benchmarking
+ print '-- Done'
+ git checkout $current
+
+ # report results
+ let reference_bin = $ref_bin_dir | path join benchmarks
+ let target_bin = $tgt_bin_dir | path join benchmarks
+ ^$target_bin compare $reference_bin -o -s 50 --dump ($export_dir | path join samples)
}
# Benchmark the current branch and logs the result in `./tango/samples`
@@ -568,30 +564,30 @@ export def benchmark-compare [
# Results are saved in a `./tango` directory
# Ensure you have `cargo-export` installed to generate separate artifacts for each branch.
export def benchmark-log [
- target?: string # which branch to compare (default: current branch)
+ target?: string # which branch to compare (default: current branch)
] {
- let current = git branch --show-current
- let target = $target | default $current
- print $'-- Benchmarking ($target)'
+ let current = git branch --show-current
+ let target = $target | default $current
+ print $'-- Benchmarking ($target)'
- let export_dir = $env.PWD | path join "tango"
- let bin_dir = ($export_dir | path join bin $target)
+ let export_dir = $env.PWD | path join "tango"
+ let bin_dir = ($export_dir | path join bin $target)
- # benchmark the target revision
- if $target != $current {
- git checkout $target
- }
- ^cargo export $bin_dir -- bench
+ # benchmark the target revision
+ if $target != $current {
+ git checkout $target
+ }
+ ^cargo export $bin_dir -- bench
- # return back to the whatever revision before benchmarking
- print '-- Done'
- if $target != $current {
- git checkout $current
- }
+ # return back to the whatever revision before benchmarking
+ print '-- Done'
+ if $target != $current {
+ git checkout $current
+ }
- # report results
- let bench_bin = ($bin_dir | path join benchmarks)
- ^$bench_bin compare -o -s 50 --dump ($export_dir | path join samples)
+ # report results
+ let bench_bin = ($bin_dir | path join benchmarks)
+ ^$bench_bin compare -o -s 50 --dump ($export_dir | path join samples)
}
# Build all Windows archives and MSIs for release manually
@@ -601,28 +597,28 @@ export def benchmark-log [
# You need to have the cross-compilers for MSVC installed (see Visual Studio).
# If compiling on x86_64, you need ARM64 compilers and libs too, and vice versa.
export def 'release-pkg windows' [
- --artifacts-dir="artifacts" # Where to copy the final msi and zip files to
+ --artifacts-dir= "artifacts" # Where to copy the final msi and zip files to
] {
- $env.RUSTFLAGS = ""
- $env.CARGO_TARGET_DIR = ""
- hide-env RUSTFLAGS
- hide-env CARGO_TARGET_DIR
- $env.OS = "windows-latest"
- $env.GITHUB_WORKSPACE = ("." | path expand)
- $env.GITHUB_OUTPUT = ("./output/out.txt" | path expand)
- let version = (open Cargo.toml | get package.version)
- mkdir $artifacts_dir
- for target in ["aarch64" "x86_64"] {
- $env.TARGET = $target ++ "-pc-windows-msvc"
-
- rm -rf output
- _EXTRA_=bin nu .github/workflows/release-pkg.nu
- cp $"output/nu-($version)-($target)-pc-windows-msvc.zip" $artifacts_dir
-
- rm -rf output
- _EXTRA_=msi nu .github/workflows/release-pkg.nu
- cp $"target/wix/nu-($version)-($target)-pc-windows-msvc.msi" $artifacts_dir
- }
+ $env.RUSTFLAGS = ""
+ $env.CARGO_TARGET_DIR = ""
+ hide-env RUSTFLAGS
+ hide-env CARGO_TARGET_DIR
+ $env.OS = "windows-latest"
+ $env.GITHUB_WORKSPACE = ("." | path expand)
+ $env.GITHUB_OUTPUT = ("./output/out.txt" | path expand)
+ let version = (open Cargo.toml | get package.version)
+ mkdir $artifacts_dir
+ for target in ["aarch64" "x86_64"] {
+ $env.TARGET = $target ++ "-pc-windows-msvc"
+
+ rm -rf output
+ _EXTRA_=bin nu .github/workflows/release-pkg.nu
+ cp $"output/nu-($version)-($target)-pc-windows-msvc.zip" $artifacts_dir
+
+ rm -rf output
+ _EXTRA_=msi nu .github/workflows/release-pkg.nu
+ cp $"target/wix/nu-($version)-($target)-pc-windows-msvc.msi" $artifacts_dir
+ }
}
-export def main [] { help toolkit }
+export def main [] {help toolkit} |
to be more clear, the funny part is that it formatted this if $no_fail { [true true true true] }
else if $fail_fmt { [false null null null] }
else if $fail_clippy { [true false null null] }
else if $fail_test { [true true false null] }
else if $fail_test_stdlib { [true true true false] }
else { [null null null null] }
like this if $no_fail {[true true true true]} else if $fail_fmt {[false null null null]} else if $fail_clippy {[true false null null]} else if $fail_test {[true true false null]} else if $fail_test_stdlib {[true true true false]} else {[null null null null]} i didn't expect it to align things, of course, but i also didn't expect it to put all that on one line. lol |
@fdncred, yes, it's definitely a style issue, I'm trying to fix it. Seems a lot rules about newlines in parentheses are still missing. |
@fdncred The style issue of |
@fdncred I think it's caused by my latest PR to tree-sitter-nu (the renaming). Since it is merged now, I'm going to update this repo. |
@fdncred Done. |
@fdncred I'm closing this issue for now, since it's getting a little bit too long to follow. |
First of all, I'm super excited for this. I realize it's not 100% yet because tree-sitter-nu isn't 100% yet but I'm still excited nonetheless.
When I tried to run
topiary fmt toolkit.nu
from the nushell repo root. It produces this error.I haven't dug in to see what's going on yet, but I thought I'd post it.
Thanks for working on this and supporting nushell! ❤️
The text was updated successfully, but these errors were encountered: