mirror of
https://github.com/nushell/nushell.git
synced 2025-07-01 15:11:52 +02:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
610e3911f6 | |||
ee9eddd851 | |||
c08e145501 | |||
c00853a473 | |||
79c7b20cfd | |||
89cbfd758d | |||
e6e6b730f3 | |||
0fe6a7c1b5 | |||
1794ad51bd | |||
fb197f562a | |||
91c270c14a | |||
3e93ae8af4 | |||
e06df124ca |
408
.github/workflows/release.yml
vendored
408
.github/workflows/release.yml
vendored
@ -3,7 +3,7 @@ name: Create Release Draft
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags: ['[0-9]+.[0-9]+.[0-9]+*']
|
||||
tags: ["[0-9]+.[0-9]+.[0-9]+*"]
|
||||
|
||||
jobs:
|
||||
linux:
|
||||
@ -29,96 +29,60 @@ jobs:
|
||||
command: build
|
||||
args: --release --all --features=extra
|
||||
|
||||
- name: Compress binaries (nu)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu
|
||||
# - name: Strip binaries (nu)
|
||||
# run: strip target/release/nu
|
||||
|
||||
- name: Compress binaries (nu_plugin_inc)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_inc
|
||||
|
||||
- name: Compress binaries (nu_plugin_match)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_match
|
||||
# - name: Strip binaries (nu_plugin_inc)
|
||||
# run: strip target/release/nu_plugin_inc
|
||||
|
||||
- name: Compress binaries (nu_plugin_textview)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_textview
|
||||
|
||||
- name: Compress binaries (nu_plugin_binaryview)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_binaryview
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_bar)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_bar
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_line)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_line
|
||||
# - name: Strip binaries (nu_plugin_match)
|
||||
# run: strip target/release/nu_plugin_match
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_bson)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_bson
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_sqlite)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_sqlite
|
||||
# - name: Strip binaries (nu_plugin_textview)
|
||||
# run: strip target/release/nu_plugin_textview
|
||||
|
||||
# - name: Strip binaries (nu_plugin_binaryview)
|
||||
# run: strip target/release/nu_plugin_binaryview
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_bar)
|
||||
# run: strip target/release/nu_plugin_chart_bar
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_line)
|
||||
# run: strip target/release/nu_plugin_chart_line
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_bson)
|
||||
# run: strip target/release/nu_plugin_from_bson
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_sqlite)
|
||||
# run: strip target/release/nu_plugin_from_sqlite
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_mp4)
|
||||
# run: strip target/release/nu_plugin_from_mp4
|
||||
|
||||
# - name: Strip binaries (nu_plugin_query_json)
|
||||
# run: strip target/release/nu_plugin_query_json
|
||||
|
||||
# - name: Strip binaries (nu_plugin_s3)
|
||||
# run: strip target/release/nu_plugin_s3
|
||||
|
||||
# - name: Strip binaries (nu_plugin_selector)
|
||||
# run: strip target/release/nu_plugin_selector
|
||||
|
||||
# - name: Strip binaries (nu_plugin_start)
|
||||
# run: strip target/release/nu_plugin_start
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_bson)
|
||||
# run: strip target/release/nu_plugin_to_bson
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_sqlite)
|
||||
# run: strip target/release/nu_plugin_to_sqlite
|
||||
|
||||
# - name: Strip binaries (nu_plugin_tree)
|
||||
# run: strip target/release/nu_plugin_tree
|
||||
|
||||
# - name: Strip binaries (nu_plugin_xpath)
|
||||
# run: strip target/release/nu_plugin_xpath
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_mp4)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_mp4
|
||||
|
||||
- name: Compress binaries (nu_plugin_query_json)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_query_json
|
||||
|
||||
- name: Compress binaries (nu_plugin_s3)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_s3
|
||||
|
||||
- name: Compress binaries (nu_plugin_selector)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_selector
|
||||
|
||||
- name: Compress binaries (nu_plugin_start)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_start
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_bson)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_bson
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_sqlite)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_sqlite
|
||||
|
||||
- name: Compress binaries (nu_plugin_tree)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_tree
|
||||
|
||||
- name: Compress binaries (nu_plugin_xpath)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_xpath
|
||||
|
||||
- name: Create output directory
|
||||
run: mkdir output
|
||||
|
||||
@ -161,95 +125,59 @@ jobs:
|
||||
command: build
|
||||
args: --release --all --features=extra
|
||||
|
||||
- name: Compress binaries (nu)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu
|
||||
# - name: Strip binaries (nu)
|
||||
# run: strip target/release/nu
|
||||
|
||||
- name: Compress binaries (nu_plugin_inc)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_inc
|
||||
|
||||
- name: Compress binaries (nu_plugin_match)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_match
|
||||
# - name: Strip binaries (nu_plugin_inc)
|
||||
# run: strip target/release/nu_plugin_inc
|
||||
|
||||
- name: Compress binaries (nu_plugin_textview)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_textview
|
||||
|
||||
- name: Compress binaries (nu_plugin_binaryview)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_binaryview
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_bar)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_bar
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_line)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_line
|
||||
# - name: Strip binaries (nu_plugin_match)
|
||||
# run: strip target/release/nu_plugin_match
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_bson)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_bson
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_sqlite)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_sqlite
|
||||
# - name: Strip binaries (nu_plugin_textview)
|
||||
# run: strip target/release/nu_plugin_textview
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_mp4)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_mp4
|
||||
|
||||
- name: Compress binaries (nu_plugin_query_json)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_query_json
|
||||
|
||||
- name: Compress binaries (nu_plugin_s3)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_s3
|
||||
|
||||
- name: Compress binaries (nu_plugin_selector)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_selector
|
||||
|
||||
- name: Compress binaries (nu_plugin_start)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_start
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_bson)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_bson
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_sqlite)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_sqlite
|
||||
|
||||
- name: Compress binaries (nu_plugin_tree)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_tree
|
||||
|
||||
- name: Compress binaries (nu_plugin_xpath)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_xpath
|
||||
# - name: Strip binaries (nu_plugin_binaryview)
|
||||
# run: strip target/release/nu_plugin_binaryview
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_bar)
|
||||
# run: strip target/release/nu_plugin_chart_bar
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_line)
|
||||
# run: strip target/release/nu_plugin_chart_line
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_bson)
|
||||
# run: strip target/release/nu_plugin_from_bson
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_sqlite)
|
||||
# run: strip target/release/nu_plugin_from_sqlite
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_mp4)
|
||||
# run: strip target/release/nu_plugin_from_mp4
|
||||
|
||||
# - name: Strip binaries (nu_plugin_query_json)
|
||||
# run: strip target/release/nu_plugin_query_json
|
||||
|
||||
# - name: Strip binaries (nu_plugin_s3)
|
||||
# run: strip target/release/nu_plugin_s3
|
||||
|
||||
# - name: Strip binaries (nu_plugin_selector)
|
||||
# run: strip target/release/nu_plugin_selector
|
||||
|
||||
# - name: Strip binaries (nu_plugin_start)
|
||||
# run: strip target/release/nu_plugin_start
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_bson)
|
||||
# run: strip target/release/nu_plugin_to_bson
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_sqlite)
|
||||
# run: strip target/release/nu_plugin_to_sqlite
|
||||
|
||||
# - name: Strip binaries (nu_plugin_tree)
|
||||
# run: strip target/release/nu_plugin_tree
|
||||
|
||||
# - name: Strip binaries (nu_plugin_xpath)
|
||||
# run: strip target/release/nu_plugin_xpath
|
||||
|
||||
- name: Create output directory
|
||||
run: mkdir output
|
||||
@ -295,95 +223,59 @@ jobs:
|
||||
command: build
|
||||
args: --release --all --features=extra
|
||||
|
||||
- name: Compress binaries (nu.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu.exe
|
||||
# - name: Strip binaries (nu.exe)
|
||||
# run: strip target/release/nu.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_inc.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_inc.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_match.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_match.exe
|
||||
# - name: Strip binaries (nu_plugin_inc.exe)
|
||||
# run: strip target/release/nu_plugin_inc.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_textview.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_textview.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_binaryview.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_binaryview.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_bar.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_bar.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_chart_line.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_chart_line.exe
|
||||
# - name: Strip binaries (nu_plugin_match.exe)
|
||||
# run: strip target/release/nu_plugin_match.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_bson.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_bson.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_sqlite.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_sqlite.exe
|
||||
# - name: Strip binaries (nu_plugin_textview.exe)
|
||||
# run: strip target/release/nu_plugin_textview.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_from_mp4.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_from_mp4.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_query_json.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_query_json.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_s3.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_s3.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_selector.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_selector.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_start.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_start.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_bson.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_bson.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_to_sqlite.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_to_sqlite.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_tree.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_tree.exe
|
||||
|
||||
- name: Compress binaries (nu_plugin_xpath.exe)
|
||||
uses: svenstaro/upx-action@v2
|
||||
with:
|
||||
file: target/release/nu_plugin_xpath.exe
|
||||
# - name: Strip binaries (nu_plugin_binaryview.exe)
|
||||
# run: strip target/release/nu_plugin_binaryview.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_bar.exe)
|
||||
# run: strip target/release/nu_plugin_chart_bar.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_chart_line.exe)
|
||||
# run: strip target/release/nu_plugin_chart_line.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_bson.exe)
|
||||
# run: strip target/release/nu_plugin_from_bson.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_sqlite.exe)
|
||||
# run: strip target/release/nu_plugin_from_sqlite.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_from_mp4.exe)
|
||||
# run: strip target/release/nu_plugin_from_mp4.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_query_json.exe)
|
||||
# run: strip target/release/nu_plugin_query_json.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_s3.exe)
|
||||
# run: strip target/release/nu_plugin_s3.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_selector.exe)
|
||||
# run: strip target/release/nu_plugin_selector.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_start.exe)
|
||||
# run: strip target/release/nu_plugin_start.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_bson.exe)
|
||||
# run: strip target/release/nu_plugin_to_bson.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_to_sqlite.exe)
|
||||
# run: strip target/release/nu_plugin_to_sqlite.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_tree.exe)
|
||||
# run: strip target/release/nu_plugin_tree.exe
|
||||
|
||||
# - name: Strip binaries (nu_plugin_xpath.exe)
|
||||
# run: strip target/release/nu_plugin_xpath.exe
|
||||
|
||||
- name: Create output directory
|
||||
run: mkdir output
|
||||
@ -545,7 +437,7 @@ jobs:
|
||||
with:
|
||||
name: windows-installer
|
||||
path: ./
|
||||
|
||||
|
||||
- name: Upload Windows installer
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
|
1106
Cargo.lock
generated
1106
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
60
Cargo.toml
60
Cargo.toml
@ -10,7 +10,7 @@ license = "MIT"
|
||||
name = "nu"
|
||||
readme = "README.md"
|
||||
repository = "https://github.com/nushell/nushell"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[workspace]
|
||||
members = ["crates/*/"]
|
||||
@ -18,34 +18,34 @@ members = ["crates/*/"]
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
nu-cli = { version = "0.40.0", path="./crates/nu-cli", default-features=false }
|
||||
nu-command = { version = "0.40.0", path="./crates/nu-command" }
|
||||
nu-completion = { version = "0.40.0", path="./crates/nu-completion" }
|
||||
nu-data = { version = "0.40.0", path="./crates/nu-data" }
|
||||
nu-engine = { version = "0.40.0", path="./crates/nu-engine" }
|
||||
nu-errors = { version = "0.40.0", path="./crates/nu-errors" }
|
||||
nu-parser = { version = "0.40.0", path="./crates/nu-parser" }
|
||||
nu-path = { version = "0.40.0", path="./crates/nu-path" }
|
||||
nu-plugin = { version = "0.40.0", path="./crates/nu-plugin" }
|
||||
nu-protocol = { version = "0.40.0", path="./crates/nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="./crates/nu-source" }
|
||||
nu-value-ext = { version = "0.40.0", path="./crates/nu-value-ext" }
|
||||
nu-cli = { version = "0.41.0", path="./crates/nu-cli", default-features=false }
|
||||
nu-command = { version = "0.41.0", path="./crates/nu-command" }
|
||||
nu-completion = { version = "0.41.0", path="./crates/nu-completion" }
|
||||
nu-data = { version = "0.41.0", path="./crates/nu-data" }
|
||||
nu-engine = { version = "0.41.0", path="./crates/nu-engine" }
|
||||
nu-errors = { version = "0.41.0", path="./crates/nu-errors" }
|
||||
nu-parser = { version = "0.41.0", path="./crates/nu-parser" }
|
||||
nu-path = { version = "0.41.0", path="./crates/nu-path" }
|
||||
nu-plugin = { version = "0.41.0", path="./crates/nu-plugin" }
|
||||
nu-protocol = { version = "0.41.0", path="./crates/nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="./crates/nu-source" }
|
||||
nu-value-ext = { version = "0.41.0", path="./crates/nu-value-ext" }
|
||||
|
||||
nu_plugin_binaryview = { version = "0.40.0", path="./crates/nu_plugin_binaryview", optional=true }
|
||||
nu_plugin_chart = { version = "0.40.0", path="./crates/nu_plugin_chart", optional=true }
|
||||
nu_plugin_from_bson = { version = "0.40.0", path="./crates/nu_plugin_from_bson", optional=true }
|
||||
nu_plugin_from_sqlite = { version = "0.40.0", path="./crates/nu_plugin_from_sqlite", optional=true }
|
||||
nu_plugin_inc = { version = "0.40.0", path="./crates/nu_plugin_inc", optional=true }
|
||||
nu_plugin_match = { version = "0.40.0", path="./crates/nu_plugin_match", optional=true }
|
||||
nu_plugin_query_json = { version = "0.40.0", path="./crates/nu_plugin_query_json", optional=true }
|
||||
nu_plugin_s3 = { version = "0.40.0", path="./crates/nu_plugin_s3", optional=true }
|
||||
nu_plugin_selector = { version = "0.40.0", path="./crates/nu_plugin_selector", optional=true }
|
||||
nu_plugin_start = { version = "0.40.0", path="./crates/nu_plugin_start", optional=true }
|
||||
nu_plugin_textview = { version = "0.40.0", path="./crates/nu_plugin_textview", optional=true }
|
||||
nu_plugin_to_bson = { version = "0.40.0", path="./crates/nu_plugin_to_bson", optional=true }
|
||||
nu_plugin_to_sqlite = { version = "0.40.0", path="./crates/nu_plugin_to_sqlite", optional=true }
|
||||
nu_plugin_tree = { version = "0.40.0", path="./crates/nu_plugin_tree", optional=true }
|
||||
nu_plugin_xpath = { version = "0.40.0", path="./crates/nu_plugin_xpath", optional=true }
|
||||
nu_plugin_binaryview = { version = "0.41.0", path="./crates/nu_plugin_binaryview", optional=true }
|
||||
nu_plugin_chart = { version = "0.41.0", path="./crates/nu_plugin_chart", optional=true }
|
||||
nu_plugin_from_bson = { version = "0.41.0", path="./crates/nu_plugin_from_bson", optional=true }
|
||||
nu_plugin_from_sqlite = { version = "0.41.0", path="./crates/nu_plugin_from_sqlite", optional=true }
|
||||
nu_plugin_inc = { version = "0.41.0", path="./crates/nu_plugin_inc", optional=true }
|
||||
nu_plugin_match = { version = "0.41.0", path="./crates/nu_plugin_match", optional=true }
|
||||
nu_plugin_query_json = { version = "0.41.0", path="./crates/nu_plugin_query_json", optional=true }
|
||||
nu_plugin_s3 = { version = "0.41.0", path="./crates/nu_plugin_s3", optional=true }
|
||||
nu_plugin_selector = { version = "0.41.0", path="./crates/nu_plugin_selector", optional=true }
|
||||
nu_plugin_start = { version = "0.41.0", path="./crates/nu_plugin_start", optional=true }
|
||||
nu_plugin_textview = { version = "0.41.0", path="./crates/nu_plugin_textview", optional=true }
|
||||
nu_plugin_to_bson = { version = "0.41.0", path="./crates/nu_plugin_to_bson", optional=true }
|
||||
nu_plugin_to_sqlite = { version = "0.41.0", path="./crates/nu_plugin_to_sqlite", optional=true }
|
||||
nu_plugin_tree = { version = "0.41.0", path="./crates/nu_plugin_tree", optional=true }
|
||||
nu_plugin_xpath = { version = "0.41.0", path="./crates/nu_plugin_xpath", optional=true }
|
||||
|
||||
# Required to bootstrap the main binary
|
||||
ctrlc = { version="3.1.7", optional=true }
|
||||
@ -53,7 +53,7 @@ futures = { version="0.3.12", features=["compat", "io-compat"] }
|
||||
itertools = "0.10.0"
|
||||
|
||||
[dev-dependencies]
|
||||
nu-test-support = { version = "0.40.0", path="./crates/nu-test-support" }
|
||||
nu-test-support = { version = "0.41.0", path="./crates/nu-test-support" }
|
||||
serial_test = "0.5.1"
|
||||
hamcrest2 = "0.3.0"
|
||||
rstest = "0.10.0"
|
||||
@ -89,7 +89,6 @@ extra = [
|
||||
"inc",
|
||||
"tree",
|
||||
"textview",
|
||||
"clipboard-cli",
|
||||
"trash-support",
|
||||
"uuid-support",
|
||||
"start",
|
||||
@ -113,7 +112,6 @@ textview = ["nu_plugin_textview"]
|
||||
binaryview = ["nu_plugin_binaryview"]
|
||||
bson = ["nu_plugin_from_bson", "nu_plugin_to_bson"]
|
||||
chart = ["nu_plugin_chart"]
|
||||
clipboard-cli = ["nu-command/clipboard-cli"]
|
||||
query-json = ["nu_plugin_query_json"]
|
||||
s3 = ["nu_plugin_s3"]
|
||||
selector = ["nu_plugin_selector"]
|
||||
|
@ -10,4 +10,4 @@ Foundational libraries are split into two kinds of crates:
|
||||
Plugins are likewise also split into two types:
|
||||
|
||||
* Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
|
||||
* Extra plugins - these plugins run a wide range of differnt capabilities like working with different file types, charting, viewing binary data, and more.
|
||||
* Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.
|
||||
|
@ -9,7 +9,7 @@ description = "Library for ANSI terminal colors and styles (bold, underline)"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-ansi-term"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
@ -4,24 +4,24 @@ description = "CLI for nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-cli"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
build = "build.rs"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-completion = { version = "0.40.0", path="../nu-completion" }
|
||||
nu-command = { version = "0.40.0", path="../nu-command" }
|
||||
nu-data = { version = "0.40.0", path="../nu-data" }
|
||||
nu-engine = { version = "0.40.0", path="../nu-engine" }
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-parser = { version = "0.40.0", path="../nu-parser" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.40.0", path="../nu-stream" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-completion = { version = "0.41.0", path="../nu-completion" }
|
||||
nu-command = { version = "0.41.0", path="../nu-command" }
|
||||
nu-data = { version = "0.41.0", path="../nu-data" }
|
||||
nu-engine = { version = "0.41.0", path="../nu-engine" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-parser = { version = "0.41.0", path="../nu-parser" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.41.0", path="../nu-stream" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
|
||||
indexmap ="1.6.1"
|
||||
log = "0.4.14"
|
||||
@ -29,13 +29,13 @@ pretty_env_logger = "0.4.0"
|
||||
strip-ansi-escapes = "0.1.0"
|
||||
rustyline = { version="9.0.0", optional=true }
|
||||
ctrlc = { version="3.1.7", optional=true }
|
||||
shadow-rs = { version="0.6", default-features=false, optional=true }
|
||||
shadow-rs = { version = "0.8.1", default-features = false, optional = true }
|
||||
serde = { version="1.0.123", features=["derive"] }
|
||||
serde_yaml = "0.8.16"
|
||||
lazy_static = "1.4.0"
|
||||
|
||||
[build-dependencies]
|
||||
shadow-rs = "0.6"
|
||||
shadow-rs = "0.8.1"
|
||||
|
||||
[features]
|
||||
default = ["shadow-rs"]
|
||||
|
@ -513,11 +513,6 @@ mod tests {
|
||||
let args = format!("nu --loglevel={}", level);
|
||||
ui.parse(&args)?;
|
||||
assert_eq!(ui.loglevel().unwrap(), Ok(level.to_string()));
|
||||
|
||||
let ui = cli_app();
|
||||
let args = format!("nu -l {}", level);
|
||||
ui.parse(&args)?;
|
||||
assert_eq!(ui.loglevel().unwrap(), Ok(level.to_string()));
|
||||
}
|
||||
|
||||
let ui = cli_app();
|
||||
@ -530,6 +525,17 @@ mod tests {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_be_login() -> Result<(), ShellError> {
|
||||
let ui = cli_app();
|
||||
ui.parse("nu -l")?;
|
||||
|
||||
let ui = cli_app();
|
||||
ui.parse("nu --login")?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn can_be_passed_nu_scripts() -> Result<(), ShellError> {
|
||||
let ui = cli_app();
|
||||
|
@ -5,35 +5,34 @@ description = "CLI for nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-command"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-data = { version = "0.40.0", path="../nu-data" }
|
||||
nu-engine = { version = "0.40.0", path="../nu-engine" }
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-json = { version = "0.40.0", path="../nu-json" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-parser = { version = "0.40.0", path="../nu-parser" }
|
||||
nu-plugin = { version = "0.40.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-serde = { version = "0.40.0", path="../nu-serde" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.40.0", path="../nu-stream" }
|
||||
nu-table = { version = "0.40.0", path="../nu-table" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-value-ext = { version = "0.40.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-pretty-hex = { version = "0.40.0", path="../nu-pretty-hex" }
|
||||
nu-data = { version = "0.41.0", path="../nu-data" }
|
||||
nu-engine = { version = "0.41.0", path="../nu-engine" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-json = { version = "0.41.0", path="../nu-json" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-parser = { version = "0.41.0", path="../nu-parser" }
|
||||
nu-plugin = { version = "0.41.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-serde = { version = "0.41.0", path="../nu-serde" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.41.0", path="../nu-stream" }
|
||||
nu-table = { version = "0.41.0", path="../nu-table" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
nu-pretty-hex = { version = "0.41.0", path="../nu-pretty-hex" }
|
||||
|
||||
url = "2.2.1"
|
||||
mime = "0.3.16"
|
||||
Inflector = "0.11"
|
||||
arboard = { version="1.1.0", optional=true }
|
||||
base64 = "0.13.0"
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { version = "0.3.0", features = ["serde"] }
|
||||
calamine = "0.18.0"
|
||||
chrono = { version="0.4.19", features=["serde"] }
|
||||
chrono-tz = "0.5.3"
|
||||
@ -56,7 +55,7 @@ lazy_static = "1.*"
|
||||
log = "0.4.14"
|
||||
md-5 = "0.9.1"
|
||||
meval = "0.2.0"
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
num-format = { version="0.4.0", features=["with-num-bigint"] }
|
||||
num-traits = "0.2.14"
|
||||
parking_lot = "0.11.1"
|
||||
@ -74,14 +73,14 @@ serde_urlencoded = "0.7.0"
|
||||
serde_yaml = "0.8.16"
|
||||
sha2 = "0.9.3"
|
||||
strip-ansi-escapes = "0.1.0"
|
||||
sysinfo = { version = "0.20.2", optional = true }
|
||||
sysinfo = { version = "0.21.1", optional = true }
|
||||
thiserror = "1.0.26"
|
||||
term = { version="0.7.0", optional=true }
|
||||
term_size = "0.3.2"
|
||||
titlecase = "1.1.0"
|
||||
tokio = { version = "1", features = ["rt-multi-thread"], optional = true }
|
||||
toml = "0.5.8"
|
||||
trash = { version="1.3.0", optional=true }
|
||||
trash = { version = "2.0.2", optional = true }
|
||||
unicode-segmentation = "1.8"
|
||||
uuid_crate = { package="uuid", version="0.8.2", features=["v4"], optional=true }
|
||||
which = { version="4.1.0", optional=true }
|
||||
@ -91,7 +90,8 @@ digest = "0.9.0"
|
||||
[dependencies.polars]
|
||||
version = "0.17.0"
|
||||
optional = true
|
||||
features = ["parquet", "json", "random", "pivot", "strings", "is_in", "temporal", "cum_agg", "rolling_window"]
|
||||
default-features = false
|
||||
features = ["docs", "zip_with", "csv-file", "temporal", "performant", "pretty_fmt", "dtype-slim", "parquet", "json", "random", "pivot", "strings", "is_in", "cum_agg", "rolling_window"]
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
umask = "1.0.0"
|
||||
@ -104,7 +104,7 @@ users = "0.11.0"
|
||||
# num-format = { version = "0.4", features = ["with-system-locale"] }
|
||||
|
||||
[build-dependencies]
|
||||
shadow-rs = "0.6"
|
||||
shadow-rs = "0.8.1"
|
||||
|
||||
[dev-dependencies]
|
||||
quickcheck = "1.0.3"
|
||||
@ -112,7 +112,6 @@ quickcheck_macros = "1.0.0"
|
||||
hamcrest2 = "0.3.0"
|
||||
|
||||
[features]
|
||||
clipboard-cli = ["arboard"]
|
||||
rustyline-support = ["rustyline"]
|
||||
stable = []
|
||||
trash-support = ["trash"]
|
||||
|
@ -1,7 +0,0 @@
|
||||
use derive_new::new;
|
||||
use nu_protocol::hir;
|
||||
|
||||
#[derive(new, Debug)]
|
||||
pub(crate) struct Command {
|
||||
pub(crate) args: hir::Call,
|
||||
}
|
@ -1,8 +1,10 @@
|
||||
use crate::prelude::*;
|
||||
use lazy_static::lazy_static;
|
||||
use nu_engine::{evaluate_baseline_expr, BufCodecReader};
|
||||
use nu_engine::{MaybeTextCodec, StringOrBinary};
|
||||
use nu_test_support::NATIVE_PATH_ENV_VAR;
|
||||
use parking_lot::Mutex;
|
||||
use regex::Regex;
|
||||
|
||||
#[allow(unused)]
|
||||
use std::env;
|
||||
@ -44,20 +46,16 @@ pub(crate) fn run_external_command(
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
fn trim_double_quotes(input: &str) -> String {
|
||||
fn trim_enclosing_quotes(input: &str) -> String {
|
||||
let mut chars = input.chars();
|
||||
|
||||
match (chars.next(), chars.next_back()) {
|
||||
(Some('"'), Some('"')) => chars.collect(),
|
||||
(Some('\''), Some('\'')) => chars.collect(),
|
||||
_ => input.to_string(),
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
fn escape_where_needed(input: &str) -> String {
|
||||
input.split(' ').join("\\ ").split('\'').join("\\'")
|
||||
}
|
||||
|
||||
fn run_with_stdin(
|
||||
command: ExternalCommand,
|
||||
context: &mut EvaluationContext,
|
||||
@ -115,15 +113,9 @@ fn run_with_stdin(
|
||||
#[cfg(not(windows))]
|
||||
{
|
||||
if !_is_literal {
|
||||
let escaped = escape_double_quotes(&arg);
|
||||
add_double_quotes(&escaped)
|
||||
arg
|
||||
} else {
|
||||
let trimmed = trim_double_quotes(&arg);
|
||||
if trimmed != arg {
|
||||
escape_where_needed(&trimmed)
|
||||
} else {
|
||||
trimmed
|
||||
}
|
||||
trim_enclosing_quotes(&arg)
|
||||
}
|
||||
}
|
||||
#[cfg(windows)]
|
||||
@ -131,7 +123,7 @@ fn run_with_stdin(
|
||||
if let Some(unquoted) = remove_quotes(&arg) {
|
||||
unquoted.to_string()
|
||||
} else {
|
||||
arg.to_string()
|
||||
arg
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -172,9 +164,29 @@ fn spawn_cmd_command(command: &ExternalCommand, args: &[String]) -> Command {
|
||||
process
|
||||
}
|
||||
|
||||
fn has_unsafe_shell_characters(arg: &str) -> bool {
|
||||
lazy_static! {
|
||||
static ref RE: Regex = Regex::new(r"[^\w@%+=:,./-]").expect("regex to be valid");
|
||||
}
|
||||
|
||||
RE.is_match(arg)
|
||||
}
|
||||
|
||||
fn shell_arg_escape(arg: &str) -> String {
|
||||
match arg {
|
||||
"" => String::from("''"),
|
||||
s if !has_unsafe_shell_characters(s) => String::from(s),
|
||||
_ => {
|
||||
let single_quotes_escaped = arg.split('\'').join("'\"'\"'");
|
||||
format!("'{}'", single_quotes_escaped)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Spawn a sh command with `sh -c args...`
|
||||
fn spawn_sh_command(command: &ExternalCommand, args: &[String]) -> Command {
|
||||
let cmd_with_args = vec![command.name.clone(), args.join(" ")].join(" ");
|
||||
let joined_and_escaped_arguments = args.iter().map(|arg| shell_arg_escape(arg)).join(" ");
|
||||
let cmd_with_args = vec![command.name.clone(), joined_and_escaped_arguments].join(" ");
|
||||
let mut process = Command::new("sh");
|
||||
process.arg("-c").arg(cmd_with_args);
|
||||
process
|
||||
|
@ -1,5 +1 @@
|
||||
mod dynamic;
|
||||
pub(crate) mod external;
|
||||
|
||||
#[allow(unused_imports)]
|
||||
pub(crate) use dynamic::Command as DynamicCommand;
|
||||
|
@ -15,6 +15,7 @@ impl WholeStreamCommand for Command {
|
||||
.switch("skip-plugins", "do not load plugins", None)
|
||||
.switch("no-history", "don't save history", None)
|
||||
.switch("perf", "show startup performance metrics", None)
|
||||
.switch("login", "start Nu as if it was a login shell", Some('l'))
|
||||
.named(
|
||||
"commands",
|
||||
SyntaxShape::String,
|
||||
@ -33,7 +34,7 @@ impl WholeStreamCommand for Command {
|
||||
"loglevel",
|
||||
SyntaxShape::String,
|
||||
"LEVEL: error, warn, info, debug, trace",
|
||||
Some('l'),
|
||||
None,
|
||||
)
|
||||
.named(
|
||||
"config-file",
|
||||
|
@ -221,11 +221,6 @@ fn features_enabled() -> Vec<String> {
|
||||
names.push("zip".to_string());
|
||||
}
|
||||
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
{
|
||||
names.push("clipboard-cli".to_string());
|
||||
}
|
||||
|
||||
#[cfg(feature = "trash-support")]
|
||||
{
|
||||
names.push("trash".to_string());
|
||||
|
@ -11,12 +11,6 @@ use nu_protocol::{
|
||||
|
||||
pub struct WithEnv;
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
struct WithEnvArgs {
|
||||
variable: Value,
|
||||
block: CapturedBlock,
|
||||
}
|
||||
|
||||
impl WholeStreamCommand for WithEnv {
|
||||
fn name(&self) -> &str {
|
||||
"with-env"
|
||||
|
@ -163,7 +163,7 @@ fn get_current_date() -> (i32, u32, u32) {
|
||||
|
||||
fn add_months_of_year_to_table(
|
||||
args: &CommandArgs,
|
||||
mut calendar_vec_deque: &mut VecDeque<Value>,
|
||||
calendar_vec_deque: &mut VecDeque<Value>,
|
||||
tag: &Tag,
|
||||
selected_year: i32,
|
||||
(start_month, end_month): (u32, u32),
|
||||
@ -181,7 +181,7 @@ fn add_months_of_year_to_table(
|
||||
|
||||
let add_month_to_table_result = add_month_to_table(
|
||||
args,
|
||||
&mut calendar_vec_deque,
|
||||
calendar_vec_deque,
|
||||
tag,
|
||||
selected_year,
|
||||
month_number,
|
||||
|
@ -170,7 +170,7 @@ fn action(
|
||||
Ok(UntaggedValue::string(gradient_string).into_value(tag))
|
||||
}
|
||||
(None, Some(fg_end), None, Some(bg_end)) => {
|
||||
// missin fg_start and bg_start, so assume black
|
||||
// missing fg_start and bg_start, so assume black
|
||||
let fg_start = Rgb::new(0, 0, 0);
|
||||
let bg_start = Rgb::new(0, 0, 0);
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
|
@ -1,105 +0,0 @@
|
||||
use crate::prelude::*;
|
||||
|
||||
use nu_engine::WholeStreamCommand;
|
||||
use nu_errors::ShellError;
|
||||
use nu_protocol::{Signature, Value};
|
||||
|
||||
use arboard::Clipboard;
|
||||
|
||||
pub struct Clip;
|
||||
|
||||
impl WholeStreamCommand for Clip {
|
||||
fn name(&self) -> &str {
|
||||
"clip"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("clip")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Copy the contents of the pipeline to the copy/paste buffer."
|
||||
}
|
||||
|
||||
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
clip(args)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![
|
||||
Example {
|
||||
description: "Save text to the clipboard",
|
||||
example: "echo 'secret value' | clip",
|
||||
result: None,
|
||||
},
|
||||
Example {
|
||||
description: "Save numbers to the clipboard",
|
||||
example: "random integer 10000000..99999999 | clip",
|
||||
result: None,
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn clip(args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
let input = args.input;
|
||||
let name = args.call_info.name_tag;
|
||||
let values: Vec<Value> = input.collect();
|
||||
|
||||
if let Ok(mut clip_context) = Clipboard::new() {
|
||||
let mut new_copy_data = String::new();
|
||||
|
||||
if !values.is_empty() {
|
||||
let mut first = true;
|
||||
for i in &values {
|
||||
if !first {
|
||||
new_copy_data.push('\n');
|
||||
} else {
|
||||
first = false;
|
||||
}
|
||||
|
||||
let string: String = i.convert_to_string();
|
||||
if string.is_empty() {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Unable to convert to string",
|
||||
"Unable to convert to string",
|
||||
name,
|
||||
));
|
||||
}
|
||||
|
||||
new_copy_data.push_str(&string);
|
||||
}
|
||||
}
|
||||
|
||||
match clip_context.set_text(new_copy_data) {
|
||||
Ok(_) => {}
|
||||
Err(_) => {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Could not set contents of clipboard",
|
||||
"could not set contents of clipboard",
|
||||
name,
|
||||
));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return Err(ShellError::labeled_error(
|
||||
"Could not open clipboard",
|
||||
"could not open clipboard",
|
||||
name,
|
||||
));
|
||||
}
|
||||
Ok(ActionStream::empty())
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Clip;
|
||||
use super::ShellError;
|
||||
|
||||
#[test]
|
||||
fn examples_work_as_expected() -> Result<(), ShellError> {
|
||||
use crate::examples::test as test_examples;
|
||||
|
||||
test_examples(Clip {})
|
||||
}
|
||||
}
|
@ -1,13 +1,9 @@
|
||||
mod ansi;
|
||||
mod benchmark;
|
||||
mod clear;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
mod clip;
|
||||
mod du;
|
||||
mod exec;
|
||||
mod kill;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
mod paste;
|
||||
mod pwd;
|
||||
mod run_external;
|
||||
mod sleep;
|
||||
@ -17,13 +13,9 @@ mod which_;
|
||||
pub use ansi::*;
|
||||
pub use benchmark::Benchmark;
|
||||
pub use clear::Clear;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
pub use clip::Clip;
|
||||
pub use du::Du;
|
||||
pub use exec::Exec;
|
||||
pub use kill::Kill;
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
pub use paste::Paste;
|
||||
pub use pwd::Pwd;
|
||||
pub use run_external::RunExternalCommand;
|
||||
pub use sleep::Sleep;
|
||||
|
@ -1,61 +0,0 @@
|
||||
use crate::prelude::*;
|
||||
|
||||
use nu_engine::WholeStreamCommand;
|
||||
use nu_errors::ShellError;
|
||||
use nu_protocol::{Primitive, ReturnSuccess, Signature, UntaggedValue};
|
||||
|
||||
use arboard::Clipboard;
|
||||
|
||||
pub struct Paste;
|
||||
|
||||
impl WholeStreamCommand for Paste {
|
||||
fn name(&self) -> &str {
|
||||
"paste"
|
||||
}
|
||||
|
||||
fn signature(&self) -> Signature {
|
||||
Signature::build("paste")
|
||||
}
|
||||
|
||||
fn usage(&self) -> &str {
|
||||
"Paste contents from the clipboard"
|
||||
}
|
||||
|
||||
fn run_with_actions(&self, args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
paste(args)
|
||||
}
|
||||
|
||||
fn examples(&self) -> Vec<Example> {
|
||||
vec![Example {
|
||||
description: "Paste text from your clipboard",
|
||||
example: "echo 'secret value' | clip | paste",
|
||||
result: Some(vec![UntaggedValue::Primitive(Primitive::String(
|
||||
"secret value".to_owned(),
|
||||
))
|
||||
.into_value(Tag::default())]),
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
pub fn paste(args: CommandArgs) -> Result<ActionStream, ShellError> {
|
||||
let name = args.call_info.name_tag;
|
||||
|
||||
if let Ok(mut clip_context) = Clipboard::new() {
|
||||
match clip_context.get_text() {
|
||||
Ok(out) => Ok(ActionStream::one(ReturnSuccess::value(
|
||||
UntaggedValue::Primitive(Primitive::String(out)),
|
||||
))),
|
||||
Err(_) => Err(ShellError::labeled_error(
|
||||
"Could not get contents of clipboard",
|
||||
"could not get contents of clipboard",
|
||||
name,
|
||||
)),
|
||||
}
|
||||
} else {
|
||||
Err(ShellError::labeled_error(
|
||||
"Could not open clipboard",
|
||||
"could not open clipboard",
|
||||
name,
|
||||
))
|
||||
}
|
||||
}
|
@ -6,12 +6,6 @@ use nu_protocol::{Dictionary, Signature, UntaggedValue};
|
||||
|
||||
pub struct TermSize;
|
||||
|
||||
#[derive(Deserialize, Clone)]
|
||||
pub struct TermSizeArgs {
|
||||
wide: bool,
|
||||
tall: bool,
|
||||
}
|
||||
|
||||
impl WholeStreamCommand for TermSize {
|
||||
fn name(&self) -> &str {
|
||||
"term size"
|
||||
|
@ -144,7 +144,7 @@ fn trim(s: &str, char_: Option<char>, closure_flags: &ClosureFlags) -> String {
|
||||
let re_str = format!("{}{{2,}}", reg);
|
||||
// create the regex
|
||||
let re = regex::Regex::new(&re_str).expect("Error creating regular expression");
|
||||
// replace all mutliple occurances with single occurences represented by r
|
||||
// replace all multiple occurrences with single occurrences represented by r
|
||||
let new_str = re.replace_all(&return_string, r.to_string());
|
||||
// update the return string so the next loop has the latest changes
|
||||
return_string = new_str.to_string();
|
||||
|
@ -366,14 +366,6 @@ pub fn create_default_context(interactive: bool) -> Result<EvaluationContext, Bo
|
||||
whole_stream_command(DataFrameCumulative),
|
||||
whole_stream_command(DataFrameRename),
|
||||
]);
|
||||
|
||||
#[cfg(feature = "clipboard-cli")]
|
||||
{
|
||||
context.add_commands(vec![
|
||||
whole_stream_command(crate::commands::Clip),
|
||||
whole_stream_command(crate::commands::Paste),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(context)
|
||||
|
@ -47,3 +47,21 @@ fn writes_out_csv() {
|
||||
assert!(actual.contains("nu,0.14,A new type of shell,MIT,2018"));
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn save_append_will_create_file_if_not_exists() {
|
||||
Playground::setup("save_test_3", |dirs, sandbox| {
|
||||
sandbox.with_files(vec![]);
|
||||
|
||||
let expected_file = dirs.test().join("new-file.txt");
|
||||
|
||||
nu!(
|
||||
cwd: dirs.root(),
|
||||
r#"echo hello | save --raw --append save_test_3/new-file.txt"#,
|
||||
);
|
||||
|
||||
let actual = file_contents(expected_file);
|
||||
println!("{}", actual);
|
||||
assert!(actual == "hello");
|
||||
})
|
||||
}
|
||||
|
@ -4,19 +4,19 @@ description = "Completions for nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-completion"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-engine = { version = "0.40.0", path="../nu-engine" }
|
||||
nu-data = { version = "0.40.0", path="../nu-data" }
|
||||
nu-parser = { version = "0.40.0", path="../nu-parser" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-engine = { version = "0.41.0", path="../nu-engine" }
|
||||
nu-data = { version = "0.41.0", path="../nu-data" }
|
||||
nu-parser = { version = "0.41.0", path="../nu-parser" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
|
@ -4,13 +4,13 @@ description = "CLI for nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-data"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
byte-unit = "4.0.9"
|
||||
chrono = "0.4.19"
|
||||
common-path = "1.0.0"
|
||||
@ -19,7 +19,7 @@ directories-next = "2.0.0"
|
||||
getset = "0.1.1"
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
log = "0.4.14"
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
num-format = "0.4.0"
|
||||
num-traits = "0.2.14"
|
||||
serde = { version="1.0.123", features=["derive"] }
|
||||
@ -27,14 +27,14 @@ sha2 = "0.9.3"
|
||||
sys-locale = "0.1.0"
|
||||
toml = "0.5.8"
|
||||
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-table = { version = "0.40.0", path="../nu-table" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-value-ext = { version = "0.40.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-table = { version = "0.41.0", path="../nu-table" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
|
||||
[features]
|
||||
dataframe = ["nu-protocol/dataframe"]
|
||||
|
@ -4,25 +4,25 @@ description = "Core commands for nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-engine"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[dependencies]
|
||||
nu-data = { version = "0.40.0", path="../nu-data" }
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-parser = { version = "0.40.0", path="../nu-parser" }
|
||||
nu-plugin = { version = "0.40.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.40.0", path="../nu-stream" }
|
||||
nu-value-ext = { version = "0.40.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-data = { version = "0.41.0", path="../nu-data" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-parser = { version = "0.41.0", path="../nu-parser" }
|
||||
nu-plugin = { version = "0.41.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-stream = { version = "0.41.0", path="../nu-stream" }
|
||||
nu-value-ext = { version = "0.41.0", path="../nu-value-ext" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
|
||||
trash = { version="1.3.0", optional=true }
|
||||
trash = { version = "2.0.2", optional = true }
|
||||
which = { version="4.0.2", optional=true }
|
||||
codespan-reporting = "0.11.0"
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
bytes = "1.1.0"
|
||||
chrono = { version="0.4.19", features=["serde"] }
|
||||
derive-new = "0.5.8"
|
||||
@ -36,7 +36,7 @@ indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
itertools = "0.10.0"
|
||||
lazy_static = "1.*"
|
||||
log = "0.4.14"
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
parking_lot = "0.11.1"
|
||||
rayon = "1.5.0"
|
||||
serde = { version="1.0.123", features=["derive"] }
|
||||
@ -50,7 +50,7 @@ umask = "1.0.0"
|
||||
users = "0.11.0"
|
||||
|
||||
[dev-dependencies]
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
hamcrest2 = "0.3.0"
|
||||
|
||||
[features]
|
||||
|
@ -1,8 +1,10 @@
|
||||
# Nu-Engine
|
||||
|
||||
Nu-engine handles most of the core logic of nushell. For example, engine handles:
|
||||
- Passing of data between commands
|
||||
- Evaluating a commands return values
|
||||
- Loading of user configurations
|
||||
|
||||
- Passing of data between commands
|
||||
- Evaluating a commands return values
|
||||
- Loading of user configurations
|
||||
|
||||
## Top level introduction
|
||||
The following topics shall give the reader a top level understanding how various topics are handled in nushell.
|
||||
|
@ -8,22 +8,13 @@ use std::collections::HashMap;
|
||||
|
||||
const COMMANDS_DOCS_DIR: &str = "docs/commands";
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct DocumentationConfig {
|
||||
no_subcommands: bool,
|
||||
no_color: bool,
|
||||
brief: bool,
|
||||
}
|
||||
|
||||
impl Default for DocumentationConfig {
|
||||
fn default() -> Self {
|
||||
DocumentationConfig {
|
||||
no_subcommands: false,
|
||||
no_color: false,
|
||||
brief: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn generate_doc(name: &str, scope: &Scope) -> IndexMap<String, Value> {
|
||||
let mut row_entries = IndexMap::new();
|
||||
let command = scope
|
||||
|
@ -60,7 +60,7 @@ pub fn nu(scope: &Scope, ctx: &EvaluationContext) -> Result<Value, ShellError> {
|
||||
// std::env::vars(), rather than the case-sensitive Environment.GetEnvironmentVariables() of .NET that PowerShell
|
||||
// uses.
|
||||
//
|
||||
// For now, we work around the discrepency as best we can by merging the two into what is shown to the user as the
|
||||
// For now, we work around the discrepancy as best we can by merging the two into what is shown to the user as the
|
||||
// 'path' column of `$nu`
|
||||
let mut table = vec![];
|
||||
for v in env {
|
||||
|
@ -884,7 +884,7 @@ impl Shell for FilesystemShell {
|
||||
) -> Result<OutputStream, ShellError> {
|
||||
let mut options = OpenOptions::new();
|
||||
if append {
|
||||
options.append(true)
|
||||
options.append(true).create(true)
|
||||
} else {
|
||||
options.write(true).create(true).truncate(true)
|
||||
};
|
||||
|
@ -34,7 +34,7 @@ impl FileStructure {
|
||||
self.resources
|
||||
.iter()
|
||||
.map(|f| (PathBuf::from(&f.loc), f.at))
|
||||
.map(|f| to(f))
|
||||
.map(to)
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
@ -238,7 +238,7 @@ impl Default for Theme {
|
||||
variable: ThemeColor(Color::Purple),
|
||||
whitespace: ThemeColor(Color::White),
|
||||
word: ThemeColor(Color::Green),
|
||||
// These should really be Syles and not colors
|
||||
// These should really be Styles and not colors
|
||||
// leave this here for the next change to make
|
||||
// ThemeColor, ThemeStyle.
|
||||
// open_delimiter: ThemeColor(Color::White.normal()),
|
||||
|
@ -597,7 +597,7 @@ impl VarSyntaxShapeDeductor {
|
||||
}
|
||||
Expression::Table(header, _rows) => {
|
||||
self.infer_shapes_in_table_header(header)?;
|
||||
// Shapes within columns can be heterogenous as long as
|
||||
// Shapes within columns can be heterogeneous as long as
|
||||
// https://github.com/nushell/rfcs/pull/3
|
||||
// didn't land
|
||||
// self.infer_shapes_in_rows(_rows)?;
|
||||
|
@ -4,20 +4,20 @@ description = "Core error subsystem for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-errors"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
codespan-reporting = { version="0.11.0", features=["serialization"] }
|
||||
derive-new = "0.5.8"
|
||||
getset = "0.1.1"
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
num-traits = "0.2.14"
|
||||
serde = { version="1.0.123", features=["derive"] }
|
||||
|
||||
|
@ -4,7 +4,7 @@ description = "Fork of serde-hjson"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-json"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
@ -20,6 +20,6 @@ lazy_static = "1"
|
||||
linked-hash-map = { version="0.5", optional=true }
|
||||
|
||||
[dev-dependencies]
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
serde_json = "1.0.39"
|
||||
|
@ -925,11 +925,8 @@ fn escape_char<W>(wr: &mut W, value: char) -> Result<()>
|
||||
where
|
||||
W: io::Write,
|
||||
{
|
||||
// FIXME: this allocation is required in order to be compatible with stable
|
||||
// rust, which doesn't support encoding a `char` into a stack buffer.
|
||||
let mut s = String::new();
|
||||
s.push(value);
|
||||
escape_bytes(wr, s.as_bytes())
|
||||
let mut scratch = [0_u8; 4];
|
||||
escape_bytes(wr, value.encode_utf8(&mut scratch).as_bytes())
|
||||
}
|
||||
|
||||
fn fmt_f32_or_null<W>(wr: &mut W, value: f32) -> Result<()>
|
||||
|
@ -4,23 +4,23 @@ description = "Nushell parser"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-parser"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
derive-new = "0.5.8"
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
log = "0.4"
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
itertools = "0.10.0"
|
||||
smart-default = "0.6.0"
|
||||
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-data = { version = "0.40.0", path="../nu-data" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-test-support = { version = "0.40.0", path="../nu-test-support" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-data = { version = "0.41.0", path="../nu-data" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
nu-test-support = { version = "0.41.0", path="../nu-test-support" }
|
||||
|
||||
[features]
|
||||
stable = []
|
||||
|
@ -132,7 +132,7 @@ mod tests {
|
||||
|
||||
match spec {
|
||||
NamedType::Optional(_, _) => {}
|
||||
_ => panic!("optional flag didn't parse succesfully"),
|
||||
_ => panic!("optional flag didn't parse successfully"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -901,7 +901,7 @@ fn parse_arg(
|
||||
return parse_dollar_expr(lite_arg, scope);
|
||||
}
|
||||
|
||||
// before anything else, try to see if this is a number in paranthesis
|
||||
// before anything else, try to see if this is a number in parenthesis
|
||||
if lite_arg.item.starts_with('(') {
|
||||
return parse_full_column_path(lite_arg, scope);
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ description = "Path handling library for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-path"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[dependencies]
|
||||
dirs-next = "2.0.0"
|
||||
|
@ -19,7 +19,7 @@ fn handle_dots_push(string: &mut String, count: u8) {
|
||||
string.pop(); // remove last '/'
|
||||
}
|
||||
|
||||
/// Expands any occurence of more than two dots into a sequence of ../ (or ..\ on windows), e.g.,
|
||||
/// Expands any occurrence of more than two dots into a sequence of ../ (or ..\ on windows), e.g.,
|
||||
/// "..." into "../..", "...." into "../../../", etc.
|
||||
pub fn expand_ndots(path: impl AsRef<Path>) -> PathBuf {
|
||||
// Check if path is valid UTF-8 and if not, return it as it is to avoid breaking it via string
|
||||
|
@ -4,17 +4,17 @@ description = "Nushell Plugin"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-plugin"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-test-support = { path="../nu-test-support", version = "0.40.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
nu-test-support = { path="../nu-test-support", version = "0.41.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" }
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
serde = { version="1.0", features=["derive"] }
|
||||
serde_json = "1.0"
|
||||
|
@ -4,7 +4,7 @@ description = "Pretty hex dump of bytes slice in the common style."
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-pretty-hex"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
@ -16,7 +16,7 @@ name = "nu_pretty_hex"
|
||||
path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
nu-ansi-term = { path="../nu-ansi-term", version = "0.40.0" }
|
||||
nu-ansi-term = { path="../nu-ansi-term", version = "0.41.0" }
|
||||
rand = "0.8.3"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -4,13 +4,13 @@ description = "Core values and protocols for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-protocol"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
byte-unit = "4.0.9"
|
||||
chrono = { version="0.4.19", features=["serde"] }
|
||||
chrono-humanize = "0.2.1"
|
||||
@ -18,9 +18,9 @@ derive-new = "0.5.8"
|
||||
getset = "0.1.1"
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
log = "0.4.14"
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
num-bigint = { version = "0.4.3", features = ["serde"] }
|
||||
num-integer = "0.1.44"
|
||||
num-traits = "0.2.14"
|
||||
serde = { version="1.0", features=["derive"] }
|
||||
@ -29,7 +29,8 @@ serde_bytes = "0.11.5"
|
||||
[dependencies.polars]
|
||||
version = "0.17.0"
|
||||
optional = true
|
||||
features = ["default", "serde", "rows", "strings", "checked_arithmetic", "object", "dtype-date", "dtype-datetime", "dtype-time"]
|
||||
default-features = false
|
||||
features = ["docs", "zip_with", "csv-file", "temporal", "performant", "pretty_fmt", "dtype-slim", "serde", "rows", "strings", "checked_arithmetic", "object", "dtype-date", "dtype-datetime", "dtype-time"]
|
||||
|
||||
[features]
|
||||
dataframe = ["polars"]
|
||||
|
@ -290,7 +290,7 @@ impl Primitive {
|
||||
.expect("Internal error: conversion from u32 failed"),
|
||||
);
|
||||
let secs = match secs.to_i64() {
|
||||
//The duration crate doesnt accept seconds bigger than i64::MAX / 1000
|
||||
//The duration crate doesn't accept seconds bigger than i64::MAX / 1000
|
||||
Some(secs) => match secs.checked_mul(1000) {
|
||||
Some(_) => secs,
|
||||
None => {
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "nu-serde"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
edition = "2018"
|
||||
authors = ["The Nu Project Contributors"]
|
||||
description = "Turn any value into a nu-protocol::Value with serde"
|
||||
@ -9,9 +9,9 @@ repository = "https://github.com/nushell/nushell"
|
||||
documentation = "https://docs.rs/nu-serde"
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
nu-protocol = { version = "0.40.0", path = "../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path = "../nu-source" }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
nu-protocol = { version = "0.41.0", path = "../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path = "../nu-source" }
|
||||
serde = "1"
|
||||
thiserror = "1"
|
||||
|
||||
|
@ -4,7 +4,7 @@ description = "A source string characterizer for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-source"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
@ -4,12 +4,12 @@ description = "Nushell stream"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-stream"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
|
||||
[features]
|
||||
stable = []
|
||||
|
@ -4,7 +4,7 @@ description = "Nushell table printing"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-table"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
[[bin]]
|
||||
@ -13,7 +13,7 @@ path = "src/main.rs"
|
||||
|
||||
[dependencies]
|
||||
atty = "0.2.14"
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
|
||||
regex = "1.4"
|
||||
strip-ansi-escapes = "0.1.1"
|
||||
|
@ -4,22 +4,22 @@ description = "Support for writing Nushell tests"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-test-support"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-path = { version = "0.40.0", path="../nu-path" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-path = { version = "0.41.0", path="../nu-path" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
chrono = "0.4.19"
|
||||
getset = "0.1.1"
|
||||
glob = "0.3.0"
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
num-bigint = { version="0.3.1", features=["serde"] }
|
||||
num-bigint = { version="0.4.3", features=["serde"] }
|
||||
tempfile = "3.2.0"
|
||||
hamcrest2 = "0.3.0"
|
||||
|
@ -33,7 +33,7 @@ pub struct NuError {
|
||||
pub output: Option<Outcome>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct NuProcess {
|
||||
pub arguments: Vec<OsString>,
|
||||
pub environment_vars: Vec<EnvironmentVariable>,
|
||||
@ -52,16 +52,6 @@ impl fmt::Display for NuProcess {
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for NuProcess {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
arguments: vec![],
|
||||
environment_vars: Vec::default(),
|
||||
cwd: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl NuProcess {
|
||||
pub fn arg<T: AsRef<OsStr>>(&mut self, arg: T) -> &mut Self {
|
||||
self.arguments.push(arg.as_ref().to_os_string());
|
||||
|
@ -4,15 +4,15 @@ description = "Extension traits for values in Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu-value-ext"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
itertools = "0.10.0"
|
||||
|
@ -4,7 +4,7 @@ description = "A binary viewer plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_binaryview"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
@ -13,12 +13,12 @@ doctest = false
|
||||
crossterm = "0.19"
|
||||
image = { version = "0.23.14", default_features = false, features = ["png", "jpeg"] }
|
||||
neso = "0.5.0"
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-ansi-term = { version = "0.40.0", path="../nu-ansi-term" }
|
||||
nu-pretty-hex = { version = "0.40.0", path="../nu-pretty-hex" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
nu-ansi-term = { version = "0.41.0", path="../nu-ansi-term" }
|
||||
nu-pretty-hex = { version = "0.41.0", path="../nu-pretty-hex" }
|
||||
rawkey = "0.1.3"
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -4,18 +4,18 @@ description = "A plugin to display charts"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_chart"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-data = { path="../nu-data", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.40.0" }
|
||||
nu-data = { path="../nu-data", version = "0.41.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" }
|
||||
|
||||
crossterm = "0.19.0"
|
||||
tui = { version="0.15.0", default-features=false, features=["crossterm"] }
|
||||
|
@ -20,8 +20,7 @@ const DEFAULT_LINE_COLORS: [Color; 5] = [
|
||||
];
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Line<'a> {
|
||||
title: &'a str,
|
||||
pub struct Line {
|
||||
x_labels: Vec<String>,
|
||||
x_range: [f64; 2],
|
||||
y_range: [f64; 2],
|
||||
@ -29,10 +28,9 @@ pub struct Line<'a> {
|
||||
data: Vec<Vec<(f64, f64)>>,
|
||||
}
|
||||
|
||||
impl<'a> Line<'a> {
|
||||
pub fn from_model(model: &'a Model) -> Result<Line<'a>, ShellError> {
|
||||
impl<'a> Line {
|
||||
pub fn from_model(model: &'a Model) -> Result<Line, ShellError> {
|
||||
Ok(Line {
|
||||
title: "Line Chart",
|
||||
x_labels: model.labels.x.to_vec(),
|
||||
x_range: [
|
||||
model.ranges.0.start.as_u64()? as f64,
|
||||
|
@ -4,17 +4,17 @@ description = "A converter plugin to the bson format for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_from_bson"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
bson = { version = "2.0.1", features = [ "chrono-0_4" ] }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -4,16 +4,16 @@ description = "A converter plugin to the mp4 format for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_from_mp4"
|
||||
version = "0.1.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
tempfile = "3.2.0"
|
||||
mp4 = "0.9.0"
|
||||
|
||||
|
@ -4,21 +4,21 @@ description = "A converter plugin to the bson format for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_from_sqlite"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
tempfile = "3.2.0"
|
||||
|
||||
[dependencies.rusqlite]
|
||||
features = ["bundled", "blob"]
|
||||
version = "0.25.3"
|
||||
version = "0.26.1"
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -61,7 +61,7 @@ pub fn convert_sqlite_file_to_nu_value(
|
||||
|
||||
fn convert_sqlite_row_to_nu_value(row: &Row, tag: impl Into<Tag> + Clone) -> Value {
|
||||
let mut collected = TaggedDictBuilder::new(tag.clone());
|
||||
for (i, c) in row.column_names().iter().enumerate() {
|
||||
for (i, c) in row.as_ref().column_names().iter().enumerate() {
|
||||
collected.insert_value(
|
||||
c.to_string(),
|
||||
convert_sqlite_value_to_nu_value(row.get_ref_unwrap(i), tag.clone()),
|
||||
|
@ -4,18 +4,18 @@ description = "A version incrementer plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_inc"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-test-support = { path="../nu-test-support", version = "0.40.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
nu-test-support = { path="../nu-test-support", version = "0.41.0" }
|
||||
nu-value-ext = { path="../nu-value-ext", version = "0.41.0" }
|
||||
|
||||
semver = "0.11.0"
|
||||
|
||||
|
@ -4,15 +4,15 @@ description = "A regex match plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_match"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
regex = "1.4.3"
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -4,14 +4,14 @@ description = "query json files with gjson"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_query_json"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
gjson = "0.7.1"
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-plugin = { version = "0.40.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
gjson = "0.8.0"
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-plugin = { version = "0.41.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
|
@ -4,17 +4,17 @@ description = "An S3 plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_s3"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
futures = { version="0.3.12", features=["compat", "io-compat"] }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
s3handler = "0.7"
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
s3handler = "0.7.5"
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -4,17 +4,17 @@ description = "web scraping using css selector"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_selector"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
scraper = "0.12.0"
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-plugin = { version = "0.40.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-plugin = { version = "0.41.0", path="../nu-plugin" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
|
||||
[dev-dependencies]
|
||||
indexmap = { version="1.7", features=["serde-1"] }
|
||||
|
@ -208,7 +208,7 @@ pub fn css(selector: &str) -> ScraperSelector {
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
const SIMPLE_LIST: &'static str = r#"
|
||||
const SIMPLE_LIST: &str = r#"
|
||||
<ul>
|
||||
<li>Coffee</li>
|
||||
<li>Tea</li>
|
||||
|
@ -4,17 +4,17 @@ description = "A plugin to open files/URLs directly from Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_start"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
glob = "0.3.0"
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
url = "2.2.0"
|
||||
webbrowser = "0.5.5"
|
||||
|
||||
@ -22,5 +22,5 @@ webbrowser = "0.5.5"
|
||||
open = "1.4.0"
|
||||
|
||||
[build-dependencies]
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
|
@ -4,19 +4,19 @@ description = "Text viewer plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_textview"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-data = { path="../nu-data", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-data = { path="../nu-data", version = "0.41.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
|
||||
bat = { version="0.18", features=["regex-fancy", "paging", "git"] }
|
||||
bat = { version="0.18", default-features = false, features=["regex-fancy", "paging", "git"] }
|
||||
term_size = "0.3.2"
|
||||
url = "2.2.0"
|
||||
|
||||
|
@ -4,17 +4,17 @@ description = "A converter plugin to the bson format for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_to_bson"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
bson = { version = "2.0.1", features = [ "chrono-0_4" ] }
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
num-traits = "0.2.14"
|
||||
|
||||
[features]
|
||||
|
@ -61,7 +61,7 @@ pub fn value_to_bson_value(v: &Value) -> Result<Bson, ShellError> {
|
||||
UntaggedValue::Primitive(Primitive::FilePath(s)) => Bson::String(s.display().to_string()),
|
||||
UntaggedValue::Table(l) => Bson::Array(
|
||||
l.iter()
|
||||
.map(|x| value_to_bson_value(x))
|
||||
.map(value_to_bson_value)
|
||||
.collect::<Result<_, _>>()?,
|
||||
),
|
||||
UntaggedValue::Block(_) | UntaggedValue::Primitive(Primitive::Range(_)) => Bson::Null,
|
||||
|
@ -4,21 +4,21 @@ description = "A converter plugin to the SQLite format for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_to_sqlite"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
hex = "0.4.2"
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
nu-source = { path="../nu-source", version = "0.40.0" }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
nu-source = { path="../nu-source", version = "0.41.0" }
|
||||
tempfile = "3.2.0"
|
||||
|
||||
[dependencies.rusqlite]
|
||||
features = ["bundled", "blob"]
|
||||
version = "0.25.3"
|
||||
version = "0.26.1"
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -4,17 +4,17 @@ description = "Tree viewer plugin for Nushell"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_tree"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
derive-new = "0.5.8"
|
||||
nu-errors = { path="../nu-errors", version = "0.40.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.40.0" }
|
||||
ptree = { version = "0.3.1", default-features = false }
|
||||
nu-errors = { path="../nu-errors", version = "0.41.0" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { path="../nu-protocol", version = "0.41.0" }
|
||||
ptree = { version = "0.4.0", default-features = false }
|
||||
|
||||
|
||||
[build-dependencies]
|
||||
|
@ -47,7 +47,7 @@ impl TreeView {
|
||||
_ => value.clone(),
|
||||
};
|
||||
builder = builder.begin_child(desc.clone());
|
||||
Self::from_value_helper(&value, &mut builder);
|
||||
Self::from_value_helper(&value, builder);
|
||||
builder = builder.end_child();
|
||||
//entries.push((desc.name.clone(), value.borrow().copy()))
|
||||
}
|
||||
|
@ -4,21 +4,21 @@ description = "Traverses xml"
|
||||
edition = "2018"
|
||||
license = "MIT"
|
||||
name = "nu_plugin_xpath"
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[lib]
|
||||
doctest = false
|
||||
|
||||
[dependencies]
|
||||
nu-errors = { version = "0.40.0", path="../nu-errors" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.40.0" }
|
||||
nu-protocol = { version = "0.40.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.40.0", path="../nu-source" }
|
||||
nu-errors = { version = "0.41.0", path="../nu-errors" }
|
||||
nu-plugin = { path="../nu-plugin", version = "0.41.0" }
|
||||
nu-protocol = { version = "0.41.0", path="../nu-protocol" }
|
||||
nu-source = { version = "0.41.0", path="../nu-source" }
|
||||
|
||||
bigdecimal = { package = "bigdecimal-rs", version = "0.2.1", features = ["serde"] }
|
||||
bigdecimal = { package = "bigdecimal", version = "0.3.0", features = ["serde"] }
|
||||
indexmap = { version="1.6.1", features=["serde-1"] }
|
||||
sxd-document = "0.3.2"
|
||||
sxd-xpath = "0.4.2"
|
||||
|
||||
[dev-dependencies]
|
||||
nu-test-support = { path="../nu-test-support", version = "0.40.0" }
|
||||
nu-test-support = { path="../nu-test-support", version = "0.41.0" }
|
||||
|
@ -19,7 +19,7 @@ Kill a process using the process id.
|
||||
## Examples
|
||||
Kill the pid using the most memory
|
||||
```shell
|
||||
> ps | sort-by mem | last | kill $it.pid
|
||||
> ps | sort-by mem | last | each { kill $it.pid }
|
||||
```
|
||||
|
||||
Force kill a given pid
|
||||
|
@ -86,7 +86,7 @@ version = "0.4.6"
|
||||
[dependencies.cursive]
|
||||
default-features = false
|
||||
features = ["pancurses-backend"]
|
||||
version = "0.40.0"
|
||||
version = "0.41.0"
|
||||
|
||||
[dependencies.futures-preview]
|
||||
features = ["compat", "io-compat"]
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
You may find it desirable to compile nu shell without requiring an OpenSSL installation on your system.
|
||||
|
||||
You can do this by runnning:
|
||||
You can do this by running:
|
||||
```sh
|
||||
cargo build --no-default-features --features=rustyline-support
|
||||
```
|
||||
|
@ -401,4 +401,48 @@ mod external_command_arguments {
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
#[test]
|
||||
fn semicolons_are_sanitized_before_passing_to_subshell() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
"^echo \"a;b\""
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "a;b");
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
#[test]
|
||||
fn ampersands_are_sanitized_before_passing_to_subshell() {
|
||||
let actual = nu!(
|
||||
cwd: ".",
|
||||
"^echo \"a&b\""
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "a&b");
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
#[test]
|
||||
fn subcommands_are_sanitized_before_passing_to_subshell() {
|
||||
let actual = nu!(
|
||||
cwd: ",",
|
||||
"^echo \"$(ls)\""
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "$(ls)");
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
#[test]
|
||||
fn shell_arguments_are_sanitized_even_if_coming_from_other_commands() {
|
||||
let actual = nu!(
|
||||
cwd: ",",
|
||||
"^echo (echo \"a;&$(hello)\")"
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "a;&$(hello)");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user