diff --git a/Cargo.lock b/Cargo.lock index 27f3b6a135..01ab86adb0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,10 +6,10 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -19,10 +19,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "aho-corasick" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -30,7 +30,7 @@ name = "ansi_colours" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -61,17 +61,13 @@ dependencies = [ ] [[package]] -name = "argon2rs" -version = "0.2.5" +name = "arrayref" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "arrayvec" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", @@ -79,48 +75,46 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "atty" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "autocfg" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.30" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.28" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -136,9 +130,9 @@ name = "bincode" version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -147,11 +141,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "blake2-rfc" -version = "0.2.18" +name = "blake2b_simd" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -162,20 +157,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bstr" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-automata 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "build_const" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "bumpalo" version = "2.5.0" @@ -183,12 +173,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byte-unit" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "bytecount" @@ -221,7 +207,7 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -234,10 +220,10 @@ name = "chrono" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -264,7 +250,7 @@ version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -277,9 +263,9 @@ name = "clicolors-control" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -292,7 +278,7 @@ dependencies = [ "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "x11-clipboard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "x11-clipboard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -324,7 +310,7 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "rust-ini 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde-hjson 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -336,13 +322,13 @@ name = "console" version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "clicolors-control 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -358,7 +344,7 @@ name = "content_inspector" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -378,9 +364,9 @@ dependencies = [ "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -393,7 +379,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -401,14 +387,6 @@ name = "core-foundation-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "crc" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crc32fast" version = "1.2.0" @@ -417,13 +395,36 @@ dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-deque" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -431,29 +432,42 @@ name = "crossbeam-deque" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.7.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-epoch" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-queue" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -463,7 +477,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "crossbeam-utils" -version = "0.6.5" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -472,83 +486,83 @@ dependencies = [ [[package]] name = "crossterm" -version = "0.9.6" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_cursor 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_input 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_screen 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_style 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_terminal 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_cursor 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_input 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_screen 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_style 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_terminal 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_cursor" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_input" -version = "0.3.6" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_screen 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_screen 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_screen" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_style" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_terminal" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_cursor 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_cursor 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_utils" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossterm_winapi" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -559,11 +573,11 @@ name = "csv" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bstr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bstr 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -571,7 +585,7 @@ name = "csv-core" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -579,8 +593,8 @@ name = "ctor" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -618,8 +632,8 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -630,9 +644,9 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -641,8 +655,8 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling_core 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -651,8 +665,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -670,8 +684,8 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -682,8 +696,8 @@ dependencies = [ "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "derive_builder_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -693,8 +707,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -704,10 +718,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -720,7 +734,7 @@ name = "directories" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -729,28 +743,28 @@ name = "dirs" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "dirs" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "dirs-sys" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -852,9 +866,9 @@ dependencies = [ "enum-utils-from-str 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive_internals 0.24.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -863,7 +877,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -873,13 +887,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "env_logger" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -888,7 +902,7 @@ name = "error-chain" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -897,7 +911,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -907,8 +921,8 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -923,9 +937,9 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -967,27 +981,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures-async-stream" -version = "0.1.0-alpha.1" +version = "0.1.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures-async-stream-macro 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-async-stream-macro 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "futures-async-stream-macro" -version = "0.1.0-alpha.1" +version = "0.1.0-alpha.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1009,7 +1023,7 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1055,12 +1069,12 @@ name = "futures-util-preview" version = "0.3.0-alpha.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-io-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1077,11 +1091,11 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1090,8 +1104,8 @@ version = "0.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1105,38 +1119,210 @@ dependencies = [ [[package]] name = "git2" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "libgit2-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "h2" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heim" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-cpu 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-disk 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-host 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-memory 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-net 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-process 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-virt 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-common" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-cpu" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-derive" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-disk" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-host" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "platforms 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-memory" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-net" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "macaddr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-process" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ntapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-runtime" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heim-virt" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "http" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1150,14 +1336,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1170,31 +1356,31 @@ dependencies = [ [[package]] name = "hyper" -version = "0.12.30" +version = "0.12.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1203,8 +1389,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1224,9 +1410,19 @@ dependencies = [ "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "image" -version = "0.21.2" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1236,9 +1432,9 @@ dependencies = [ "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "png 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1246,7 +1442,7 @@ name = "indexmap" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1262,7 +1458,7 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1277,8 +1473,8 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1328,10 +1524,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "derive-new 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "render-tree 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1344,9 +1540,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "lazy_static" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "lazycell" @@ -1355,32 +1548,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lexical-core" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "stackvector 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libc" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libgit2-sys" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "libssh2-sys 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1388,12 +1581,12 @@ name = "libssh2-sys" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1401,10 +1594,10 @@ name = "libz-sys" version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1412,7 +1605,7 @@ name = "line-wrap" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1440,7 +1633,7 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1448,7 +1641,7 @@ dependencies = [ [[package]] name = "log" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1468,11 +1661,11 @@ version = "0.10.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1480,12 +1673,25 @@ name = "lzw" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "macaddr" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "malloc_buf" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1495,10 +1701,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1506,6 +1712,14 @@ name = "memoffset" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "memoffset" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mime" version = "0.3.13" @@ -1516,13 +1730,11 @@ dependencies = [ [[package]] name = "mime_guess" -version = "2.0.0-alpha.6" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1530,13 +1742,13 @@ name = "miniz-sys" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "miniz_oxide" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1544,13 +1756,13 @@ dependencies = [ [[package]] name = "miniz_oxide_c_api" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1562,8 +1774,8 @@ dependencies = [ "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1587,11 +1799,11 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1605,10 +1817,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1617,7 +1829,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1627,9 +1839,9 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1643,7 +1855,7 @@ name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1652,8 +1864,8 @@ name = "nom" version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lexical-core 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lexical-core 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1663,10 +1875,18 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytecount 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "nom 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ntapi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nu" version = "0.1.3" @@ -1674,41 +1894,44 @@ dependencies = [ "adhoc_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "ansi_term 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "async-trait 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-unit 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "async-trait 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-unit 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "chrono-humanize 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)", "chrono-tz 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clipboard 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossterm 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossterm 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "derive-new 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "dunce 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "enum-utils 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-async-stream 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-async-stream 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures_codec 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "getset 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "git2 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", + "git2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "heim 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "language-reporting 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "logos 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)", "logos-derive 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "neso 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "nom 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "nom5_locate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pretty-hex 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1716,28 +1939,29 @@ dependencies = [ "prettyprint 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "prettytable-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "ptree 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rawkey 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)", + "rawkey 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)", "roxmltree 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustyline 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustyline 5.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde-hjson 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_bytes 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_bytes 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_ini 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", + "strip-ansi-escapes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "subprocess 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", - "sysinfo 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sysinfo 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml-query 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1747,8 +1971,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1756,7 +1980,7 @@ name = "num-integer" version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1765,7 +1989,7 @@ name = "num-iter" version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1775,7 +1999,7 @@ name = "num-rational" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1793,7 +2017,7 @@ name = "num-traits" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1801,14 +2025,9 @@ name = "num_cpus" version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "numtoa" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "objc" version = "0.2.6" @@ -1851,7 +2070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1860,21 +2079,21 @@ name = "onig_sys" version = "69.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "openssl" -version = "0.10.23" +version = "0.10.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1884,14 +2103,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-sys" -version = "0.9.47" +version = "0.9.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1900,7 +2119,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1924,6 +2143,15 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot" version = "0.7.1" @@ -1935,20 +2163,32 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1957,14 +2197,13 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1975,7 +2214,7 @@ name = "parse-zoneinfo" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1983,6 +2222,11 @@ name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "petgraph" version = "0.4.13" @@ -1992,49 +2236,14 @@ dependencies = [ "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "phf" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_codegen" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_generator" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "phf_shared" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "pin-project" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2044,7 +2253,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.14" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "platforms" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2056,19 +2270,19 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "png" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "deflate 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)", "inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2098,8 +2312,8 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2109,7 +2323,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_colours 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "console 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", "content_inspector 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2127,7 +2341,7 @@ name = "prettytable-rs" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "encode_unicode 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2153,9 +2367,9 @@ dependencies = [ "directories 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "isatty 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "tint 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2167,7 +2381,7 @@ dependencies = [ "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2178,7 +2392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.12" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2190,21 +2404,33 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2219,9 +2445,9 @@ name = "rand" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2231,16 +2457,15 @@ name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2250,12 +2475,12 @@ name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2263,7 +2488,7 @@ name = "rand_core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2295,8 +2520,8 @@ name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2307,8 +2532,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2318,8 +2543,8 @@ name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2330,9 +2555,19 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "raw-cpuid" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rawkey" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "readkey 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2358,7 +2593,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2378,43 +2613,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "redox_syscall" -version = "0.1.54" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "redox_users" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.1.9" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-automata" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2422,11 +2648,8 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.7" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "remove_dir_all" @@ -2442,13 +2665,13 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "reqwest" -version = "0.9.18" +version = "0.9.19" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2457,25 +2680,26 @@ dependencies = [ "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "encoding_rs 0.8.17 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2491,6 +2715,16 @@ dependencies = [ "xmlparser 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rust-argon2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rust-ini" version = "0.13.0" @@ -2519,13 +2753,13 @@ dependencies = [ [[package]] name = "rustyline" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "dirs 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2533,11 +2767,6 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ryu" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ryu" version = "1.0.0" @@ -2545,12 +2774,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "safemem" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "same-file" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2587,7 +2816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2619,10 +2848,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.94" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2633,7 +2862,7 @@ dependencies = [ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2645,7 +2874,7 @@ dependencies = [ "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2655,25 +2884,25 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_bytes" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.94" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2682,7 +2911,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2691,7 +2920,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "result 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2702,7 +2931,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2720,7 +2949,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2731,7 +2960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2749,11 +2978,6 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "slab" version = "0.4.2" @@ -2764,11 +2988,6 @@ name = "smallvec" version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "spin" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "stable_deref_trait" version = "1.1.1" @@ -2785,17 +3004,25 @@ dependencies = [ [[package]] name = "static_assertions" -version = "0.2.5" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "strip-ansi-escapes" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "vte 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "strsim" version = "0.7.0" @@ -2812,17 +3039,17 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.42" +version = "0.15.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2832,8 +3059,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2850,11 +3077,11 @@ dependencies = [ "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2863,18 +3090,18 @@ name = "sys-info" version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sysinfo" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2894,9 +3121,9 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2919,23 +3146,12 @@ dependencies = [ "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "termion" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "termios" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2954,9 +3170,17 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "threadpool" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tiff" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2970,8 +3194,8 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2985,21 +3209,20 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3009,7 +3232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3017,17 +3240,17 @@ name = "tokio-current-thread" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3036,8 +3259,8 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3045,15 +3268,15 @@ name = "tokio-reactor" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3064,7 +3287,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3073,7 +3296,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3082,18 +3305,18 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3101,18 +3324,10 @@ name = "tokio-timer" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-trace-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3120,7 +3335,7 @@ name = "toml" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3128,7 +3343,7 @@ name = "toml" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3140,7 +3355,7 @@ dependencies = [ "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "is-match 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "toml-query_derive 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3151,8 +3366,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3168,19 +3383,6 @@ dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "ucd-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "unicase" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "unicase" version = "2.4.0" @@ -3220,6 +3422,11 @@ name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unreachable" version = "1.0.0" @@ -3238,6 +3445,16 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "url" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "user32-sys" version = "0.2.0" @@ -3249,7 +3466,7 @@ dependencies = [ [[package]] name = "utf8-ranges" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3263,12 +3480,12 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "vcpkg" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3287,71 +3504,84 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "walkdir" -version = "2.2.8" +name = "vte" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "walkdir" +version = "2.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "want" -version = "0.0.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.47" +version = "0.2.48" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.47" +version = "0.2.48" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "widestring" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3400,6 +3630,14 @@ dependencies = [ "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "winreg" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ws2_32-sys" version = "0.2.1" @@ -3414,13 +3652,13 @@ name = "x11" version = "2.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "x11-clipboard" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "xcb 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3431,8 +3669,8 @@ name = "xcb" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3461,32 +3699,31 @@ dependencies = [ [metadata] "checksum adhoc_derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7fa59c078ee916c8c12c50d1d0e1c4015475ce664f05375e54cf06545930c61" "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" -"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282" +"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum ansi_colours 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0f302a81afc6a7f4350c04f0ba7cfab529cc009bca3324b3fb5764e6add8b6" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum ansi_term 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eaa72766c3585a1f812a3387a7e2c6cab780f899c2f43ff6ea06c8d071fcbb36" "checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" -"checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392" -"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" -"checksum async-trait 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "41f6b40ac5df0ab7ef35112d7a593428ca62bcaabcc7de20f88b506cf798928d" -"checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum autocfg 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0e49efa51329a5fd37e7c79db4621af617cd4e3e5bc224939808d076077077bf" -"checksum backtrace 0.3.30 (registry+https://github.com/rust-lang/crates.io-index)" = "ada4c783bb7e7443c14e0480f429ae2cc99da95065aeab7ee1b81ada0419404f" -"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" +"checksum async-trait 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "fe9bad189e61411cfbcc8822b4a2b1534983ee24295fc8460d6be53da1afad74" +"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b" +"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba" +"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" "checksum bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9f04a5e50dc80b3d5d35320889053637d15011aed5e66b66b37ae798c65da6f7" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" -"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +"checksum blake2b_simd 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "461f4b879a8eb70c1debf7d0788a9a5ff15f1ea9d25925fea264ef4258bed6b2" "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -"checksum bstr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fc0662252f9bba48c251a16d16a768b9fcd959593bde07544710bce6efe60b7a" -"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" +"checksum bstr 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e0a692f1c740e7e821ca71a22cf99b9b2322dfa94d10f71443befb1797b3946a" "checksum bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2cd43d82f27d68911e6ee11ee791fb248f138f5d69424dc02e098d4f152b0b05" -"checksum byte-unit 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6754bb4703aa167bed5381f0c6842f1cc31a9ecde3b9443f726dde3ad3afb841" +"checksum byte-unit 3.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90139954ec9776c4832d44f212e558ccdacbe915a881bf3de3a1a487fa8d1e87" "checksum bytecount 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f861d9ce359f56dbcb6e0c2a1cb84e52ad732cadb57b806adeb3c7668caccbd8" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" -"checksum cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "39f75544d7bbaf57560d2168f28fd649ff9c76153874db88bdbdfd839b1a7e7d" +"checksum cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "ce400c638d48ee0e9ab75aef7997609ec57367ccfe1463f21bf53c3eca67bf46" "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" "checksum chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "77d81f58b7301084de3b958691458a53c3f7e0b1d702f77e550b6a88e3a88abe" "checksum chrono-humanize 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2ff48a655fe8d2dae9a39e66af7fd8ff32a879e8c4e27422c25596a8b5e90d" @@ -3505,22 +3742,24 @@ dependencies = [ "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" -"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"checksum crossbeam 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d1c92ff2d7a202d592f5a412d75cf421495c913817781c1cb383bf12a77e185f" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" -"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" +"checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" -"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" -"checksum crossterm 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)" = "21ac79357981b3c35917a377e6138729b66316db7649f9f96fbb517bb02361e5" -"checksum crossterm_cursor 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4b8ddb43937bfafbe07d349ee9497754ceac818ee872116afccb076f2de28d3d" -"checksum crossterm_input 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a23a71b51ddc8f74e13e341179b1a26b20f0030d14ff8fbdd9da45fd0e342bc5" -"checksum crossterm_screen 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "90889b9f1d7867a583dede34deab1e32a10379e9eb70d920ca7895e144aa6d65" -"checksum crossterm_style 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "983596405fe738aac9645656b666073fe6e0a8bf088679b7e256916ee41b61f7" -"checksum crossterm_terminal 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "18792c97c5cdcc5fd3582df58188a793bf290af4a53d5fc8442c7d17e003b356" -"checksum crossterm_utils 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8321d40908d0ee77cb29335f591eae2b4f7225152f81b9dfa35a161ca3b077dc" -"checksum crossterm_winapi 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c061e4a1c47a53952ba0f2396c00a61cd7ab74482eba99b9c9cc77fdca71932" +"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" +"checksum crossterm 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9abce7d7c50e9823ea0c0dbeb8f16d7e247af06d75b4c6244ea0a0998b3a6f35" +"checksum crossterm_cursor 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fb4bfd085f17d83e6cd2943f0150d3b4331e465de8dba1750d1966192faf63dc" +"checksum crossterm_input 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c6dd255ca05a596bae31ec392fdb67a829509bb767213f00f37c6b62814db663" +"checksum crossterm_screen 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0bf294484fc34c22d514c41afc0b97ce74e10ea54d6eb5fe4806d1e1ac0f7b76" +"checksum crossterm_style 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8b950f8262e29a446a8a976e0290b67a9067ddc9620f9fb37961d2377f0d8c09" +"checksum crossterm_terminal 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "db8546b519e0c26aa1f43a4a4ea45ccb41eaca74b9a753ea1788f9ad90212636" +"checksum crossterm_utils 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f874a71b2040c730669ddff805c9bc2a1a2f6de9d7f6aab2ae8d29ccbf8a0617" +"checksum crossterm_winapi 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b055e7cc627c452e6a9b977022f48a2db6f0ff73df446ca970f95eef9c381d45" "checksum csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d" "checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c" "checksum ctor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3b4c17619643c1252b5f690084b82639dd7fac141c57c8e77a00e0148132092c" @@ -3539,8 +3778,8 @@ dependencies = [ "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" "checksum directories 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72d337a64190607d4fcca2cb78982c5dd57f4916e19696b48a575fa746b6cb0f" "checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" -"checksum dirs 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1c4ef5a8b902d393339e2a2c7fe573af92ce7e0ee5a3ff827b4c9ad7e07e4fa1" -"checksum dirs-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "937756392ec77d1f2dd9dc3ac9d69867d109a2121479d72c364e42f4cab21e2d" +"checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" "checksum doc-comment 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "923dea538cea0aa3025e8685b20d6ee21ef99c4f77e954a30febbaac5ec73a97" "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" "checksum dunce 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0ad6bf6a88548d1126045c413548df1453d9be094a8ab9fd59bf1fdd338da4f" @@ -3557,7 +3796,7 @@ dependencies = [ "checksum enum-utils 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f1ae672d9891879fb93e17ab6015c4e3bbe63fbeb23a41b9ac39ffa845b8836" "checksum enum-utils-from-str 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6b5669381f76d7320e122abdd4a8307f986634f6d067fb69e31179422175801a" "checksum enum_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "406ac2a8c9eedf8af9ee1489bee9e50029278a6456c740f7454cf8a158abc816" -"checksum env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b61fa891024a945da30a9581546e8cfaf5602c7b3f4c137a2805cf388f92075a" +"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" @@ -3569,9 +3808,9 @@ dependencies = [ "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "a2037ec1c6c1c4f79557762eab1f7eae1f64f6cb418ace90fae88f0942b60139" -"checksum futures-async-stream 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c4aecac975d38ff13b935de313e12fded407231b0d563e7493fac40463272a2f" -"checksum futures-async-stream-macro 0.1.0-alpha.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4bbd6c677284a4bb3c043193ad20017f06c61cca34327ce5b0682691f92a182e" +"checksum futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "45dc39533a6cae6da2b56da48edae506bb767ec07370f86f70fc062e9d435869" +"checksum futures-async-stream 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11656e20f3c6e4a026757266461ffeb73d8c2fcbcc464fc6f9660d8d66452f32" +"checksum futures-async-stream-macro 0.1.0-alpha.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcb1eaa199281990734c14fdf5c22077ecd9f7fc2c24d7a37d796bd54dbb8f10" "checksum futures-channel-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "21c71ed547606de08e9ae744bb3c6d80f5627527ef31ecf2a7210d0e67bc8fae" "checksum futures-core-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4b141ccf9b7601ef987f36f1c0d9522f76df3bba1cf2e63bfacccc044c4558f5" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" @@ -3581,20 +3820,34 @@ dependencies = [ "checksum futures-sink-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "4309a25a1069a1f3c10647b227b9afe6722b67a030d3f00a9cbdc171fc038de4" "checksum futures-util-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)" = "af8198c48b222f02326940ce2b3aa9e6e91a32886eeaad7ca3b8e4c70daa3f4e" "checksum futures_codec 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "36552cd31353fd135114510d53b8d120758120c36aa636a9341970f9efb1e4a0" -"checksum getrandom 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e65cce4e5084b14874c4e7097f38cab54f47ee554f9194673456ea379dcc4c55" +"checksum getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "34f33de6f0ae7c9cb5e574502a562e2b512799e32abb801cd1e79ad952b62b49" "checksum getset 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "19fbde0fad0c1c1f9474694b1f5c9ba22b09f2f74f74e6d2bd19c43f6656e2cb" "checksum gif 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "86c2f2b597d6e05c86ee5947b2223bda468fe8dad3e88e2a6520869322aaf568" -"checksum git2 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "924b2e7d2986e625dcad89e8a429a7b3adee3c3d71e585f4a66c4f7e78715e31" -"checksum h2 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "69b2a5a3092cbebbc951fe55408402e696ee2ed09019137d1800fc2c411265d2" -"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" +"checksum git2 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8cb400360e8a4d61b10e648285bbfa919bbf9519d0d5d5720354456f44349226" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +"checksum heim 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7a996721efa683319648b170ff0b7f22a7cec42b417f1d1871c229b87a3231e9" +"checksum heim-common 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "61d9e785d002b44e31be34f9956b8c68af12070017a1020db1218e3f870407ae" +"checksum heim-cpu 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f112cb820851d6d24dd77d169bd5c32f8c6588de56bed1b82010ec0dbbe68c62" +"checksum heim-derive 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0f1098f444459eec56e78527ff7f157e3c5e5c2c70c0c4a6ce7dce79fb8a4262" +"checksum heim-disk 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1d4c796b58239602481f3cc7e0695769ef0a2512f0272fd5a42d7f8fb4493e43" +"checksum heim-host 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "87bc31113726eebe29a3b8aa876c322f09208c3d614708f89cea40e50e011c17" +"checksum heim-memory 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bcc41a4d761f8136d661c45c8ad22a6f87900459f84ec2347294fcd568da3f2" +"checksum heim-net 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aa7d8887d3940a30beea92368cf8be3eae0a89e46c80d036e2fd744525150e22" +"checksum heim-process 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5460611f1d0cace5460cbd8c02061927390a41cfeeed68007c794239b5274cd4" +"checksum heim-runtime 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304dc68b138eb6e9b6c79785dd911306a4bca66757a88373cb034a4dfe3a4d" +"checksum heim-virt 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6f68f73f66e6f00404d7b8ed97b458778f6ccafe1ecd65af797ec36f2003bf90" +"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" -"checksum hyper 0.12.30 (registry+https://github.com/rust-lang/crates.io-index)" = "40e7692b2009a70b1e9b362284add4d8b75880fefddb4acaa5e67194e843f219" +"checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f" "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" "checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum image 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)" = "99198e595d012efccf12abf4abc08da2d97be0b0355a2b08d101347527476ba4" +"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +"checksum image 0.22.1 (registry+https://github.com/rust-lang/crates.io-index)" = "663a975007e0b49903e2e8ac0db2c432c465855f2d65f17883ba1476e85f0b42" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum inflate 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "1cdb29978cc5797bd8dcc8e5bf7de604891df2a8dc576973d71a281e916db2ff" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" @@ -3609,29 +3862,32 @@ dependencies = [ "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" -"checksum lexical-core 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d224b31f370c8dfc0dea1932d9e6bd451e65aef6f5f2318846664c04b42a796" -"checksum libc 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "6281b86796ba5e4366000be6e9e18bf35580adf9e63fbe2294aadb587613a319" -"checksum libgit2-sys 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "941a41e23f77323b8c9d2ee118aec9ee39dfc176078c18b4757d3bad049d9ff7" +"checksum lexical-core 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b0f90c979adde96d19eb10eb6431ba0c441e2f9e9bdff868b2f6f5114ff519" +"checksum libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d44e80633f007889c7eff624b709ab43c92d708caad982295768a7b13ca3b5eb" +"checksum libgit2-sys 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4c179ed6d19cd3a051e68c177fbbc214e79ac4724fac3a850ec9f3d3eb8a5578" "checksum libssh2-sys 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "126a1f4078368b163bfdee65fbab072af08a1b374a5551b21e87ade27b1fbf9d" "checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" "checksum line-wrap 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" "checksum linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d262045c5b87c0861b3f004610afd0e2c851e2908d08b6c870cbb9d5f494ecd" "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" -"checksum log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c275b6ad54070ac2d665eef9197db647b32239c9d244bfb6f041a766d00da5b3" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum logos 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)" = "e136962e0902a48fd1d8da8706fac078fdba547bf82f9d9d728cf551d367b41e" "checksum logos-derive 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f03ecd1d993aacc6c4f3a9540e60a4f3811ddac2276dbb66dad4d42671bd5bf" "checksum lzw 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084" +"checksum macaddr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ff4752cb15cffb3e68f7dcb22e0818ac871f8c98fb07a634a81f41fb202a09f" +"checksum mach 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" +"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" -"checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" +"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202" -"checksum miniz_oxide 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c468f2369f07d651a5d0bb2c9079f8488a66d5466efe42d0c5c6466edcb7f71e" -"checksum miniz_oxide_c_api 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7fe927a42e3807ef71defb191dc87d4e24479b221e67015fe38ae2b7b447bab" +"checksum miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe2959c5a0747a8d7a56b4444c252ffd2dda5d452cfd147cdfdda73b1c3ece5b" +"checksum miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6c675792957b0d19933816c4e1d56663c341dd9bfa31cb2140ff2267c1d8ecf4" "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" @@ -3642,6 +3898,7 @@ dependencies = [ "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" "checksum nom 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e9761d859320e381010a4f7f8ed425f2c924de33ad121ace447367c713ad561b" "checksum nom5_locate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3d4312467f8b28d909344b934207e502212fa5a3adf1bff7428b0b86a666223d" +"checksum ntapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f26e041cd983acbc087e30fcba770380cfa352d0e392e175b2344ebaf7ea0602" "checksum num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" "checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" @@ -3649,36 +3906,35 @@ dependencies = [ "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" -"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" "checksum objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "31d20fd2b37e07cf5125be68357b588672e8cefe9a96f8c17a9d46053b3e590d" "checksum objc-foundation 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" "checksum objc_id 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" "checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" -"checksum openssl 0.10.23 (registry+https://github.com/rust-lang/crates.io-index)" = "97c140cbb82f3b3468193dd14c1b88def39f341f68257f8a7fe8ed9ed3f628a5" +"checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.47 (registry+https://github.com/rust-lang/crates.io-index)" = "75bdd6dbbb4958d38e47a1d2348847ad1eb4dc205dc5d37473ae504391865acc" +"checksum openssl-sys 0.9.48 (registry+https://github.com/rust-lang/crates.io-index)" = "b5ba300217253bcc5dc68bed23d782affa45000193866e025329aa8a7a9f05b8" "checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" "checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" "checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" +"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" "checksum parse-zoneinfo 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "089a398ccdcdd77b8c38909d5a1e4b67da1bc4c9dbfe6d5b536c828eddb779e5" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" +"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" "checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -"checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" -"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" -"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" -"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" "checksum pin-project 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "2714268752963de91be73ea2689c3c63d2389b14fad04d033923e20cb3a1d99a" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" +"checksum platforms 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6cfec0daac55b13af394ceaaad095d17c790f77bdc9329264f06e49d6cd3206c" "checksum plist 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a9f075f6394100e7c105ed1af73fb1859d6fd14e49d4290d578120beb167f" -"checksum png 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "63daf481fdd0defa2d1d2be15c674fbfa1b0fd71882c303a91f9a79b3252c359" +"checksum png 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8422b27bb2c013dd97b9aef69e161ce262236f49aaf46a0489011c8ff0264602" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum pretty-hex 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "119929a2a3b731bb3d888f7a1b5dc3c1db28b6c134def5d99f7e16e2da16b8f7" "checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" @@ -3689,14 +3945,15 @@ dependencies = [ "checksum ptree 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0a3be00b19ee7bd33238c1c523a7ab4df697345f6b36f90827a7860ea938d4" "checksum publicsuffix 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5afecba86dcf1e4fd610246f89899d1924fe12e1e89f555eb7c7f710f3c5ad1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faf4799c5d274f3868a4aae320a0a182cbd2baee377b378f080e16a23e9d80db" +"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e193067942ef6f485a349a113329140d0ab9e2168ce92274499bb0e9a4190d9d" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" "checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" @@ -3705,31 +3962,31 @@ dependencies = [ "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -"checksum rawkey 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cd49689ad95f53f9ba07322fa4fa75f08c338f5f7556eb2952705071eaf681b" +"checksum raw-cpuid 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "30a9d219c32c9132f7be513c18be77c9881c7107d2ab5569d205a6a0f0e6dc7d" +"checksum rawkey 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "33ec17a493dcb820725c002bc253f6f3ba4e4dc635e72c238540691b05e43897" "checksum rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b0186e22767d5b9738a05eab7c6ac90b15db17e5b5f9bd87976dd7d89a10a4" "checksum rayon-core 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbe0df8435ac0c397d467b6cad6d25543d06e8a019ef3f6af3c384597515bd2" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum readkey 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d98db94bb4f3e926c8d8186547cd9366d958d753aff5801214d93d38214e8f0f" -"checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum redox_users 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe5204c3a17e97dde73f285d49be585df59ed84b50a872baf416e73b62c3828" -"checksum regex 1.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "d9d8297cc20bbb6184f8b45ff61c8ee6a9ac56c156cec8e38c3e5084773c44ad" -"checksum regex-automata 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3ed09217220c272b29ef237a974ad58515bde75f194e3ffa7e6d0bf0f3b01f86" -"checksum regex-syntax 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d76410686f9e3a17f06128962e0ecc5755870bb890c34820c7af7f1db2e1d48" +"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" +"checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26" +"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9" +"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum render-tree 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "68ed587df09cfb7ce1bc6fe8f77e24db219f222c049326ccbfb948ec67e31664" -"checksum reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)" = "00eb63f212df0e358b427f0f40aa13aaea010b470be642ad422bcbca2feff2e4" +"checksum reqwest 0.9.19 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0777154c2c3eb54f5c480db01de845652d941e47191277cc673634c3853939" "checksum result 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "194d8e591e405d1eecf28819740abed6d719d1a2db87fc0bcdedee9a26d55560" "checksum roxmltree 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "330d8f80a274bc3cb608908ee345970e7e24b96907f1ad69615a498bec57871c" +"checksum rust-argon2 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81ed8d04228b44a740c8d46ff872a28e50fff3d659f307ab4da2cc502e019ff3" "checksum rust-ini 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" "checksum rustc-demangle 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f4dccf6f4891ebcc0c39f9b6eb1a83b9bf5d747cb439ec6fba4f3b977038af" "checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustyline 5.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67e12e40e0240de07f0dab4f4dd01bdb15d74dc977026d4ba91666c41c679ade" -"checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" +"checksum rustyline 5.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b7d4ca3c9586d2c1f742284f032e328313ea55f3f60a3b0a17e2ca1a2bf9ae22" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" -"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" -"checksum same-file 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8f20c4be53a8a1ff4c1f1b2bd14570d2f634628709752f0702ecdd2b3f9a5267" +"checksum safemem 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e133ccc4f4d1cd4f89cc8a7ff618287d56dc7f638b8e38fc32c5fdcadc339dd5" +"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" "checksum scoped_threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" @@ -3739,12 +3996,12 @@ dependencies = [ "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" -"checksum serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "076a696fdea89c19d3baed462576b8f6d663064414b5c793642da8dfeb99475b" +"checksum serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5626ac617da2f2d9c48af5515a21d5a480dbd151e01bb1c355e26a3e68113" "checksum serde-hjson 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0b833c5ad67d52ced5f5938b2980f32a9c1c5ef047f0b4fb3127e7a423c76153" "checksum serde-hjson 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4640cf3168e40c00c874ff1ad436c0f18c37edec101d5d897a4396f617abce29" "checksum serde-value 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7a663f873dedc4eac1a559d4c6bc0d0b2c34dc5ac4702e105014b8281489e44f" -"checksum serde_bytes 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aaff47db6ef8771cca5d88febef2f22f47f645420e51226374049f68c6b08569" -"checksum serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)" = "ef45eb79d6463b22f5f9e16d283798b7c0175ba6050bc25c1a946c122727fe7b" +"checksum serde_bytes 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "45af0182ff64abaeea290235eb67da3825a576c5d53e642c4d5b652e12e6effc" +"checksum serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "01e69e1b8a631f245467ee275b8c757b818653c6d704cdbcaeb56b56767b529c" "checksum serde_derive_internals 0.24.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8a80c6c0b1ebbcea4ec2c7e9e2e9fa197a425d17f1afec8ba79fcd1352b18ffb" "checksum serde_ini 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb236687e2bb073a7521c021949be944641e671b8505a94069ca37b656c81139" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" @@ -3753,75 +4010,75 @@ dependencies = [ "checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582" "checksum shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a" "checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" -"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" -"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum stackvector 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1c4725650978235083241fab0fdc8e694c3de37821524e7534a1a9061d1068af" -"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" -"checksum string 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0bbfb8937e38e34c3444ff00afb28b0811d9554f15c5ad64d12b0308d1d1995" +"checksum static_assertions 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4f8de36da215253eb5f24020bfaa0646613b48bf7ebe36cdfa37c3b3b33b241" +"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" +"checksum strip-ansi-escapes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d63676e2abafa709460982ddc02a3bb586b6d15a49b75c212e06edd3933acee" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum subprocess 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "28fc0f40f0c0da73339d347aa7d6d2b90341a95683a47722bc4eebed71ff3c00" -"checksum syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)" = "eadc09306ca51a40555dd6fc2b415538e9e18bc9f870e47b1a524a79fe2dcf5e" +"checksum syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ee06ea4b620ab59a2267c6b48be16244a3389f8bfa0986bdd15c35b890b00af3" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum syntect 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e80b8831c5a543192ffc3727f01cf0e57579c6ac15558e3048bfb5708892167b" "checksum sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "76d6cf7b349b6a6daaf7a3797227e2f4108c8dd398e0aca7e29b9fb239948541" -"checksum sysinfo 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c3e2cab189e59f72710e3dd5e1e0d5be0f6c5c999c326f2fdcdf3bf4483ec9fd" +"checksum sysinfo 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee7d12b854e48e680bf4b10856a7867e843845158fa8226e6c2f6cc38539cb01" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" "checksum termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625" "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum tiff 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4834f28a0330cb9f3f2c87d2649dca723cb33802e2bdcf18da32759fbec7ce" +"checksum threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e2f0c90a5f3459330ac8bc0d2f879c693bb7a2f59689c1083fc4ef83834da865" +"checksum tiff 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b7c2cfc4742bd8a32f2e614339dd8ce30dbcf676bb262bd63a2327bc5df57d" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tint 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7af24570664a3074673dbbf69a65bdae0ae0b72f2949b1adfbacb736ee4d6896" -"checksum tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "ec2ffcf4bcfc641413fa0f1427bf8f91dfc78f56a6559cbf50e04837ae442a87" +"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" -"checksum tokio-executor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "83ea44c6c0773cc034771693711c35c677b4b5a4b21b9e7071704c54de7d555e" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72558af20be886ea124595ea0f806dd5703b8958e4705429dd58b3d8231f72f2" +"checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" -"checksum tokio-trace-core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9c8a256d6956f7cb5e2bdfe8b1e8022f1a09206c6c2b1ba00f3b746b260c613" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" "checksum toml-query 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "654d5afba116c445bb5fb6812e7c3177d90d143427af73f12956f33e18a1cedb" "checksum toml-query_derive 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c99ca245ec273c7e75c8ee58f47b882d0146f3c2c8495158082c6671e8b5335" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" -"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" "checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" -"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" +"checksum utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba" "checksum utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8772a4ccbb4e89959023bc5b7cb8623a795caa7092d99f3aa9501b9484d4557d" "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" +"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c7904a7e2bb3cdf0cf5e783f44204a85a37a93151738fa349f06680f59a98b45" -"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" -"checksum wasm-bindgen 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "22029998cc650473cb05f10f19c06a1536b9e1f1572e4f5dacd45ab4d3f85877" -"checksum wasm-bindgen-backend 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "6f858ff3cb4196c702e8c24b75fba1d3ab46958de4f7c253627f0507aae1507c" -"checksum wasm-bindgen-macro 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15c29f04eb117312931e7b02878453ee63d67a6f291797651890128bf5ee71db" -"checksum wasm-bindgen-macro-support 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "92b1356b623816248dfe0e2c4b7e113618d647808907ff6a3d9838ebee8e82ee" -"checksum wasm-bindgen-shared 0.2.47 (registry+https://github.com/rust-lang/crates.io-index)" = "15de16ddb30cfd424a87598b30021491bae1607d32e52056979865c98b7913b4" +"checksum vte 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4f42f536e22f7fcbb407639765c8fd78707a33109301f834a594758bedd6e8cf" +"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +"checksum wasm-bindgen 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "4de97fa1806bb1a99904216f6ac5e0c050dc4f8c676dc98775047c38e5c01b55" +"checksum wasm-bindgen-backend 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "5d82c170ef9f5b2c63ad4460dfcee93f3ec04a9a36a4cc20bc973c39e59ab8e3" +"checksum wasm-bindgen-macro 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "f07d50f74bf7a738304f6b8157f4a581e1512cd9e9cdb5baad8c31bbe8ffd81d" +"checksum wasm-bindgen-macro-support 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "95cf8fe77e45ba5f91bc8f3da0c3aa5d464b3d8ed85d84f4d4c7cc106436b1d7" +"checksum wasm-bindgen-shared 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "d9c2d4d4756b2e46d3a5422e06277d02e4d3e1d62d138b76a4c681e925743623" +"checksum widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effc0e4ff8085673ea7b9b2e3c73f6bd4d118810c9009ed8f1e16bd96c331db6" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" @@ -3829,9 +4086,10 @@ dependencies = [ "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" "checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" +"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39697e3123f715483d311b5826e254b6f3cfebdd83cf7ef3358f579c3d68e235" -"checksum x11-clipboard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a77356335a1398267e15a7c1d5fa1c8d3fdb3e5ba2e381407d74482c29587d3" +"checksum x11-clipboard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "89bd49c06c9eb5d98e6ba6536cf64ac9f7ee3a009b2f53996d405b3944f6bcea" "checksum xcb 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5e917a3f24142e9ff8be2414e36c649d47d6cc2ba81f16201cdef96e533e02de" "checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" "checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5" diff --git a/Cargo.toml b/Cargo.toml index c5b7a5d328..33200621d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ homepage = "https://github.com/nushell/nushell" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -rustyline = "5.0.0" +rustyline = "5.0.1" sysinfo = "0.9" chrono = { version = "0.4.7", features = ["serde"] } chrono-tz = "0.5.1" @@ -25,19 +25,19 @@ nom = "5.0.0" dunce = "1.0.0" indexmap = { version = "1.0.2", features = ["serde-1"] } chrono-humanize = "0.0.11" -byte-unit = "2.1.0" +byte-unit = "3.0.1" ordered-float = {version = "1.0.2", features = ["serde"]} prettyprint = "0.7.0" futures-preview = { version = "=0.3.0-alpha.17", features = ["compat", "io-compat"] } futures-sink-preview = "=0.3.0-alpha.17" futures-async-stream = "0.1.0-alpha.1" -async-trait = "" +async-trait = "0.1.7" futures_codec = "0.2.5" term = "0.5.2" bytes = "0.4.12" -log = "0.4.7" +log = "0.4.8" pretty_env_logger = "0.3.0" -serde = { version = "1.0.94", features = ["derive"] } +serde = { version = "1.0.98", features = ["derive"] } serde_json = "1.0.40" serde-hjson = "0.9.0" serde_yaml = "0.8" @@ -54,8 +54,9 @@ clap = "2.33.0" enum_derive = "0.1.7" adhoc_derive = "0.1.2" lazy_static = "1.3.0" -git2 = "0.9.1" -dirs = "2.0.1" +git2 = "0.9.2" +dirs = "2.0.2" +glob = "0.3.0" ctrlc = "3.1.3" ptree = "0.2" clipboard = "0.5" @@ -64,21 +65,24 @@ roxmltree = "0.6.1" nom5_locate = "0.1.1" derive_more = "0.15.0" enum-utils = "0.1.1" -unicode-xid = "0.1.0" +unicode-xid = "0.2.0" serde_ini = "0.2.0" subprocess = "0.1.18" sys-info = "0.5.7" mime = "0.3.13" -regex = "1.1.9" +regex = "1.2.1" pretty-hex = "0.1.0" neso = "0.5.0" -rawkey = "0.1.1" -crossterm = "0.9.6" +rawkey = "0.1.2" +crossterm = "0.10.2" tempfile = "3.1.0" -image = "0.21.2" +image = "0.22.1" semver = "0.9.0" uuid = {version = "0.7.4", features = [ "v4", "serde" ]} syntect = "3.2.0" +strip-ansi-escapes = "0.1.0" +onig_sys = "=69.1" +heim = "0.0.6" [dev-dependencies] pretty_assertions = "0.6.1" @@ -92,6 +96,10 @@ path = "src/lib.rs" name = "nu_plugin_inc" path = "src/plugins/inc.rs" +[[bin]] +name = "nu_plugin_sum" +path = "src/plugins/sum.rs" + [[bin]] name = "nu_plugin_add" path = "src/plugins/add.rs" @@ -100,10 +108,18 @@ path = "src/plugins/add.rs" name = "nu_plugin_edit" path = "src/plugins/edit.rs" +[[bin]] +name = "nu_plugin_str" +path = "src/plugins/str.rs" + [[bin]] name = "nu_plugin_skip" path = "src/plugins/skip.rs" +[[bin]] +name = "nu_plugin_sys" +path = "src/plugins/sys.rs" + [[bin]] name = "nu_plugin_tree" path = "src/plugins/tree.rs" @@ -112,6 +128,10 @@ path = "src/plugins/tree.rs" name = "nu_plugin_binaryview" path = "src/plugins/binaryview.rs" +[[bin]] +name = "nu_plugin_textview" +path = "src/plugins/textview.rs" + [[bin]] name = "nu" path = "src/main.rs" diff --git a/README.md b/README.md index 459697a29e..3a989d14bb 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ We can pipeline this into a command that gets the contents of one of the columns -------------+----------------------------+---------+---------+------+--------- authors | description | edition | license | name | version -------------+----------------------------+---------+---------+------+--------- - [list List] | A shell for the GitHub era | 2018 | MIT | nu | 0.1.2 + [list List] | A shell for the GitHub era | 2018 | MIT | nu | 0.1.3 -------------+----------------------------+---------+---------+------+--------- ``` @@ -87,11 +87,18 @@ Finally, we can use commands outside of Nu once we have the data we want: ``` /home/jonathan/Source/nushell(master)> open Cargo.toml | get package.version | echo $it -0.1.2 +0.1.3 ``` Here we use the variable `$it` to refer to the value being piped to the external command. +## Shells + +By default, Nu will work inside of a single directory and allow you to navigate around your filesystem. Sometimes, you'll want to work in multiple directories at the same time. For this, Nu offers a way of adding additional working directories that you can jump between. + +To do so, use the `enter` command, which will allow you create a new "shell" and enter it at the specified path. You can toggle between this new shell and the original shell with the `p` (for previous) and `n` (for next), allowing you to navigate around a ring buffer of shells. Once you're done with a shell, you can `exit` it and remove it from the ring buffer. + +Finally, to get a list of all the current shells, you can use the `shells` command. ## Plugins @@ -120,12 +127,19 @@ Nu adheres closely to a set of goals that make up its design philosophy. As feat | command | description | | ------------- | ------------- | | cd path | Change to a new path | +| cp source path | Copy files | | ls (path) | View the contents of the current or given path | +| mkdir path | Make directories, creates intermediary directories as required. | +| date (--utc) | Get the current datetime | | ps | View current processes | -| sysinfo | View information about the current system | +| sys | View information about the current system | | open {filename or url} | Load a file into a cell, convert to table if possible (avoid by appending '--raw') | | rm {file or directory} | Remove a file, (for removing directory append '--recursive') | -| exit | Exit the shell | +| exit (--now) | Exit the current shell (or all shells) | +| enter (path) | Create a new shell and begin at this path | +| p | Go to previous shell | +| n | Go to next shell | +| shells | Display the list of current shells | ## Filters on tables (structured data) | command | description | @@ -137,13 +151,17 @@ Nu adheres closely to a set of goals that make up its design philosophy. As feat | where condition | Filter table to match the condition | | inc (field) | Increment a value or version. Optional use the field of a table | | add field value | Add a new field to the table | +| sum | Sum a column of values | | edit field value | Edit an existing field to have a new value | | skip amount | Skip a number of rows | | first amount | Show only the first number of rows | +| str (field) | Apply string function. Optional use the field of a table | +| tags | Read the tags (metadata) for values | | to-array | Collapse rows into a single list | | to-json | Convert table into .json text | | to-toml | Convert table into .toml text | | to-yaml | Convert table into .yaml text | +| to-csv | Convert table into .csv text | ## Filters on text (unstructured data) | command | description | diff --git a/src/cli.rs b/src/cli.rs index e39978bf04..5802c7a318 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -5,12 +5,11 @@ use crate::commands::classified::{ }; use crate::commands::plugin::JsonRpc; use crate::commands::plugin::PluginCommand; -use crate::commands::{static_command, Command}; +use crate::commands::static_command; use crate::context::Context; crate use crate::errors::ShellError; use crate::git::current_branch; use crate::object::Value; -use crate::parser::parse::span::Spanned; use crate::parser::registry::Signature; use crate::parser::{hir, Pipeline, PipelineElement, TokenNode}; use crate::prelude::*; @@ -150,11 +149,14 @@ pub async fn cli() -> Result<(), Box> { command("from-xml", Box::new(from_xml::from_xml)), command("ps", Box::new(ps::ps)), command("ls", Box::new(ls::ls)), - command("sysinfo", Box::new(sysinfo::sysinfo)), command("size", Box::new(size::size)), command("from-yaml", Box::new(from_yaml::from_yaml)), - command("exit", Box::new(exit::exit)), + command("enter", Box::new(enter::enter)), + command("n", Box::new(next::next)), + command("p", Box::new(prev::prev)), command("lines", Box::new(lines::lines)), + command("pick", Box::new(pick::pick)), + command("shells", Box::new(shells::shells)), command("split-column", Box::new(split_column::split_column)), command("split-row", Box::new(split_row::split_row)), command("lines", Box::new(lines::lines)), @@ -166,6 +168,7 @@ pub async fn cli() -> Result<(), Box> { command("to-toml", Box::new(to_toml::to_toml)), command("to-yaml", Box::new(to_yaml::to_yaml)), command("sort-by", Box::new(sort_by::sort_by)), + command("tags", Box::new(tags::tags)), static_command(Get), static_command(Cd), static_command(Remove), @@ -173,8 +176,12 @@ pub async fn cli() -> Result<(), Box> { static_command(Where), static_command(Config), static_command(SkipWhile), + static_command(Exit), static_command(Clip), static_command(Autoview), + static_command(Copycp), + static_command(Date), + static_command(Mkdir), static_command(Save), static_command(Table), static_command(VTable), @@ -183,15 +190,15 @@ pub async fn cli() -> Result<(), Box> { let _ = load_plugins(&mut context); let config = Config::builder().color_mode(ColorMode::Forced).build(); - let h = crate::shell::Helper::new(context.clone_commands()); - let mut rl: Editor = Editor::with_config(config); + //let h = crate::shell::Helper::new(context.clone_commands()); + let mut rl: Editor<_> = Editor::with_config(config); #[cfg(windows)] { let _ = ansi_term::enable_ansi_support(); } - rl.set_helper(Some(h)); + //rl.set_helper(Some(h)); let _ = rl.load_history("history.txt"); let ctrl_c = Arc::new(AtomicBool::new(false)); @@ -207,10 +214,12 @@ pub async fn cli() -> Result<(), Box> { continue; } - let cwd = { - let env = context.env.lock().unwrap(); - env.path().display().to_string() - }; + let cwd = context.shell_manager.path(); + + rl.set_helper(Some(crate::shell::Helper::new( + context.shell_manager.clone(), + ))); + let readline = rl.readline(&format!( "{}{}> ", cwd, @@ -336,7 +345,7 @@ async fn process_line(readline: Result, ctx: &mut Context .commands .push(ClassifiedCommand::Internal(InternalCommand { command: static_command(autoview::Autoview), - name_span: None, + name_span: Span::unknown(), source_map: ctx.source_map.clone(), args: hir::Call::new( Box::new(hir::Expression::synthetic_string("autoview")), @@ -473,19 +482,19 @@ fn classify_command( Ok(ClassifiedCommand::Internal(InternalCommand { command, - name_span: Some(head.span().clone()), + name_span: head.span().clone(), source_map: context.source_map.clone(), args, })) } false => { - let arg_list_strings: Vec> = match call.children() { + let arg_list_strings: Vec> = match call.children() { //Some(args) => args.iter().map(|i| i.as_external_arg(source)).collect(), Some(args) => args .iter() .filter_map(|i| match i { TokenNode::Whitespace(_) => None, - other => Some(Spanned::from_item( + other => Some(Tagged::from_simple_spanned_item( other.as_external_arg(source), other.span(), )), @@ -496,7 +505,7 @@ fn classify_command( Ok(ClassifiedCommand::External(ExternalCommand { name: name.to_string(), - name_span: Some(head.span().clone()), + name_span: head.span().clone(), args: arg_list_strings, })) } diff --git a/src/commands.rs b/src/commands.rs index 1813129727..6ff59db742 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -8,6 +8,9 @@ crate mod classified; crate mod clip; crate mod command; crate mod config; +crate mod cp; +crate mod date; +crate mod enter; crate mod exit; crate mod first; crate mod from_csv; @@ -19,20 +22,24 @@ crate mod from_yaml; crate mod get; crate mod lines; crate mod ls; +crate mod mkdir; +crate mod next; crate mod open; crate mod pick; crate mod plugin; +crate mod prev; crate mod ps; crate mod reject; crate mod rm; crate mod save; +crate mod shells; crate mod size; crate mod skip_while; crate mod sort_by; crate mod split_column; crate mod split_row; -crate mod sysinfo; crate mod table; +crate mod tags; crate mod to_array; crate mod to_csv; crate mod to_json; @@ -50,7 +57,11 @@ crate use command::{ UnevaluatedCallInfo, }; crate use config::Config; +crate use cp::Copycp; +crate use date::Date; +crate use exit::Exit; crate use get::Get; +crate use mkdir::Mkdir; crate use open::Open; crate use rm::Remove; crate use save::Save; diff --git a/src/commands/autoview.rs b/src/commands/autoview.rs index 4d86730e7c..ee0e7b3e03 100644 --- a/src/commands/autoview.rs +++ b/src/commands/autoview.rs @@ -1,8 +1,6 @@ use crate::commands::{RawCommandArgs, StaticCommand}; -use crate::context::{SourceMap, SpanSource}; use crate::errors::ShellError; use crate::prelude::*; -use std::path::Path; pub struct Autoview; @@ -36,15 +34,15 @@ pub fn autoview( let input = context.input.drain_vec().await; if input.len() > 0 { - if let Spanned { + if let Tagged { item: Value::Binary(_), .. - } = input[0] + } = input[0usize] { let binary = context.expect_command("binaryview"); binary.run(raw.with_input(input), &context.commands).await; } else if is_single_text_value(&input) { - view_text_value(&input[0], &raw.call_info.source_map); + //view_text_value(&input[0], &raw.call_info.source_map); } else if equal_shapes(&input) { let table = context.expect_command("table"); let result = table.run(raw.with_input(input), &context.commands).await.unwrap(); @@ -63,7 +61,7 @@ pub fn autoview( })) } -fn equal_shapes(input: &Vec>) -> bool { +fn equal_shapes(input: &Vec>) -> bool { let mut items = input.iter(); let item = match items.next() { @@ -82,11 +80,11 @@ fn equal_shapes(input: &Vec>) -> bool { true } -fn is_single_text_value(input: &Vec>) -> bool { +fn is_single_text_value(input: &Vec>) -> bool { if input.len() != 1 { return false; } - if let Spanned { + if let Tagged { item: Value::Primitive(Primitive::String(_)), .. } = input[0] @@ -96,63 +94,3 @@ fn is_single_text_value(input: &Vec>) -> bool { false } } - -fn view_text_value(value: &Spanned, source_map: &SourceMap) { - match value { - Spanned { - item: Value::Primitive(Primitive::String(s)), - span, - } => { - let source = span.source.map(|x| source_map.get(&x)).flatten(); - - if let Some(source) = source { - match source { - SpanSource::File(file) => { - let path = Path::new(file); - match path.extension() { - Some(extension) => { - use syntect::easy::HighlightLines; - use syntect::highlighting::{Style, ThemeSet}; - use syntect::parsing::SyntaxSet; - use syntect::util::{as_24_bit_terminal_escaped, LinesWithEndings}; - - // Load these once at the start of your program - let ps: SyntaxSet = syntect::dumps::from_binary(include_bytes!( - "../../assets/syntaxes.bin" - )); - - if let Some(syntax) = - ps.find_syntax_by_extension(extension.to_str().unwrap()) - { - let ts: ThemeSet = syntect::dumps::from_binary(include_bytes!( - "../../assets/themes.bin" - )); - let mut h = - HighlightLines::new(syntax, &ts.themes["OneHalfDark"]); - - for line in LinesWithEndings::from(s) { - let ranges: Vec<(Style, &str)> = h.highlight(line, &ps); - let escaped = - as_24_bit_terminal_escaped(&ranges[..], false); - print!("{}", escaped); - } - } else { - println!("{}", s); - } - } - _ => { - println!("{}", s); - } - } - } - _ => { - println!("{}", s); - } - } - } else { - println!("{}", s); - } - } - _ => {} - } -} diff --git a/src/commands/cd.rs b/src/commands/cd.rs index 41b462d1d2..1287326e90 100644 --- a/src/commands/cd.rs +++ b/src/commands/cd.rs @@ -8,7 +8,7 @@ pub struct Cd; #[derive(Deserialize)] pub struct CdArgs { - target: Option>, + target: Option>, } impl StaticCommand for Cd { @@ -39,7 +39,7 @@ pub fn cd(CdArgs { target }: CdArgs, context: RunnableContext) -> Result match dirs::home_dir() { Some(o) => o, _ => { - return Err(ShellError::maybe_labeled_error( + return Err(ShellError::labeled_error( "Can not change to home directory", "can not go to home", context.name, @@ -54,7 +54,7 @@ pub fn cd(CdArgs { target }: CdArgs, context: RunnableContext) -> Result Result Result { + // args.shell_manager.cd(args.call_info, args.input) } diff --git a/src/commands/classified.rs b/src/commands/classified.rs index 254415b525..ad00727c83 100644 --- a/src/commands/classified.rs +++ b/src/commands/classified.rs @@ -1,6 +1,6 @@ use crate::commands::Command; use crate::context::SourceMap; -use crate::parser::{hir, Span, Spanned, TokenNode}; +use crate::parser::{hir, TokenNode}; use crate::prelude::*; use bytes::{BufMut, BytesMut}; use futures::stream::StreamExt; @@ -98,7 +98,7 @@ impl ClassifiedCommand { crate struct InternalCommand { crate command: Arc, - crate name_span: Option, + crate name_span: Span, crate source_map: SourceMap, crate args: hir::Call, } @@ -123,7 +123,7 @@ impl InternalCommand { .run_command( self.command, self.name_span.clone(), - self.source_map, + context.source_map.clone(), self.args, source, objects, @@ -137,12 +137,62 @@ impl InternalCommand { match item? { ReturnSuccess::Action(action) => match action { CommandAction::ChangePath(path) => { - context.env.lock().unwrap().path = path; + context.shell_manager.set_path(path); } CommandAction::AddSpanSource(uuid, span_source) => { context.add_span_source(uuid, span_source); } CommandAction::Exit => std::process::exit(0), + CommandAction::EnterShell(location) => { + let path = std::path::Path::new(&location); + + if path.is_dir() { + // If it's a directory, add a new filesystem shell + context + .shell_manager + .push(Box::new(FilesystemShell::with_location(location)?)); + } else { + // If it's a file, attempt to open the file as a value and enter it + let cwd = context.shell_manager.path(); + + let full_path = std::path::PathBuf::from(cwd); + + let (file_extension, contents, contents_tag, _) = + crate::commands::open::fetch( + &full_path, + &location, + Span::unknown(), + )?; + + match contents { + Value::Primitive(Primitive::String(string)) => { + let value = crate::commands::open::parse_as_value( + file_extension, + string, + contents_tag, + Span::unknown(), + )?; + + context.shell_manager.push(Box::new(ValueShell::new(value))); + } + value => context + .shell_manager + .push(Box::new(ValueShell::new(value.tagged(Tag::unknown())))), + } + } + } + CommandAction::PreviousShell => { + context.shell_manager.prev(); + } + CommandAction::NextShell => { + context.shell_manager.next(); + } + CommandAction::LeaveShell => { + context.shell_manager.pop(); + if context.shell_manager.is_empty() { + std::process::exit(0); + } + } }, ReturnSuccess::Value(v) => { @@ -158,8 +208,8 @@ impl InternalCommand { crate struct ExternalCommand { crate name: String, #[allow(unused)] - crate name_span: Option, - crate args: Vec>, + crate name_span: Span, + crate args: Vec>, } crate enum StreamNext { @@ -176,7 +226,7 @@ impl ExternalCommand { stream_next: StreamNext, ) -> Result { let stdin = input.stdin; - let inputs: Vec> = input.objects.into_vec().await; + let inputs: Vec> = input.objects.into_vec().await; let name_span = self.name_span.clone(); trace!(target: "nu::run::external", "-> {}", self.name); @@ -201,7 +251,7 @@ impl ExternalCommand { let mut span = None; for arg in &self.args { if arg.item.contains("$it") { - span = Some(arg.span); + span = Some(arg.span()); } } if let Some(span) = span { @@ -231,7 +281,17 @@ impl ExternalCommand { } } else { for arg in &self.args { - process = process.arg(arg.item.clone()); + let arg_chars: Vec<_> = arg.chars().collect(); + if arg_chars.len() > 1 + && arg_chars[0] == '"' + && arg_chars[arg_chars.len() - 1] == '"' + { + // quoted string + let new_arg: String = arg_chars[1..arg_chars.len() - 1].iter().collect(); + process = process.arg(new_arg); + } else { + process = process.arg(arg.item.clone()); + } } } } @@ -243,13 +303,13 @@ impl ExternalCommand { let mut first = true; for i in &inputs { if i.as_string().is_err() { - let mut span = None; + let mut span = name_span; for arg in &self.args { if arg.item.contains("$it") { - span = Some(arg.span); + span = arg.span(); } } - return Err(ShellError::maybe_labeled_error( + return Err(ShellError::labeled_error( "External $it needs string data", "given object instead of string data", span, @@ -280,7 +340,7 @@ impl ExternalCommand { process = Exec::shell(new_arg_string); } - process = process.cwd(context.env.lock().unwrap().path()); + process = process.cwd(context.shell_manager.path()); let mut process = match stream_next { StreamNext::Last => process, @@ -308,10 +368,11 @@ impl ExternalCommand { let stdout = popen.stdout.take().unwrap(); let file = futures::io::AllowStdIo::new(stdout); let stream = Framed::new(file, LinesCodec {}); - let stream = - stream.map(move |line| Value::string(line.unwrap()).spanned(name_span)); + let stream = stream.map(move |line| { + Tagged::from_simple_spanned_item(Value::string(line.unwrap()), name_span) + }); Ok(ClassifiedInputStream::from_input_stream( - stream.boxed() as BoxStream<'static, Spanned> + stream.boxed() as BoxStream<'static, Tagged> )) } } diff --git a/src/commands/clip.rs b/src/commands/clip.rs index b0fe940408..da88756d3c 100644 --- a/src/commands/clip.rs +++ b/src/commands/clip.rs @@ -33,7 +33,7 @@ pub fn clip( RunnableContext { input, name, .. }: RunnableContext, ) -> Result { let stream = async_stream_block! { - let values: Vec> = input.values.collect().await; + let values: Vec> = input.values.collect().await; inner_clip(values, name).await; }; @@ -43,7 +43,7 @@ pub fn clip( Ok(OutputStream::from(stream)) } -async fn inner_clip(input: Vec>, name: Option) -> OutputStream { +async fn inner_clip(input: Vec>, name: Span) -> OutputStream { let mut clip_context: ClipboardContext = ClipboardProvider::new().unwrap(); let mut new_copy_data = String::new(); diff --git a/src/commands/command.rs b/src/commands/command.rs index 3223d01029..22651a4442 100644 --- a/src/commands/command.rs +++ b/src/commands/command.rs @@ -3,7 +3,7 @@ use crate::errors::ShellError; use crate::evaluate::Scope; use crate::object::Value; use crate::parser::hir; -use crate::parser::{registry, ConfigDeserializer, Span, Spanned}; +use crate::parser::{registry, ConfigDeserializer}; use crate::prelude::*; use derive_new::new; use getset::Getters; @@ -18,7 +18,7 @@ pub struct UnevaluatedCallInfo { pub args: hir::Call, pub source: Text, pub source_map: SourceMap, - pub name_span: Option, + pub name_span: Span, } impl ToDebug for UnevaluatedCallInfo { @@ -43,19 +43,22 @@ impl UnevaluatedCallInfo { } } -#[derive(Deserialize, Serialize, Debug)] +#[derive(Deserialize, Serialize, Debug, Clone)] pub struct CallInfo { pub args: registry::EvaluatedArgs, pub source_map: SourceMap, - pub name_span: Option, + pub name_span: Span, } #[derive(Getters)] #[get = "crate"] pub struct CommandArgs { pub host: Arc>, - pub env: Arc>, + pub shell_manager: ShellManager, pub call_info: UnevaluatedCallInfo, + // pub host: Arc>, + // pub shell_manager: ShellManager, + // pub call_info: CallInfo, pub input: InputStream, } @@ -63,15 +66,15 @@ pub struct CommandArgs { #[get = "crate"] pub struct RawCommandArgs { pub host: Arc>, - pub env: Arc>, + pub shell_manager: ShellManager, pub call_info: UnevaluatedCallInfo, } impl RawCommandArgs { - pub fn with_input(self, input: Vec>) -> CommandArgs { + pub fn with_input(self, input: Vec>) -> CommandArgs { CommandArgs { host: self.host, - env: self.env, + shell_manager: self.shell_manager, call_info: self.call_info, input: input.into(), } @@ -90,14 +93,19 @@ impl CommandArgs { registry: ®istry::CommandRegistry, ) -> Result { let host = self.host.clone(); - let env = self.env.clone(); + let shell_manager = self.shell_manager.clone(); let input = self.input; let call_info = self.call_info.evaluate(registry, &Scope::empty())?; - Ok(EvaluatedStaticCommandArgs::new(host, env, call_info, input)) + Ok(EvaluatedStaticCommandArgs::new( + host, + shell_manager, + call_info, + input, + )) } - pub fn name_span(&self) -> Option { + pub fn name_span(&self) -> Span { self.call_info.name_span } @@ -106,7 +114,7 @@ impl CommandArgs { registry: &CommandRegistry, callback: fn(T, RunnableContext) -> Result, ) -> Result, ShellError> { - let env = self.env.clone(); + let shell_manager = self.shell_manager.clone(); let host = self.host.clone(); let args = self.evaluate_once(registry)?; let (input, args) = args.split(); @@ -118,7 +126,7 @@ impl CommandArgs { context: RunnableContext { input: input, commands: registry.clone(), - env, + shell_manager, name: name_span, host, }, @@ -133,11 +141,11 @@ impl CommandArgs { ) -> Result, ShellError> { let raw_args = RawCommandArgs { host: self.host.clone(), - env: self.env.clone(), + shell_manager: self.shell_manager.clone(), call_info: self.call_info.clone(), }; - let env = self.env.clone(); + let shell_manager = self.shell_manager.clone(); let host = self.host.clone(); let args = self.evaluate_once(registry)?; let (input, args) = args.split(); @@ -149,7 +157,7 @@ impl CommandArgs { context: RunnableContext { input: input, commands: registry.clone(), - env, + shell_manager, name: name_span, host, }, @@ -161,18 +169,15 @@ impl CommandArgs { pub struct RunnableContext { pub input: InputStream, - pub env: Arc>, + pub shell_manager: ShellManager, pub host: Arc>, pub commands: CommandRegistry, - pub name: Option, + pub name: Span, } impl RunnableContext { pub fn cwd(&self) -> PathBuf { - let env = self.env.clone(); - let env = env.lock().unwrap(); - - env.path.clone() + PathBuf::from(self.shell_manager.path()) } pub fn expect_command(&self, name: &str) -> Arc { @@ -222,21 +227,21 @@ impl Deref for EvaluatedStaticCommandArgs { impl EvaluatedStaticCommandArgs { pub fn new( host: Arc>, - env: Arc>, + shell_manager: ShellManager, call_info: CallInfo, input: impl Into, ) -> EvaluatedStaticCommandArgs { EvaluatedStaticCommandArgs { args: EvaluatedCommandArgs { host, - env, + shell_manager, call_info, }, input: input.into(), } } - pub fn name_span(&self) -> Option { + pub fn name_span(&self) -> Span { self.args.call_info.name_span } @@ -258,7 +263,7 @@ impl EvaluatedStaticCommandArgs { pub struct EvaluatedFilterCommandArgs { args: EvaluatedCommandArgs, #[allow(unused)] - input: Spanned, + input: Tagged, } impl Deref for EvaluatedFilterCommandArgs { @@ -271,14 +276,14 @@ impl Deref for EvaluatedFilterCommandArgs { impl EvaluatedFilterCommandArgs { pub fn new( host: Arc>, - env: Arc>, + shell_manager: ShellManager, call_info: CallInfo, - input: Spanned, + input: Tagged, ) -> EvaluatedFilterCommandArgs { EvaluatedFilterCommandArgs { args: EvaluatedCommandArgs { host, - env, + shell_manager, call_info, }, input, @@ -290,7 +295,7 @@ impl EvaluatedFilterCommandArgs { #[get = "crate"] pub struct EvaluatedCommandArgs { pub host: Arc>, - pub env: Arc>, + pub shell_manager: ShellManager, pub call_info: CallInfo, } @@ -299,11 +304,11 @@ impl EvaluatedCommandArgs { &self.call_info.args } - pub fn nth(&self, pos: usize) -> Option<&Spanned> { + pub fn nth(&self, pos: usize) -> Option<&Tagged> { self.call_info.args.nth(pos) } - pub fn expect_nth(&self, pos: usize) -> Result<&Spanned, ShellError> { + pub fn expect_nth(&self, pos: usize) -> Result<&Tagged, ShellError> { self.call_info.args.expect_nth(pos) } @@ -311,11 +316,11 @@ impl EvaluatedCommandArgs { self.call_info.args.len() } - pub fn get(&self, name: &str) -> Option<&Spanned> { + pub fn get(&self, name: &str) -> Option<&Tagged> { self.call_info.args.get(name) } - pub fn slice_from(&self, from: usize) -> Vec> { + pub fn slice_from(&self, from: usize) -> Vec> { let positional = &self.call_info.args.positional; match positional { @@ -332,31 +337,35 @@ impl EvaluatedCommandArgs { #[derive(Debug, Serialize, Deserialize)] pub enum CommandAction { - ChangePath(PathBuf), + ChangePath(String), AddSpanSource(Uuid, SpanSource), Exit, + EnterShell(String), + PreviousShell, + NextShell, + LeaveShell, } #[derive(Debug, Serialize, Deserialize)] pub enum ReturnSuccess { - Value(Spanned), + Value(Tagged), Action(CommandAction), } pub type ReturnValue = Result; -impl From> for ReturnValue { - fn from(input: Spanned) -> ReturnValue { +impl From> for ReturnValue { + fn from(input: Tagged) -> ReturnValue { Ok(ReturnSuccess::Value(input)) } } impl ReturnSuccess { - pub fn change_cwd(path: PathBuf) -> ReturnValue { + pub fn change_cwd(path: String) -> ReturnValue { Ok(ReturnSuccess::Action(CommandAction::ChangePath(path))) } - pub fn value(input: impl Into>) -> ReturnValue { + pub fn value(input: impl Into>) -> ReturnValue { Ok(ReturnSuccess::Value(input.into())) } @@ -365,7 +374,9 @@ impl ReturnSuccess { } pub fn spanned_value(input: Value, span: Span) -> ReturnValue { - Ok(ReturnSuccess::Value(Spanned::from_item(input, span))) + Ok(ReturnSuccess::Value(Tagged::from_simple_spanned_item( + input, span, + ))) } } @@ -435,13 +446,13 @@ impl StaticCommand for FnFilterCommand { ) -> Result { let CommandArgs { host, - env, + shell_manager, call_info, input, } = args; let host: Arc> = host.clone(); - let env: Arc> = env.clone(); + let shell_manager = shell_manager.clone(); let registry: registry::CommandRegistry = registry.clone(); let func = self.func; @@ -455,7 +466,8 @@ impl StaticCommand for FnFilterCommand { Ok(args) => args, }; - let args = EvaluatedFilterCommandArgs::new(host.clone(), env.clone(), call_info, it); + let args = + EvaluatedFilterCommandArgs::new(host.clone(), shell_manager.clone(), call_info, it); match func(args) { Err(err) => return OutputStream::from(vec![Err(err)]).values, diff --git a/src/commands/config.rs b/src/commands/config.rs index a10ec1cd3b..f185699aa3 100644 --- a/src/commands/config.rs +++ b/src/commands/config.rs @@ -11,11 +11,11 @@ pub struct Config; #[derive(Deserialize)] pub struct ConfigArgs { - set: Option<(Spanned, Spanned)>, - get: Option>, - clear: Spanned, - remove: Option>, - path: Spanned, + set: Option<(Tagged, Tagged)>, + get: Option>, + clear: Tagged, + remove: Option>, + path: Tagged, } impl StaticCommand for Config { @@ -69,29 +69,41 @@ pub fn config( config::write_config(&result)?; - return Ok(stream![Spanned::from_item( + return Ok(stream![Tagged::from_simple_spanned_item( Value::Object(result.into()), value.span() )] .from_input_stream()); } - if let Spanned { item: true, span } = clear { + if let Tagged { + item: true, + tag: Tag { span, .. }, + } = clear + { result.clear(); config::write_config(&result)?; - return Ok( - stream![Spanned::from_item(Value::Object(result.into()), span)].from_input_stream(), - ); + return Ok(stream![Tagged::from_simple_spanned_item( + Value::Object(result.into()), + span + )] + .from_input_stream()); } - if let Spanned { item: true, span } = path { + if let Tagged { + item: true, + tag: Tag { span, .. }, + } = path + { let path = config::config_path()?; - return Ok( - stream![Value::Primitive(Primitive::Path(path)).spanned(span)].from_input_stream(), - ); + return Ok(stream![Tagged::from_simple_spanned_item( + Value::Primitive(Primitive::Path(path)), + span + )] + .from_input_stream()); } if let Some(v) = remove { @@ -106,9 +118,9 @@ pub fn config( ))); } - let obj = VecDeque::from_iter(vec![Value::Object(result.into()).spanned(v.span())]); + let obj = VecDeque::from_iter(vec![Value::Object(result.into()).simple_spanned(v.span())]); return Ok(obj.from_input_stream()); } - return Ok(vec![Value::Object(result.into()).spanned(name)].into()); + return Ok(vec![Value::Object(result.into()).simple_spanned(name)].into()); } diff --git a/src/commands/cp.rs b/src/commands/cp.rs new file mode 100644 index 0000000000..b8f03e584c --- /dev/null +++ b/src/commands/cp.rs @@ -0,0 +1,401 @@ +use crate::errors::ShellError; +use crate::parser::hir::SyntaxType; +use crate::parser::registry::{CommandRegistry, Signature}; +use crate::prelude::*; +use std::path::{Path, PathBuf}; + +pub struct Copycp; + +impl StaticCommand for Copycp { + fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + cp(args, registry) + } + + fn name(&self) -> &str { + "cp" + } + + fn signature(&self) -> Signature { + Signature::build("cp") + .named("file", SyntaxType::Any) + .switch("recursive") + } +} + +#[derive(Debug, Eq, Ord, PartialEq, PartialOrd)] +pub struct Res { + pub loc: PathBuf, + pub at: usize, +} + +impl Res {} + +pub struct FileStructure { + root: PathBuf, + resources: Vec, +} + +impl FileStructure { + pub fn new() -> FileStructure { + FileStructure { + root: PathBuf::new(), + resources: Vec::::new(), + } + } + + pub fn set_root(&mut self, path: &Path) { + self.root = path.to_path_buf(); + } + + pub fn paths_applying_with(&mut self, to: F) -> Vec<(PathBuf, PathBuf)> + where + F: Fn((PathBuf, usize)) -> (PathBuf, PathBuf), + { + self.resources + .iter() + .map(|f| (PathBuf::from(&f.loc), f.at)) + .map(|f| to(f)) + .collect() + } + + pub fn walk_decorate(&mut self, start_path: &Path) { + self.set_root(&dunce::canonicalize(start_path).unwrap()); + self.resources = Vec::::new(); + self.build(start_path, 0); + self.resources.sort(); + } + + fn build(&mut self, src: &'a Path, lvl: usize) { + let source = dunce::canonicalize(src).unwrap(); + + if source.is_dir() { + for entry in std::fs::read_dir(&source).unwrap() { + let entry = entry.unwrap(); + let path = entry.path(); + + if path.is_dir() { + self.build(&path, lvl + 1); + } + + self.resources.push(Res { + loc: path.to_path_buf(), + at: lvl, + }); + } + } else { + self.resources.push(Res { + loc: source, + at: lvl, + }); + } + } +} + +pub fn cp(args: CommandArgs, registry: &CommandRegistry) -> Result { + let mut source = PathBuf::from(args.shell_manager.path()); + let mut destination = PathBuf::from(args.shell_manager.path()); + let name_span = args.call_info.name_span; + let args = args.evaluate_once(registry)?; + + match args + .nth(0) + .ok_or_else(|| ShellError::string(&format!("No file or directory specified")))? + .as_string()? + .as_str() + { + file => { + source.push(file); + } + } + + match args + .nth(1) + .ok_or_else(|| ShellError::string(&format!("No file or directory specified")))? + .as_string()? + .as_str() + { + file => { + destination.push(file); + } + } + + let sources = glob::glob(&source.to_string_lossy()); + + if sources.is_err() { + return Err(ShellError::labeled_error( + "Invalid pattern.", + "Invalid pattern.", + args.nth(0).unwrap().span(), + )); + } + + let sources: Vec<_> = sources.unwrap().collect(); + + if sources.len() == 1 { + if let Ok(entry) = &sources[0] { + if entry.is_dir() && !args.has("recursive") { + return Err(ShellError::labeled_error( + "is a directory (not copied). Try using \"--recursive\".", + "is a directory (not copied). Try using \"--recursive\".", + args.nth(0).unwrap().span(), + )); + } + + let mut sources: FileStructure = FileStructure::new(); + + sources.walk_decorate(&entry); + + if entry.is_file() { + let strategy = |(source_file, _depth_level)| { + if destination.exists() { + let mut new_dst = dunce::canonicalize(destination.clone()).unwrap(); + new_dst.push(entry.file_name().unwrap()); + (source_file, new_dst) + } else { + (source_file, destination.clone()) + } + }; + + for (ref src, ref dst) in sources.paths_applying_with(strategy) { + if src.is_file() { + match std::fs::copy(src, dst) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + } + + if entry.is_dir() { + if !destination.exists() { + match std::fs::create_dir_all(&destination) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + + let strategy = |(source_file, depth_level)| { + let mut new_dst = destination.clone(); + let path = dunce::canonicalize(&source_file).unwrap(); + + let mut comps: Vec<_> = path + .components() + .map(|fragment| fragment.as_os_str()) + .rev() + .take(1 + depth_level) + .collect(); + + comps.reverse(); + + for fragment in comps.iter() { + new_dst.push(fragment); + } + + (PathBuf::from(&source_file), PathBuf::from(new_dst)) + }; + + for (ref src, ref dst) in sources.paths_applying_with(strategy) { + if src.is_dir() { + if !dst.exists() { + match std::fs::create_dir_all(dst) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + + if src.is_file() { + match std::fs::copy(src, dst) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + } else { + destination.push(entry.file_name().unwrap()); + + match std::fs::create_dir_all(&destination) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + + let strategy = |(source_file, depth_level)| { + let mut new_dst = dunce::canonicalize(&destination).unwrap(); + let path = dunce::canonicalize(&source_file).unwrap(); + + let mut comps: Vec<_> = path + .components() + .map(|fragment| fragment.as_os_str()) + .rev() + .take(1 + depth_level) + .collect(); + + comps.reverse(); + + for fragment in comps.iter() { + new_dst.push(fragment); + } + + (PathBuf::from(&source_file), PathBuf::from(new_dst)) + }; + + for (ref src, ref dst) in sources.paths_applying_with(strategy) { + if src.is_dir() { + if !dst.exists() { + match std::fs::create_dir_all(dst) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + + if src.is_file() { + match std::fs::copy(src, dst) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + } + } + } + } else { + if destination.exists() { + if !sources.iter().all(|x| (x.as_ref().unwrap()).is_file()) && !args.has("recursive") { + return Err(ShellError::labeled_error( + "Copy aborted (directories found). Try using \"--recursive\".", + "Copy aborted (directories found). Try using \"--recursive\".", + args.nth(0).unwrap().span(), + )); + } + + for entry in sources { + if let Ok(entry) = entry { + let mut to = PathBuf::from(&destination); + to.push(&entry.file_name().unwrap()); + + match std::fs::copy(&entry, &to) { + Err(e) => { + return Err(ShellError::labeled_error( + e.to_string(), + e.to_string(), + name_span, + )); + } + Ok(o) => o, + }; + } + } + } else { + return Err(ShellError::labeled_error( + format!( + "Copy aborted. (Does {:?} exist?)", + &destination.file_name().unwrap() + ), + format!( + "Copy aborted. (Does {:?} exist?)", + &destination.file_name().unwrap() + ), + args.nth(1).unwrap().span(), + )); + } + } + + Ok(OutputStream::empty()) +} + +#[cfg(test)] +mod tests { + + use super::{FileStructure, Res}; + use std::path::PathBuf; + + fn fixtures() -> PathBuf { + let mut sdx = PathBuf::new(); + sdx.push("tests"); + sdx.push("fixtures"); + sdx.push("formats"); + dunce::canonicalize(sdx).unwrap() + } + + #[test] + fn prepares_and_decorates_source_files_for_copying() { + let mut res = FileStructure::new(); + res.walk_decorate(fixtures().as_path()); + + assert_eq!( + res.resources, + vec![ + Res { + loc: fixtures().join("appveyor.yml"), + at: 0 + }, + Res { + loc: fixtures().join("caco3_plastics.csv"), + at: 0 + }, + Res { + loc: fixtures().join("cargo_sample.toml"), + at: 0 + }, + Res { + loc: fixtures().join("jonathan.xml"), + at: 0 + }, + Res { + loc: fixtures().join("sample.ini"), + at: 0 + }, + Res { + loc: fixtures().join("sgml_description.json"), + at: 0 + } + ] + ); + } +} diff --git a/src/commands/date.rs b/src/commands/date.rs new file mode 100644 index 0000000000..bbc6a77b58 --- /dev/null +++ b/src/commands/date.rs @@ -0,0 +1,88 @@ +use crate::errors::ShellError; +use crate::object::{Dictionary, Value}; +use crate::prelude::*; +use chrono::{DateTime, Local, Utc}; + +use crate::commands::StaticCommand; +use crate::parser::registry::Signature; +use chrono::{Datelike, TimeZone, Timelike}; +use core::fmt::Display; +use indexmap::IndexMap; + +pub struct Date; + +impl StaticCommand for Date { + fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + date(args, registry) + } + fn name(&self) -> &str { + "date" + } + + fn signature(&self) -> Signature { + Signature::build("mkdir").switch("utc").switch("local") + } +} + +pub fn date_to_value(dt: DateTime, span: Span) -> Tagged +where + T::Offset: Display, +{ + let mut indexmap = IndexMap::new(); + + indexmap.insert( + "year".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.year()), span), + ); + indexmap.insert( + "month".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.month()), span), + ); + indexmap.insert( + "day".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.day()), span), + ); + indexmap.insert( + "hour".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.hour()), span), + ); + indexmap.insert( + "minute".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.minute()), span), + ); + indexmap.insert( + "second".to_string(), + Tagged::from_simple_spanned_item(Value::int(dt.second()), span), + ); + + let tz = dt.offset(); + indexmap.insert( + "timezone".to_string(), + Tagged::from_simple_spanned_item(Value::string(format!("{}", tz)), span), + ); + + Tagged::from_simple_spanned_item(Value::Object(Dictionary::from(indexmap)), span) +} + +pub fn date(args: CommandArgs, registry: &CommandRegistry) -> Result { + let args = args.evaluate_once(registry)?; + + let mut date_out = VecDeque::new(); + let span = args.call_info.name_span; + + let value = if args.has("utc") { + let utc: DateTime = Utc::now(); + date_to_value(utc, span) + } else { + let local: DateTime = Local::now(); + date_to_value(local, span) + }; + + date_out.push_back(value); + + Ok(date_out.to_output_stream()) +} diff --git a/src/commands/enter.rs b/src/commands/enter.rs new file mode 100644 index 0000000000..344134ffc4 --- /dev/null +++ b/src/commands/enter.rs @@ -0,0 +1,23 @@ +use crate::commands::command::CommandAction; +use crate::errors::ShellError; +use crate::prelude::*; + +pub fn enter(args: CommandArgs, registry: &CommandRegistry) -> Result { + let args = args.evaluate_once(registry)?; + + //TODO: We could also enter a value in the stream + if args.len() == 0 { + return Err(ShellError::labeled_error( + "Enter requires a path", + "needs parameter", + args.call_info.name_span, + )); + } + + let location = args.expect_nth(0)?.as_string()?; + + Ok(vec![Ok(ReturnSuccess::Action(CommandAction::EnterShell( + location, + )))] + .into()) +} diff --git a/src/commands/exit.rs b/src/commands/exit.rs index 9dabe99f84..b695f4506f 100644 --- a/src/commands/exit.rs +++ b/src/commands/exit.rs @@ -1,7 +1,34 @@ -use crate::commands::command::CommandAction; +use crate::commands::command::{CommandAction, StaticCommand}; use crate::errors::ShellError; +use crate::parser::registry::{CommandRegistry, Signature}; use crate::prelude::*; -pub fn exit(_args: CommandArgs, _registry: &CommandRegistry) -> Result { - Ok(vec![Ok(ReturnSuccess::Action(CommandAction::Exit))].into()) +pub struct Exit; + +impl StaticCommand for Exit { + fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + exit(args, registry) + } + + fn name(&self) -> &str { + "exit" + } + + fn signature(&self) -> Signature { + Signature::build("exit").switch("now") + } +} + +pub fn exit(args: CommandArgs, registry: &CommandRegistry) -> Result { + let args = args.evaluate_once(registry)?; + + if args.call_info.args.has("now") { + Ok(vec![Ok(ReturnSuccess::Action(CommandAction::Exit))].into()) + } else { + Ok(vec![Ok(ReturnSuccess::Action(CommandAction::LeaveShell))].into()) + } } diff --git a/src/commands/first.rs b/src/commands/first.rs index 83745eddb3..f34b9dba01 100644 --- a/src/commands/first.rs +++ b/src/commands/first.rs @@ -8,7 +8,7 @@ pub fn first(args: CommandArgs, registry: &CommandRegistry) -> Result Result, -) -> Result, Box> { + tag: impl Into, +) -> Result, Box> { let mut reader = ReaderBuilder::new() .has_headers(false) .from_reader(s.as_bytes()); - let span = span.into(); + let tag = tag.into(); let mut fields: VecDeque = VecDeque::new(); let mut iter = reader.records(); @@ -27,25 +27,22 @@ pub fn from_csv_string_to_value( if let Some(row_values) = iter.next() { let row_values = row_values?; - let mut row = SpannedDictBuilder::new(span); + let mut row = TaggedDictBuilder::new(tag); for (idx, entry) in row_values.iter().enumerate() { - row.insert_spanned( + row.insert_tagged( fields.get(idx).unwrap(), - Value::Primitive(Primitive::String(String::from(entry))).spanned(span), + Value::Primitive(Primitive::String(String::from(entry))).tagged(tag), ); } - rows.push(row.into_spanned_value()); + rows.push(row.into_tagged_value()); } else { break; } } - Ok(Spanned { - item: Value::List(rows), - span, - }) + Ok(Tagged::from_item(Value::List(rows), tag)) } pub fn from_csv(args: CommandArgs, registry: &CommandRegistry) -> Result { @@ -55,20 +52,29 @@ pub fn from_csv(args: CommandArgs, registry: &CommandRegistry) -> Result match from_csv_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(_) => Err(ShellError::maybe_labeled_error( - "Could not parse as CSV", - "piped data failed CSV parse", + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_csv_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as CSV", + "input cannot be parsed as CSV", + span, + "value originates from here", + value_tag.span, + )), + } + } + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + a.span(), )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/from_ini.rs b/src/commands/from_ini.rs index 6f9a3c0115..e6b7e569af 100644 --- a/src/commands/from_ini.rs +++ b/src/commands/from_ini.rs @@ -1,40 +1,40 @@ -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; use std::collections::HashMap; fn convert_ini_second_to_nu_value( v: &HashMap, - span: impl Into, -) -> Spanned { - let mut second = SpannedDictBuilder::new(span); + tag: impl Into, +) -> Tagged { + let mut second = TaggedDictBuilder::new(tag); for (key, value) in v.into_iter() { second.insert(key.clone(), Primitive::String(value.clone())); } - second.into_spanned_value() + second.into_tagged_value() } fn convert_ini_top_to_nu_value( v: &HashMap>, - span: impl Into, -) -> Spanned { - let span = span.into(); - let mut top_level = SpannedDictBuilder::new(span); + tag: impl Into, +) -> Tagged { + let tag = tag.into(); + let mut top_level = TaggedDictBuilder::new(tag); for (key, value) in v.iter() { - top_level.insert_spanned(key.clone(), convert_ini_second_to_nu_value(value, span)); + top_level.insert_tagged(key.clone(), convert_ini_second_to_nu_value(value, tag)); } - top_level.into_spanned_value() + top_level.into_tagged_value() } pub fn from_ini_string_to_value( s: String, - span: impl Into, -) -> Result, Box> { + tag: impl Into, +) -> Result, Box> { let v: HashMap> = serde_ini::from_str(&s)?; - Ok(convert_ini_top_to_nu_value(&v, span)) + Ok(convert_ini_top_to_nu_value(&v, tag)) } pub fn from_ini(args: CommandArgs, registry: &CommandRegistry) -> Result { @@ -44,20 +44,29 @@ pub fn from_ini(args: CommandArgs, registry: &CommandRegistry) -> Result match from_ini_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(e) => Err(ShellError::maybe_labeled_error( - "Could not parse as INI", - format!("{:#?}", e), + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_ini_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as INI", + "input cannot be parsed as INI", + span, + "value originates from here", + value_tag.span, + )), + } + } + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + a.span(), )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/from_json.rs b/src/commands/from_json.rs index 110a62eb88..2939f7f38f 100644 --- a/src/commands/from_json.rs +++ b/src/commands/from_json.rs @@ -1,46 +1,46 @@ use crate::object::base::OF64; -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; -fn convert_json_value_to_nu_value(v: &serde_hjson::Value, span: impl Into) -> Spanned { - let span = span.into(); +fn convert_json_value_to_nu_value(v: &serde_hjson::Value, tag: impl Into) -> Tagged { + let tag = tag.into(); match v { serde_hjson::Value::Null => { - Value::Primitive(Primitive::String(String::from(""))).spanned(span) + Value::Primitive(Primitive::String(String::from(""))).tagged(tag) } - serde_hjson::Value::Bool(b) => Value::Primitive(Primitive::Boolean(*b)).spanned(span), + serde_hjson::Value::Bool(b) => Value::Primitive(Primitive::Boolean(*b)).tagged(tag), serde_hjson::Value::F64(n) => { - Value::Primitive(Primitive::Float(OF64::from(*n))).spanned(span) + Value::Primitive(Primitive::Float(OF64::from(*n))).tagged(tag) } - serde_hjson::Value::U64(n) => Value::Primitive(Primitive::Int(*n as i64)).spanned(span), - serde_hjson::Value::I64(n) => Value::Primitive(Primitive::Int(*n as i64)).spanned(span), + serde_hjson::Value::U64(n) => Value::Primitive(Primitive::Int(*n as i64)).tagged(tag), + serde_hjson::Value::I64(n) => Value::Primitive(Primitive::Int(*n as i64)).tagged(tag), serde_hjson::Value::String(s) => { - Value::Primitive(Primitive::String(String::from(s))).spanned(span) + Value::Primitive(Primitive::String(String::from(s))).tagged(tag) } serde_hjson::Value::Array(a) => Value::List( a.iter() - .map(|x| convert_json_value_to_nu_value(x, span)) + .map(|x| convert_json_value_to_nu_value(x, tag)) .collect(), ) - .spanned(span), + .tagged(tag), serde_hjson::Value::Object(o) => { - let mut collected = SpannedDictBuilder::new(span); + let mut collected = TaggedDictBuilder::new(tag); for (k, v) in o.iter() { - collected.insert_spanned(k.clone(), convert_json_value_to_nu_value(v, span)); + collected.insert_tagged(k.clone(), convert_json_value_to_nu_value(v, tag)); } - collected.into_spanned_value() + collected.into_tagged_value() } } } pub fn from_json_string_to_value( s: String, - span: impl Into, -) -> serde_hjson::Result> { + tag: impl Into, +) -> serde_hjson::Result> { let v: serde_hjson::Value = serde_hjson::from_str(&s)?; - Ok(convert_json_value_to_nu_value(&v, span)) + Ok(convert_json_value_to_nu_value(&v, tag)) } pub fn from_json( @@ -53,20 +53,29 @@ pub fn from_json( Ok(out .values - .map(move |a| match a.item { - Value::Primitive(Primitive::String(s)) => match from_json_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(_) => Err(ShellError::maybe_labeled_error( - "Could not parse as JSON", - "piped data failed JSON parse", + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_json_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as JSON", + "input cannot be parsed as JSON", + span, + "value originates from here", + value_tag.span, + )), + } + } + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + a.span(), )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/from_toml.rs b/src/commands/from_toml.rs index d051f84e2e..9594aece10 100644 --- a/src/commands/from_toml.rs +++ b/src/commands/from_toml.rs @@ -1,44 +1,42 @@ use crate::object::base::OF64; -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; -pub fn convert_toml_value_to_nu_value(v: &toml::Value, span: impl Into) -> Spanned { - let span = span.into(); +pub fn convert_toml_value_to_nu_value(v: &toml::Value, tag: impl Into) -> Tagged { + let tag = tag.into(); match v { - toml::Value::Boolean(b) => Value::Primitive(Primitive::Boolean(*b)).spanned(span), - toml::Value::Integer(n) => Value::Primitive(Primitive::Int(*n)).spanned(span), - toml::Value::Float(n) => Value::Primitive(Primitive::Float(OF64::from(*n))).spanned(span), - toml::Value::String(s) => { - Value::Primitive(Primitive::String(String::from(s))).spanned(span) - } + toml::Value::Boolean(b) => Value::Primitive(Primitive::Boolean(*b)).tagged(tag), + toml::Value::Integer(n) => Value::Primitive(Primitive::Int(*n)).tagged(tag), + toml::Value::Float(n) => Value::Primitive(Primitive::Float(OF64::from(*n))).tagged(tag), + toml::Value::String(s) => Value::Primitive(Primitive::String(String::from(s))).tagged(tag), toml::Value::Array(a) => Value::List( a.iter() - .map(|x| convert_toml_value_to_nu_value(x, span)) + .map(|x| convert_toml_value_to_nu_value(x, tag)) .collect(), ) - .spanned(span), + .tagged(tag), toml::Value::Datetime(dt) => { - Value::Primitive(Primitive::String(dt.to_string())).spanned(span) + Value::Primitive(Primitive::String(dt.to_string())).tagged(tag) } toml::Value::Table(t) => { - let mut collected = SpannedDictBuilder::new(span); + let mut collected = TaggedDictBuilder::new(tag); for (k, v) in t.iter() { - collected.insert_spanned(k.clone(), convert_toml_value_to_nu_value(v, span)); + collected.insert_tagged(k.clone(), convert_toml_value_to_nu_value(v, tag)); } - collected.into_spanned_value() + collected.into_tagged_value() } } } pub fn from_toml_string_to_value( s: String, - span: impl Into, -) -> Result, Box> { + tag: impl Into, +) -> Result, Box> { let v: toml::Value = s.parse::()?; - Ok(convert_toml_value_to_nu_value(&v, span)) + Ok(convert_toml_value_to_nu_value(&v, tag)) } pub fn from_toml( @@ -51,20 +49,29 @@ pub fn from_toml( Ok(out .values - .map(move |a| match a.item { - Value::Primitive(Primitive::String(s)) => match from_toml_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(_) => Err(ShellError::maybe_labeled_error( - "Could not parse as TOML", - "piped data failed TOML parse", + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_toml_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as TOML", + "input cannot be parsed as TOML", + span, + "value originates from here", + value_tag.span, + )), + } + } + x => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + format!("{} originates from here", x.type_name()), + value_tag.span, )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/from_xml.rs b/src/commands/from_xml.rs index 2aec6ac0be..a2eebad624 100644 --- a/src/commands/from_xml.rs +++ b/src/commands/from_xml.rs @@ -1,24 +1,21 @@ -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; -fn from_node_to_value<'a, 'd>( - n: &roxmltree::Node<'a, 'd>, - span: impl Into, -) -> Spanned { - let span = span.into(); +fn from_node_to_value<'a, 'd>(n: &roxmltree::Node<'a, 'd>, tag: impl Into) -> Tagged { + let tag = tag.into(); if n.is_element() { let name = n.tag_name().name().trim().to_string(); let mut children_values = vec![]; for c in n.children() { - children_values.push(from_node_to_value(&c, span)); + children_values.push(from_node_to_value(&c, tag)); } - let children_values: Vec> = children_values + let children_values: Vec> = children_values .into_iter() .filter(|x| match x { - Spanned { + Tagged { item: Value::Primitive(Primitive::String(f)), .. } => { @@ -32,31 +29,31 @@ fn from_node_to_value<'a, 'd>( }) .collect(); - let mut collected = SpannedDictBuilder::new(span); + let mut collected = TaggedDictBuilder::new(tag); collected.insert(name.clone(), Value::List(children_values)); - collected.into_spanned_value() + collected.into_tagged_value() } else if n.is_comment() { - Value::string("").spanned(span) + Value::string("").tagged(tag) } else if n.is_pi() { - Value::string("").spanned(span) + Value::string("").tagged(tag) } else if n.is_text() { - Value::string(n.text().unwrap()).spanned(span) + Value::string(n.text().unwrap()).tagged(tag) } else { - Value::string("").spanned(span) + Value::string("").tagged(tag) } } -fn from_document_to_value(d: &roxmltree::Document, span: impl Into) -> Spanned { - from_node_to_value(&d.root_element(), span) +fn from_document_to_value(d: &roxmltree::Document, tag: impl Into) -> Tagged { + from_node_to_value(&d.root_element(), tag) } pub fn from_xml_string_to_value( s: String, - span: impl Into, -) -> Result, Box> { + tag: impl Into, +) -> Result, Box> { let parsed = roxmltree::Document::parse(&s)?; - Ok(from_document_to_value(&parsed, span)) + Ok(from_document_to_value(&parsed, tag)) } pub fn from_xml(args: CommandArgs, registry: &CommandRegistry) -> Result { @@ -65,20 +62,29 @@ pub fn from_xml(args: CommandArgs, registry: &CommandRegistry) -> Result match from_xml_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(_) => Err(ShellError::maybe_labeled_error( - "Could not parse as XML", - "piped data failed XML parse", + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_xml_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as XML", + "input cannot be parsed as XML", + span, + "value originates from here", + value_tag.span, + )), + } + } + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + a.span(), )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/from_yaml.rs b/src/commands/from_yaml.rs index eb38159df7..7f3b0f13d6 100644 --- a/src/commands/from_yaml.rs +++ b/src/commands/from_yaml.rs @@ -1,51 +1,50 @@ use crate::object::base::OF64; -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; -fn convert_yaml_value_to_nu_value(v: &serde_yaml::Value, span: impl Into) -> Spanned { - let span = span.into(); +fn convert_yaml_value_to_nu_value(v: &serde_yaml::Value, tag: impl Into) -> Tagged { + let tag = tag.into(); match v { - serde_yaml::Value::Bool(b) => Value::Primitive(Primitive::Boolean(*b)).spanned(span), + serde_yaml::Value::Bool(b) => Value::Primitive(Primitive::Boolean(*b)).tagged(tag), serde_yaml::Value::Number(n) if n.is_i64() => { - Value::Primitive(Primitive::Int(n.as_i64().unwrap())).spanned(span) + Value::Primitive(Primitive::Int(n.as_i64().unwrap())).tagged(tag) } serde_yaml::Value::Number(n) if n.is_f64() => { - Value::Primitive(Primitive::Float(OF64::from(n.as_f64().unwrap()))).spanned(span) + Value::Primitive(Primitive::Float(OF64::from(n.as_f64().unwrap()))).tagged(tag) } - serde_yaml::Value::String(s) => Value::string(s).spanned(span), + serde_yaml::Value::String(s) => Value::string(s).tagged(tag), serde_yaml::Value::Sequence(a) => Value::List( a.iter() - .map(|x| convert_yaml_value_to_nu_value(x, span)) + .map(|x| convert_yaml_value_to_nu_value(x, tag)) .collect(), ) - .spanned(span), + .tagged(tag), serde_yaml::Value::Mapping(t) => { - let mut collected = SpannedDictBuilder::new(span); + let mut collected = TaggedDictBuilder::new(tag); for (k, v) in t.iter() { match k { serde_yaml::Value::String(k) => { - collected - .insert_spanned(k.clone(), convert_yaml_value_to_nu_value(v, span)); + collected.insert_tagged(k.clone(), convert_yaml_value_to_nu_value(v, tag)); } _ => unimplemented!("Unknown key type"), } } - collected.into_spanned_value() + collected.into_tagged_value() } - serde_yaml::Value::Null => Value::Primitive(Primitive::Nothing).spanned(span), + serde_yaml::Value::Null => Value::Primitive(Primitive::Nothing).tagged(tag), x => unimplemented!("Unsupported yaml case: {:?}", x), } } pub fn from_yaml_string_to_value( s: String, - span: impl Into, -) -> serde_yaml::Result> { + tag: impl Into, +) -> serde_yaml::Result> { let v: serde_yaml::Value = serde_yaml::from_str(&s)?; - Ok(convert_yaml_value_to_nu_value(&v, span)) + Ok(convert_yaml_value_to_nu_value(&v, tag)) } pub fn from_yaml( @@ -57,20 +56,29 @@ pub fn from_yaml( Ok(out .values - .map(move |a| match a.item { - Value::Primitive(Primitive::String(s)) => match from_yaml_string_to_value(s, span) { - Ok(x) => ReturnSuccess::value(x.spanned(a.span)), - Err(_) => Err(ShellError::maybe_labeled_error( - "Could not parse as YAML", - "piped data failed YAML parse", + .map(move |a| { + let value_tag = a.tag(); + match a.item { + Value::Primitive(Primitive::String(s)) => { + match from_yaml_string_to_value(s, value_tag) { + Ok(x) => ReturnSuccess::value(x), + Err(_) => Err(ShellError::labeled_error_with_secondary( + "Could not parse as YAML", + "input cannot be parsed as YAML", + span, + "value originates from here", + value_tag.span, + )), + } + } + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + a.span(), )), - }, - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - span, - )), + } }) .to_output_stream()) } diff --git a/src/commands/get.rs b/src/commands/get.rs index b90ddd837f..873fd9f0d3 100644 --- a/src/commands/get.rs +++ b/src/commands/get.rs @@ -7,7 +7,7 @@ pub struct Get; #[derive(Deserialize)] pub struct GetArgs { - rest: Vec>, + rest: Vec>, } impl StaticCommand for Get { @@ -27,7 +27,7 @@ impl StaticCommand for Get { } } -fn get_member(path: &Spanned, obj: &Spanned) -> Result, ShellError> { +fn get_member(path: &Tagged, obj: &Tagged) -> Result, ShellError> { let mut current = obj; for p in path.split(".") { match current.get_data_by_key(p) { @@ -36,7 +36,7 @@ fn get_member(path: &Spanned, obj: &Spanned) -> Result { diff --git a/src/commands/lines.rs b/src/commands/lines.rs index e1c46acff3..65cf7e06ae 100644 --- a/src/commands/lines.rs +++ b/src/commands/lines.rs @@ -23,17 +23,19 @@ pub fn lines(args: CommandArgs, registry: &CommandRegistry) -> Result { let mut result = VecDeque::new(); - result.push_back(Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", + result.push_back(Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + v.span(), ))); result } diff --git a/src/commands/ls.rs b/src/commands/ls.rs index baba51a31c..5b1d260b5f 100644 --- a/src/commands/ls.rs +++ b/src/commands/ls.rs @@ -1,17 +1,14 @@ use crate::errors::ShellError; -use crate::object::{dir_entry_dict, Primitive, Value}; -use crate::parser::Spanned; +use crate::object::dir_entry_dict; use crate::prelude::*; use std::path::{Path, PathBuf}; pub fn ls(args: CommandArgs, registry: &CommandRegistry) -> Result { - let env = args.env.clone(); - let env = env.lock().unwrap(); let args = args.evaluate_once(registry)?; - let path = env.path.to_path_buf(); + let path = PathBuf::from(args.shell_manager.path()); let mut full_path = PathBuf::from(path); match &args.nth(0) { - Some(Spanned { + Some(Tagged { item: Value::Primitive(Primitive::String(s)), .. }) => full_path.push(Path::new(&s)), @@ -26,10 +23,10 @@ pub fn ls(args: CommandArgs, registry: &CommandRegistry) -> Result Result Result { + // let args = args.evaluate_once(registry)?; + // args.shell_manager.ls(args, args.input) } diff --git a/src/commands/mkdir.rs b/src/commands/mkdir.rs new file mode 100644 index 0000000000..ff62b2823d --- /dev/null +++ b/src/commands/mkdir.rs @@ -0,0 +1,45 @@ +use crate::errors::ShellError; +use crate::parser::hir::SyntaxType; +use crate::parser::registry::{CommandRegistry, Signature}; +use crate::prelude::*; +use std::path::{Path, PathBuf}; + +pub struct Mkdir; + +impl StaticCommand for Mkdir { + fn run( + &self, + args: CommandArgs, + registry: &CommandRegistry, + ) -> Result { + mkdir(args, registry) + } + + fn name(&self) -> &str { + "mkdir" + } + + fn signature(&self) -> Signature { + Signature::build("mkdir").named("file", SyntaxType::Any) + } +} + +pub fn mkdir(args: CommandArgs, registry: &CommandRegistry) -> Result { + let args = args.evaluate_once(registry)?; + + let mut full_path = PathBuf::from(args.shell_manager.path()); + + match &args.nth(0) { + Some(Tagged { item: value, .. }) => full_path.push(Path::new(&value.as_string()?)), + _ => {} + } + + match std::fs::create_dir_all(full_path) { + Err(reason) => Err(ShellError::labeled_error( + reason.to_string(), + reason.to_string(), + args.nth(0).unwrap().span(), + )), + Ok(_) => Ok(OutputStream::empty()), + } +} diff --git a/src/commands/next.rs b/src/commands/next.rs new file mode 100644 index 0000000000..17e952f637 --- /dev/null +++ b/src/commands/next.rs @@ -0,0 +1,7 @@ +use crate::commands::command::CommandAction; +use crate::errors::ShellError; +use crate::prelude::*; + +pub fn next(_args: CommandArgs, _registry: &CommandRegistry) -> Result { + Ok(vec![Ok(ReturnSuccess::Action(CommandAction::NextShell))].into()) +} diff --git a/src/commands/open.rs b/src/commands/open.rs index c40e199d4d..97308c0479 100644 --- a/src/commands/open.rs +++ b/src/commands/open.rs @@ -3,7 +3,6 @@ use crate::context::SpanSource; use crate::errors::ShellError; use crate::object::{Primitive, Value}; use crate::parser::hir::SyntaxType; -use crate::parser::parse::span::Span; use crate::parser::registry::{self, Signature}; use crate::prelude::*; use mime::Mime; @@ -15,7 +14,7 @@ pub struct Open; #[derive(Deserialize)] pub struct OpenArgs { - path: Spanned, + path: Tagged, raw: bool, } @@ -41,24 +40,28 @@ impl StaticCommand for Open { fn run( OpenArgs { raw, path }: OpenArgs, - RunnableContext { env, name, .. }: RunnableContext, + RunnableContext { + shell_manager, + name, + .. + }: RunnableContext, ) -> Result { - let cwd = env.lock().unwrap().path().to_path_buf(); + let cwd = PathBuf::from(shell_manager.path()); let full_path = PathBuf::from(cwd); let path_str = path.to_str().ok_or(ShellError::type_error( "Path", - "invalid path".spanned(path.span), + "invalid path".tagged(path.tag()), ))?; - let (file_extension, contents, contents_span, span_source) = - fetch(&full_path, path_str, path.span)?; + let (file_extension, contents, contents_tag, span_source) = + fetch(&full_path, path_str, path.span())?; let file_extension = if raw { None } else { file_extension }; let mut stream = VecDeque::new(); - if let Some(uuid) = contents_span.source { + if let Some(uuid) = contents_tag.origin { // If we have loaded something, track its source stream.push_back(ReturnSuccess::action(CommandAction::AddSpanSource( uuid, @@ -68,10 +71,10 @@ fn run( match contents { Value::Primitive(Primitive::String(string)) => { - let value = parse_as_value(file_extension, string, contents_span, name)?; + let value = parse_as_value(file_extension, string, contents_tag, name)?; match value { - Spanned { + Tagged { item: Value::List(list), .. } => { @@ -83,7 +86,7 @@ fn run( } } - other => stream.push_back(ReturnSuccess::value(other.spanned(contents_span))), + other => stream.push_back(ReturnSuccess::value(other.tagged(contents_tag))), }; Ok(stream.boxed().to_output_stream()) @@ -149,7 +152,7 @@ pub fn fetch( cwd: &PathBuf, location: &str, span: Span, -) -> Result<(Option, Value, Span, SpanSource), ShellError> { +) -> Result<(Option, Value, Tag, SpanSource), ShellError> { let mut cwd = cwd.clone(); if location.starts_with("http:") || location.starts_with("https:") { let response = reqwest::get(location); @@ -161,13 +164,19 @@ pub fn fetch( (mime::APPLICATION, mime::XML) => Ok(( Some("xml".to_string()), Value::string(r.text().unwrap()), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )), (mime::APPLICATION, mime::JSON) => Ok(( Some("json".to_string()), Value::string(r.text().unwrap()), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )), (mime::APPLICATION, mime::OCTET_STREAM) => { @@ -182,7 +191,10 @@ pub fn fetch( Ok(( None, Value::Binary(buf), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )) } @@ -198,14 +210,20 @@ pub fn fetch( Ok(( Some(image_ty.to_string()), Value::Binary(buf), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )) } (mime::TEXT, mime::HTML) => Ok(( Some("html".to_string()), Value::string(r.text().unwrap()), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )), (mime::TEXT, mime::PLAIN) => { @@ -223,14 +241,23 @@ pub fn fetch( Ok(( path_extension, Value::string(r.text().unwrap()), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )) } (ty, sub_ty) => Ok(( None, - Value::string(format!("Not yet support MIME type: {} {}", ty, sub_ty)), - Span::unknown_with_uuid(Uuid::new_v4()), + Value::string(format!( + "Not yet supported MIME type: {} {}", + ty, sub_ty + )), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )), } @@ -238,7 +265,10 @@ pub fn fetch( None => Ok(( None, Value::string(format!("No content type found")), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::Url(r.url().to_string()), )), }, @@ -258,13 +288,19 @@ pub fn fetch( cwd.extension() .map(|name| name.to_string_lossy().to_string()), Value::string(s), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::File(cwd.to_string_lossy().to_string()), )), Err(_) => Ok(( None, Value::Binary(bytes), - Span::unknown_with_uuid(Uuid::new_v4()), + Tag { + span, + origin: Some(Uuid::new_v4()), + }, SpanSource::File(cwd.to_string_lossy().to_string()), )), }, @@ -282,69 +318,57 @@ pub fn fetch( pub fn parse_as_value( extension: Option, contents: String, - contents_span: Span, - name_span: Option, -) -> Result, ShellError> { + contents_tag: Tag, + name_span: Span, +) -> Result, ShellError> { match extension { - Some(x) if x == "csv" => { - crate::commands::from_csv::from_csv_string_to_value(contents, contents_span) - .map(|c| c.spanned(contents_span)) - .map_err(move |_| { - ShellError::maybe_labeled_error( - "Could not open as CSV", - "could not open as CSV", - name_span, - ) - }) - } + Some(x) if x == "csv" => crate::commands::from_csv::from_csv_string_to_value( + contents, + contents_tag, + ) + .map_err(move |_| { + ShellError::labeled_error("Could not open as CSV", "could not open as CSV", name_span) + }), Some(x) if x == "toml" => { - crate::commands::from_toml::from_toml_string_to_value(contents, contents_span) - .map(|c| c.spanned(contents_span)) - .map_err(move |_| { - ShellError::maybe_labeled_error( + crate::commands::from_toml::from_toml_string_to_value(contents, contents_tag).map_err( + move |_| { + ShellError::labeled_error( "Could not open as TOML", "could not open as TOML", name_span, ) - }) - } - Some(x) if x == "json" => { - crate::commands::from_json::from_json_string_to_value(contents, contents_span) - .map(|c| c.spanned(contents_span)) - .map_err(move |_| { - ShellError::maybe_labeled_error( - "Could not open as JSON", - "could not open as JSON", - name_span, - ) - }) - } - Some(x) if x == "ini" => { - crate::commands::from_ini::from_ini_string_to_value(contents, contents_span) - .map(|c| c.spanned(contents_span)) - .map_err(move |_| { - ShellError::maybe_labeled_error( - "Could not open as INI", - "could not open as INI", - name_span, - ) - }) - } - Some(x) if x == "xml" => { - crate::commands::from_xml::from_xml_string_to_value(contents, contents_span).map_err( - move |_| { - ShellError::maybe_labeled_error( - "Could not open as XML", - "could not open as XML", - name_span, - ) }, ) } - Some(x) if x == "yml" => { - crate::commands::from_yaml::from_yaml_string_to_value(contents, contents_span).map_err( + Some(x) if x == "json" => { + crate::commands::from_json::from_json_string_to_value(contents, contents_tag).map_err( move |_| { - ShellError::maybe_labeled_error( + ShellError::labeled_error( + "Could not open as JSON", + "could not open as JSON", + name_span, + ) + }, + ) + } + Some(x) if x == "ini" => crate::commands::from_ini::from_ini_string_to_value( + contents, + contents_tag, + ) + .map_err(move |_| { + ShellError::labeled_error("Could not open as INI", "could not open as INI", name_span) + }), + Some(x) if x == "xml" => crate::commands::from_xml::from_xml_string_to_value( + contents, + contents_tag, + ) + .map_err(move |_| { + ShellError::labeled_error("Could not open as XML", "could not open as XML", name_span) + }), + Some(x) if x == "yml" => { + crate::commands::from_yaml::from_yaml_string_to_value(contents, contents_tag).map_err( + move |_| { + ShellError::labeled_error( "Could not open as YAML", "could not open as YAML", name_span, @@ -353,9 +377,9 @@ pub fn parse_as_value( ) } Some(x) if x == "yaml" => { - crate::commands::from_yaml::from_yaml_string_to_value(contents, contents_span).map_err( + crate::commands::from_yaml::from_yaml_string_to_value(contents, contents_tag).map_err( move |_| { - ShellError::maybe_labeled_error( + ShellError::labeled_error( "Could not open as YAML", "could not open as YAML", name_span, @@ -363,6 +387,6 @@ pub fn parse_as_value( }, ) } - _ => Ok(Value::string(contents).spanned(contents_span)), + _ => Ok(Value::string(contents).tagged(contents_tag)), } } diff --git a/src/commands/pick.rs b/src/commands/pick.rs index c122ceec8b..71c0193399 100644 --- a/src/commands/pick.rs +++ b/src/commands/pick.rs @@ -10,7 +10,7 @@ pub fn pick(args: CommandArgs, registry: &CommandRegistry) -> Result Result {} Err(e) => { return Err(e); + */ + let mut bos: VecDeque> = VecDeque::new(); + bos.push_back(Value::Primitive(Primitive::BeginningOfStream).tagged_unknown()); + + let mut eos: VecDeque> = VecDeque::new(); + eos.push_back(Value::Primitive(Primitive::EndOfStream).tagged_unknown()); + + let call_info = args.call_info.clone(); + + let stream = bos + .chain(args.input.values) + .chain(eos) + .map(move |v| match v { + Tagged { + item: Value::Primitive(Primitive::BeginningOfStream), + .. + } => { + let stdin = child.stdin.as_mut().expect("Failed to open stdin"); + let stdout = child.stdout.as_mut().expect("Failed to open stdout"); + + let mut reader = BufReader::new(stdout); + + let request = JsonRpc::new("begin_filter", call_info.clone()); + let request_raw = serde_json::to_string(&request).unwrap(); + let _ = stdin.write(format!("{}\n", request_raw).as_bytes()); // TODO: Handle error + + let mut input = String::new(); + match reader.read_line(&mut input) { + Ok(_) => { + let response = serde_json::from_str::(&input); + match response { + Ok(NuResult::response { params }) => match params { + Ok(params) => params, + Err(e) => { + let mut result = VecDeque::new(); + result.push_back(ReturnValue::Err(e)); + result + } + }, + Err(e) => { + let mut result = VecDeque::new(); + result.push_back(Err(ShellError::string(format!( + "Error while processing begin_filter response: {:?} {}", + e, input + )))); + result + } } - }, + } Err(e) => { - return Err(ShellError::string(format!( - "Error while processing input: {:?} {}", - e, input - ))); + let mut result = VecDeque::new(); + result.push_back(Err(ShellError::string(format!( + "Error while reading begin_filter response: {:?}", + e + )))); + result } } } - _ => {} - } - } - - let mut eos: VecDeque> = VecDeque::new(); - eos.push_back(Value::Primitive(Primitive::EndOfStream).spanned_unknown()); - - let stream = args - .input - .values - .chain(eos) - .map(move |v| match v { - Spanned { + Tagged { item: Value::Primitive(Primitive::EndOfStream), .. } => { let stdin = child.stdin.as_mut().expect("Failed to open stdin"); let stdout = child.stdout.as_mut().expect("Failed to open stdout"); - let _ = BufReader::new(stdout); - let request: JsonRpc> = JsonRpc::new("quit", vec![]); + let mut reader = BufReader::new(stdout); + + let request: JsonRpc> = JsonRpc::new("end_filter", vec![]); let request_raw = serde_json::to_string(&request).unwrap(); let _ = stdin.write(format!("{}\n", request_raw).as_bytes()); // TODO: Handle error - VecDeque::new() + let mut input = String::new(); + match reader.read_line(&mut input) { + Ok(_) => { + let response = serde_json::from_str::(&input); + match response { + Ok(NuResult::response { params }) => match params { + Ok(params) => { + let request: JsonRpc> = + JsonRpc::new("quit", vec![]); + let request_raw = serde_json::to_string(&request).unwrap(); + let _ = stdin.write(format!("{}\n", request_raw).as_bytes()); // TODO: Handle error + + params + } + Err(e) => { + let mut result = VecDeque::new(); + result.push_back(ReturnValue::Err(e)); + result + } + }, + Err(e) => { + let mut result = VecDeque::new(); + result.push_back(Err(ShellError::string(format!( + "Error while processing end_filter response: {:?} {}", + e, input + )))); + result + } + } + } + Err(e) => { + let mut result = VecDeque::new(); + result.push_back(Err(ShellError::string(format!( + "Error while reading end_filter: {:?}", + e + )))); + result + } + } } _ => { let stdin = child.stdin.as_mut().expect("Failed to open stdin"); @@ -152,7 +229,7 @@ pub fn filter_plugin( Err(e) => { let mut result = VecDeque::new(); result.push_back(Err(ShellError::string(format!( - "Error while processing input: {:?} {}", + "Error while processing filter response: {:?} {}", e, input )))); result @@ -162,7 +239,7 @@ pub fn filter_plugin( Err(e) => { let mut result = VecDeque::new(); result.push_back(Err(ShellError::string(format!( - "Error while processing input: {:?}", + "Error while reading filter response: {:?}", e )))); result diff --git a/src/commands/prev.rs b/src/commands/prev.rs new file mode 100644 index 0000000000..ea6e3c8d5c --- /dev/null +++ b/src/commands/prev.rs @@ -0,0 +1,7 @@ +use crate::commands::command::CommandAction; +use crate::errors::ShellError; +use crate::prelude::*; + +pub fn prev(_args: CommandArgs, _registry: &CommandRegistry) -> Result { + Ok(vec![Ok(ReturnSuccess::Action(CommandAction::PreviousShell))].into()) +} diff --git a/src/commands/ps.rs b/src/commands/ps.rs index ed1479007f..3bac046889 100644 --- a/src/commands/ps.rs +++ b/src/commands/ps.rs @@ -10,7 +10,7 @@ pub fn ps(args: CommandArgs, _registry: &CommandRegistry) -> Result>(); Ok(list.from_input_stream()) diff --git a/src/commands/reject.rs b/src/commands/reject.rs index 8801efc6b7..f90f60b129 100644 --- a/src/commands/reject.rs +++ b/src/commands/reject.rs @@ -10,7 +10,7 @@ pub fn reject(args: CommandArgs, registry: &CommandRegistry) -> Result Result, + path: Tagged, recursive: bool, } @@ -43,17 +45,32 @@ pub fn rm( file => full_path.push(file), } - if full_path.is_dir() { - if !recursive { - return Err(ShellError::maybe_labeled_error( - "is a directory", - "", - context.name, - )); + let entries = glob(&full_path.to_string_lossy()); + + if entries.is_err() { + return Err(ShellError::string("Invalid pattern.")); + } + + let entries = entries.unwrap(); + + for entry in entries { + match entry { + Ok(path) => { + if path.is_dir() { + if !recursive { + return Err(ShellError::string( + "is a directory", + // "is a directory", + // args.call_info.name_span, + )); + } + std::fs::remove_dir_all(&path).expect("can not remove directory"); + } else if path.is_file() { + std::fs::remove_file(&path).expect("can not remove file"); + } + } + Err(e) => return Err(ShellError::string(&format!("{:?}", e))), } - std::fs::remove_dir_all(&full_path).expect("can not remove directory"); - } else if full_path.is_file() { - std::fs::remove_file(&full_path).expect("can not remove file"); } Ok(OutputStream::empty()) diff --git a/src/commands/save.rs b/src/commands/save.rs index 86be95404e..00dcd6ee79 100644 --- a/src/commands/save.rs +++ b/src/commands/save.rs @@ -5,7 +5,6 @@ use crate::commands::to_yaml::value_to_yaml_value; use crate::commands::StaticCommand; use crate::errors::ShellError; use crate::object::Value; -use crate::parser::Spanned; use crate::prelude::*; use std::path::PathBuf; @@ -13,7 +12,7 @@ pub struct Save; #[derive(Deserialize)] pub struct SaveArgs { - path: Spanned, + path: Tagged, raw: bool, } @@ -48,7 +47,7 @@ pub fn save( full_path.push(path.item()); let stream = async_stream_block! { - let input: Vec> = context.input.values.collect().await; + let input: Vec> = context.input.values.collect().await; let contents = match full_path.extension() { Some(x) if x == "csv" && !save_raw => { diff --git a/src/commands/shells.rs b/src/commands/shells.rs new file mode 100644 index 0000000000..e97fd0a9ec --- /dev/null +++ b/src/commands/shells.rs @@ -0,0 +1,18 @@ +use crate::errors::ShellError; +use crate::object::TaggedDictBuilder; +use crate::prelude::*; + +pub fn shells(args: CommandArgs, _registry: &CommandRegistry) -> Result { + let mut shells_out = VecDeque::new(); + let span = args.call_info.name_span; + + for shell in args.shell_manager.shells.lock().unwrap().iter() { + let mut dict = TaggedDictBuilder::new(Tag::unknown_origin(span)); + dict.insert("name", shell.name()); + dict.insert("path", shell.path()); + + shells_out.push_back(dict.into_tagged_value()); + } + + Ok(shells_out.to_output_stream()) +} diff --git a/src/commands/size.rs b/src/commands/size.rs index 9dc497aea8..538662696d 100644 --- a/src/commands/size.rs +++ b/src/commands/size.rs @@ -1,23 +1,26 @@ use crate::errors::ShellError; -use crate::object::{SpannedDictBuilder, Value}; +use crate::object::{TaggedDictBuilder, Value}; use crate::prelude::*; pub fn size(args: CommandArgs, _registry: &CommandRegistry) -> Result { let input = args.input; + let span = args.call_info.name_span; Ok(input .values .map(move |v| match v.item { - Value::Primitive(Primitive::String(s)) => ReturnSuccess::value(count(&s, v.span)), - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", - Some(v.span), + Value::Primitive(Primitive::String(ref s)) => ReturnSuccess::value(count(s, v.tag())), + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", + span, + "value originates from here", + v.span(), )), }) .to_output_stream()) } -fn count(contents: &str, span: impl Into) -> Spanned { +fn count(contents: &str, tag: impl Into) -> Tagged { let mut lines: i64 = 0; let mut words: i64 = 0; let mut chars: i64 = 0; @@ -42,7 +45,7 @@ fn count(contents: &str, span: impl Into) -> Spanned { } } - let mut dict = SpannedDictBuilder::new(span); + let mut dict = TaggedDictBuilder::new(tag); //TODO: add back in name when we have it in the span //dict.insert("name", Value::string(name)); dict.insert("lines", Value::int(lines)); @@ -50,5 +53,5 @@ fn count(contents: &str, span: impl Into) -> Spanned { dict.insert("chars", Value::int(chars)); dict.insert("max length", Value::int(bytes)); - dict.into_spanned_value() + dict.into_tagged_value() } diff --git a/src/commands/sort_by.rs b/src/commands/sort_by.rs index 2a8bd07893..38e240d28c 100644 --- a/src/commands/sort_by.rs +++ b/src/commands/sort_by.rs @@ -21,7 +21,7 @@ pub fn sort_by(args: CommandArgs, registry: &CommandRegistry) -> Result>>>() + .collect::>>>() }); vec.into_iter().collect::>() diff --git a/src/commands/split_column.rs b/src/commands/split_column.rs index f37f9afcb5..68a9ba04ee 100644 --- a/src/commands/split_column.rs +++ b/src/commands/split_column.rs @@ -1,5 +1,5 @@ use crate::errors::ShellError; -use crate::object::{Primitive, SpannedDictBuilder, Value}; +use crate::object::{Primitive, TaggedDictBuilder, Value}; use crate::prelude::*; use log::trace; @@ -14,7 +14,7 @@ pub fn split_column( let positional: Vec<_> = args.positional.iter().flatten().cloned().collect(); if positional.len() == 0 { - return Err(ShellError::maybe_labeled_error( + return Err(ShellError::labeled_error( "Split-column needs more information", "needs parameter (eg split-column \",\")", span, @@ -24,7 +24,7 @@ pub fn split_column( Ok(input .values .map(move |v| match v.item { - Value::Primitive(Primitive::String(s)) => { + Value::Primitive(Primitive::String(ref s)) => { let splitter = positional[0].as_string().unwrap().replace("\\n", "\n"); trace!("splitting with {:?}", splitter); let split_result: Vec<_> = s.split(&splitter).filter(|s| s.trim() != "").collect(); @@ -38,33 +38,35 @@ pub fn split_column( gen_columns.push(format!("Column{}", i + 1)); } - let mut dict = SpannedDictBuilder::new(v.span); + let mut dict = TaggedDictBuilder::new(v.tag()); for (&k, v) in split_result.iter().zip(gen_columns.iter()) { dict.insert(v.clone(), Primitive::String(k.into())); } - ReturnSuccess::value(dict.into_spanned_value()) + ReturnSuccess::value(dict.into_tagged_value()) } else if split_result.len() == (positional.len() - 1) { - let mut dict = SpannedDictBuilder::new(v.span); + let mut dict = TaggedDictBuilder::new(v.tag()); for (&k, v) in split_result.iter().zip(positional.iter().skip(1)) { dict.insert( v.as_string().unwrap(), Value::Primitive(Primitive::String(k.into())), ); } - ReturnSuccess::value(dict.into_spanned_value()) + ReturnSuccess::value(dict.into_tagged_value()) } else { - let mut dict = SpannedDictBuilder::new(v.span); + let mut dict = TaggedDictBuilder::new(v.tag()); for k in positional.iter().skip(1) { dict.insert(k.as_string().unwrap().trim(), Primitive::String("".into())); } - ReturnSuccess::value(dict.into_spanned_value()) + ReturnSuccess::value(dict.into_tagged_value()) } } - _ => Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", + _ => Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + v.span(), )), }) .to_output_stream()) diff --git a/src/commands/split_row.rs b/src/commands/split_row.rs index 22eedfc6c5..3240cc5d54 100644 --- a/src/commands/split_row.rs +++ b/src/commands/split_row.rs @@ -1,6 +1,5 @@ use crate::errors::ShellError; use crate::object::{Primitive, Value}; -use crate::parser::Spanned; use crate::prelude::*; use log::trace; @@ -13,10 +12,10 @@ pub fn split_row( let len = args.len(); let (input, args) = args.parts(); - let positional: Vec> = args.positional.iter().flatten().cloned().collect(); + let positional: Vec> = args.positional.iter().flatten().cloned().collect(); if len == 0 { - return Err(ShellError::maybe_labeled_error( + return Err(ShellError::labeled_error( "Split-row needs more information", "needs parameter (eg split-row \"\\n\")", span, @@ -26,7 +25,7 @@ pub fn split_row( let stream = input .values .map(move |v| match v.item { - Value::Primitive(Primitive::String(s)) => { + Value::Primitive(Primitive::String(ref s)) => { let splitter = positional[0].as_string().unwrap().replace("\\n", "\n"); trace!("splitting with {:?}", splitter); let split_result: Vec<_> = s.split(&splitter).filter(|s| s.trim() != "").collect(); @@ -36,17 +35,19 @@ pub fn split_row( let mut result = VecDeque::new(); for s in split_result { result.push_back(ReturnSuccess::value( - Value::Primitive(Primitive::String(s.into())).spanned(v.span), + Value::Primitive(Primitive::String(s.into())).tagged(v.tag()), )); } result } _ => { let mut result = VecDeque::new(); - result.push_back(Err(ShellError::maybe_labeled_error( - "Expected string values from pipeline", - "expects strings from pipeline", + result.push_back(Err(ShellError::labeled_error_with_secondary( + "Expected a string from pipeline", + "requires string input", span, + "value originates from here", + v.span(), ))); result } diff --git a/src/commands/sysinfo.rs b/src/commands/sysinfo.rs deleted file mode 100644 index c2296a0bdc..0000000000 --- a/src/commands/sysinfo.rs +++ /dev/null @@ -1,133 +0,0 @@ -use crate::errors::ShellError; -use crate::object::base::OF64; -use crate::object::SpannedDictBuilder; -use crate::object::{Primitive, Value}; -use crate::prelude::*; -use sys_info::*; -use sysinfo::{ComponentExt, DiskExt, NetworkExt, RefreshKind, SystemExt}; - -pub fn sysinfo(args: CommandArgs, _registry: &CommandRegistry) -> Result { - let name_span = args.name_span(); - let mut idx = SpannedDictBuilder::new(name_span); - - if let (Ok(name), Ok(version)) = (os_type(), os_release()) { - let mut os_idx = SpannedDictBuilder::new(name_span); - os_idx.insert("name", Primitive::String(name)); - os_idx.insert("version", Primitive::String(version)); - - idx.insert_spanned("os", os_idx.into_spanned_value()); - } - - if let (Ok(num_cpu), Ok(cpu_speed)) = (cpu_num(), cpu_speed()) { - let mut cpu_idx = SpannedDictBuilder::new(name_span); - cpu_idx.insert("num", Primitive::Int(num_cpu as i64)); - cpu_idx.insert("speed", Primitive::Int(cpu_speed as i64)); - - idx.insert_spanned("cpu", cpu_idx); - } - - if let Ok(x) = loadavg() { - let mut load_idx = SpannedDictBuilder::new(name_span); - - load_idx.insert("1min", Primitive::Float(OF64::from(x.one))); - load_idx.insert("5min", Primitive::Float(OF64::from(x.five))); - load_idx.insert("15min", Primitive::Float(OF64::from(x.fifteen))); - - idx.insert_spanned("load avg", load_idx); - } - - if let Ok(x) = mem_info() { - let mut mem_idx = SpannedDictBuilder::new(name_span); - - mem_idx.insert("total", Primitive::Bytes(x.total as u64 * 1024)); - mem_idx.insert("free", Primitive::Bytes(x.free as u64 * 1024)); - mem_idx.insert("avail", Primitive::Bytes(x.avail as u64 * 1024)); - mem_idx.insert("buffers", Primitive::Bytes(x.buffers as u64 * 1024)); - mem_idx.insert("cached", Primitive::Bytes(x.cached as u64 * 1024)); - mem_idx.insert("swap total", Primitive::Bytes(x.swap_total as u64 * 1024)); - mem_idx.insert("swap free", Primitive::Bytes(x.swap_free as u64 * 1024)); - - idx.insert_spanned("mem", mem_idx); - } - - /* - if let Ok(x) = disk_info() { - let mut disk_idx = indexmap::IndexMap::new(); - disk_idx.insert( - "total".to_string(), - Value::Primitive(Primitive::Bytes(x.total as u128 * 1024)), - ); - disk_idx.insert( - "free".to_string(), - Value::Primitive(Primitive::Bytes(x.free as u128 * 1024)), - ); - } - */ - - if let Ok(x) = hostname() { - idx.insert("hostname", Primitive::String(x)); - } - - #[cfg(not(windows))] - { - if let Ok(x) = boottime() { - let mut boottime_idx = SpannedDictBuilder::new(name_span); - boottime_idx.insert("days", Primitive::Int(x.tv_sec / (24 * 3600))); - boottime_idx.insert("hours", Primitive::Int((x.tv_sec / 3600) % 24)); - boottime_idx.insert("mins", Primitive::Int((x.tv_sec / 60) % 60)); - - idx.insert_spanned("uptime", boottime_idx); - } - } - - let system = sysinfo::System::new_with_specifics(RefreshKind::everything().without_processes()); - let components_list = system.get_components_list(); - if components_list.len() > 0 { - let mut v: Vec> = vec![]; - for component in components_list { - let mut component_idx = SpannedDictBuilder::new(name_span); - component_idx.insert("name", Primitive::String(component.get_label().to_string())); - component_idx.insert( - "temp", - Primitive::Float(OF64::from(component.get_temperature() as f64)), - ); - component_idx.insert( - "max", - Primitive::Float(OF64::from(component.get_max() as f64)), - ); - if let Some(critical) = component.get_critical() { - component_idx.insert("critical", Primitive::Float(OF64::from(critical as f64))); - } - v.push(component_idx.into()); - } - idx.insert("temps", Value::List(v)); - } - - let disks = system.get_disks(); - if disks.len() > 0 { - let mut v = vec![]; - - for disk in disks { - let mut disk_idx = SpannedDictBuilder::new(name_span); - disk_idx.insert("name", Value::string(disk.get_name().to_string_lossy())); - disk_idx.insert("available", Value::bytes(disk.get_available_space())); - disk_idx.insert("total", Value::bytes(disk.get_total_space())); - v.push(disk_idx.into()); - } - - idx.insert("disks", Value::List(v)); - } - - let network = system.get_network(); - let incoming = network.get_income(); - let outgoing = network.get_outcome(); - - let mut network_idx = SpannedDictBuilder::new(name_span); - network_idx.insert("incoming", Value::bytes(incoming)); - network_idx.insert("outgoing", Value::bytes(outgoing)); - idx.insert_spanned("network", network_idx); - - let stream = stream![idx.into_spanned_value()]; - - Ok(stream.from_input_stream()) -} diff --git a/src/commands/table.rs b/src/commands/table.rs index a210e5842c..6a8edda2fa 100644 --- a/src/commands/table.rs +++ b/src/commands/table.rs @@ -27,7 +27,7 @@ impl StaticCommand for Table { pub fn table(_args: TableArgs, context: RunnableContext) -> Result { let stream = async_stream_block! { - let input: Vec> = context.input.into_vec().await; + let input: Vec> = context.input.into_vec().await; if input.len() > 0 { let mut host = context.host.lock().unwrap(); let view = TableView::from_list(&input); diff --git a/src/commands/tags.rs b/src/commands/tags.rs new file mode 100644 index 0000000000..990ca252e1 --- /dev/null +++ b/src/commands/tags.rs @@ -0,0 +1,33 @@ +use crate::errors::ShellError; +use crate::object::{TaggedDictBuilder, Value}; +use crate::prelude::*; + +pub fn tags(args: CommandArgs, _registry: &CommandRegistry) -> Result { + let source_map = args.call_info.source_map.clone(); + Ok(args + .input + .values + .map(move |v| { + let mut tags = TaggedDictBuilder::new(v.tag()); + { + let origin = v.origin(); + let span = v.span(); + let mut dict = TaggedDictBuilder::new(v.tag()); + dict.insert("start", Value::int(span.start as i64)); + dict.insert("end", Value::int(span.end as i64)); + match origin.map(|x| source_map.get(&x)).flatten() { + Some(SpanSource::File(source)) => { + dict.insert("origin", Value::string(source)); + } + Some(SpanSource::Url(source)) => { + dict.insert("origin", Value::string(source)); + } + _ => {} + } + tags.insert_tagged("span", dict.into_tagged_value()); + } + + tags.into_tagged_value() + }) + .to_output_stream()) +} diff --git a/src/commands/to_array.rs b/src/commands/to_array.rs index 8cd7acc4ef..af031c62c5 100644 --- a/src/commands/to_array.rs +++ b/src/commands/to_array.rs @@ -8,7 +8,7 @@ pub fn to_array( let out = args.input.values.collect(); Ok(out - .map(|vec: Vec<_>| stream![Value::List(vec).spanned_unknown()]) // TODO: args.input should have a span + .map(|vec: Vec<_>| stream![Value::List(vec).tagged_unknown()]) // TODO: args.input should have a span .flatten_stream() .from_input_stream()) } diff --git a/src/commands/to_csv.rs b/src/commands/to_csv.rs index 3fdbc49c68..04a99c5def 100644 --- a/src/commands/to_csv.rs +++ b/src/commands/to_csv.rs @@ -1,11 +1,8 @@ use crate::object::{Primitive, Value}; use crate::prelude::*; use csv::WriterBuilder; -use log::debug; pub fn value_to_csv_value(v: &Value) -> Value { - debug!("value_to_csv_value(Value::Object(v)) where v = {:?}", v); - match v { Value::Primitive(Primitive::String(s)) => Value::Primitive(Primitive::String(s.clone())), Value::Primitive(Primitive::Nothing) => Value::Primitive(Primitive::Nothing), @@ -20,8 +17,6 @@ pub fn to_string(v: &Value) -> Result> { match v { Value::List(_l) => return Ok(String::from("[list list]")), Value::Object(o) => { - debug!("to_csv:to_string(Value::Object(v)) where v = {:?}", v); - let mut wtr = WriterBuilder::new().from_writer(vec![]); let mut fields: VecDeque = VecDeque::new(); let mut values: VecDeque = VecDeque::new(); @@ -49,13 +44,15 @@ pub fn to_csv(args: CommandArgs, registry: &CommandRegistry) -> Result { - ReturnSuccess::value(Value::Primitive(Primitive::String(x)).spanned(name_span)) - } - Err(_) => Err(ShellError::maybe_labeled_error( - "Can not convert to CSV string", - "can not convert piped data to CSV string", + Ok(x) => ReturnSuccess::value( + Value::Primitive(Primitive::String(x)).simple_spanned(name_span), + ), + _ => Err(ShellError::labeled_error_with_secondary( + "Expected an object with CSV-compatible structure from pipeline", + "requires CSV-compatible input", name_span, + format!("{} originates from here", a.item.type_name()), + a.span(), )), }) .to_output_stream()) diff --git a/src/commands/to_json.rs b/src/commands/to_json.rs index 58e204602b..b52fa4cfdd 100644 --- a/src/commands/to_json.rs +++ b/src/commands/to_json.rs @@ -9,6 +9,7 @@ pub fn value_to_json_value(v: &Value) -> serde_json::Value { } Value::Primitive(Primitive::Date(d)) => serde_json::Value::String(d.to_string()), Value::Primitive(Primitive::EndOfStream) => serde_json::Value::Null, + Value::Primitive(Primitive::BeginningOfStream) => serde_json::Value::Null, Value::Primitive(Primitive::Float(f)) => { serde_json::Value::Number(serde_json::Number::from_f64(f.into_inner()).unwrap()) } @@ -49,13 +50,15 @@ pub fn to_json(args: CommandArgs, registry: &CommandRegistry) -> Result { - ReturnSuccess::value(Value::Primitive(Primitive::String(x)).spanned(name_span)) - } - Err(_) => Err(ShellError::maybe_labeled_error( - "Can not convert to JSON string", - "can not convert piped data to JSON string", + Ok(x) => ReturnSuccess::value( + Value::Primitive(Primitive::String(x)).simple_spanned(name_span), + ), + _ => Err(ShellError::labeled_error_with_secondary( + "Expected an object with JSON-compatible structure from pipeline", + "requires JSON-compatible input", name_span, + format!("{} originates from here", a.item.type_name()), + a.span(), )), }, ) diff --git a/src/commands/to_toml.rs b/src/commands/to_toml.rs index 63071590de..5020a95561 100644 --- a/src/commands/to_toml.rs +++ b/src/commands/to_toml.rs @@ -9,6 +9,9 @@ pub fn value_to_toml_value(v: &Value) -> toml::Value { Value::Primitive(Primitive::EndOfStream) => { toml::Value::String("".to_string()) } + Value::Primitive(Primitive::BeginningOfStream) => { + toml::Value::String("".to_string()) + } Value::Primitive(Primitive::Float(f)) => toml::Value::Float(f.into_inner()), Value::Primitive(Primitive::Int(i)) => toml::Value::Integer(*i), Value::Primitive(Primitive::Nothing) => toml::Value::String("".to_string()), @@ -40,13 +43,15 @@ pub fn to_toml(args: CommandArgs, registry: &CommandRegistry) -> Result { return ReturnSuccess::value( - Value::Primitive(Primitive::String(val)).spanned(name_span), + Value::Primitive(Primitive::String(val)).simple_spanned(name_span), ) } - - Err(err) => Err(ShellError::type_error( - "Can not convert to a TOML string", - format!("{:?} - {:?}", a.type_name(), err).spanned(name_span), + _ => Err(ShellError::labeled_error_with_secondary( + "Expected an object with TOML-compatible structure from pipeline", + "requires TOML-compatible input", + name_span, + format!("{} originates from here", a.item.type_name()), + a.span(), )), }) .to_output_stream()) diff --git a/src/commands/to_yaml.rs b/src/commands/to_yaml.rs index 833791da55..aa1fba4fc6 100644 --- a/src/commands/to_yaml.rs +++ b/src/commands/to_yaml.rs @@ -9,6 +9,7 @@ pub fn value_to_yaml_value(v: &Value) -> serde_yaml::Value { } Value::Primitive(Primitive::Date(d)) => serde_yaml::Value::String(d.to_string()), Value::Primitive(Primitive::EndOfStream) => serde_yaml::Value::Null, + Value::Primitive(Primitive::BeginningOfStream) => serde_yaml::Value::Null, Value::Primitive(Primitive::Float(f)) => { serde_yaml::Value::Number(serde_yaml::Number::from(f.into_inner())) } @@ -46,13 +47,15 @@ pub fn to_yaml(args: CommandArgs, registry: &CommandRegistry) -> Result { - ReturnSuccess::value(Value::Primitive(Primitive::String(x)).spanned(name_span)) - } - Err(_) => Err(ShellError::maybe_labeled_error( - "Can not convert to YAML string", - "can not convert piped data to YAML string", + Ok(x) => ReturnSuccess::value( + Value::Primitive(Primitive::String(x)).simple_spanned(name_span), + ), + _ => Err(ShellError::labeled_error_with_secondary( + "Expected an object with YAML-compatible structure from pipeline", + "requires YAML-compatible input", name_span, + format!("{} originates from here", a.item.type_name()), + a.span(), )), }, ) diff --git a/src/commands/trim.rs b/src/commands/trim.rs index bede0e1b1d..1d3c76e909 100644 --- a/src/commands/trim.rs +++ b/src/commands/trim.rs @@ -9,7 +9,7 @@ pub fn trim(args: CommandArgs, _registry: &CommandRegistry) -> Result>, - crate env: Arc>, + crate shell_manager: ShellManager, } impl Context { @@ -88,7 +88,7 @@ impl Context { registry: CommandRegistry::new(), source_map: SourceMap::new(), host: Arc::new(Mutex::new(crate::env::host::BasicHost)), - env: Arc::new(Mutex::new(Environment::basic()?)), + shell_manager: ShellManager::basic()?, }) } @@ -117,13 +117,25 @@ impl Context { crate async fn run_command( &mut self, command: Arc, - name_span: Option, + name_span: Span, source_map: SourceMap, args: hir::Call, source: Text, input: InputStream, ) -> Result { let command_args = self.command_args(args, input, source, source_map, name_span); + /* + let command_args = CommandArgs { + host: self.host.clone(), + shell_manager: self.shell_manager.clone(), + call_info: CallInfo { + name_span, + source_map, + args, + }, + input, + }; + */ command.run(command_args, self.registry()).await } @@ -133,7 +145,7 @@ impl Context { args: hir::Call, source: Text, source_map: SourceMap, - name_span: Option, + name_span: Span, ) -> UnevaluatedCallInfo { UnevaluatedCallInfo { args, @@ -149,11 +161,11 @@ impl Context { input: InputStream, source: Text, source_map: SourceMap, - name_span: Option, + name_span: Span, ) -> CommandArgs { CommandArgs { host: self.host.clone(), - env: self.env.clone(), + shell_manager: self.shell_manager.clone(), call_info: self.call_info(args, source, source_map, name_span), input, } diff --git a/src/env.rs b/src/env.rs index cc571b836e..2dd836f1fe 100644 --- a/src/env.rs +++ b/src/env.rs @@ -1,5 +1,3 @@ -crate mod environment; crate mod host; -crate use self::environment::Environment; crate use self::host::Host; diff --git a/src/env/environment.rs b/src/env/environment.rs deleted file mode 100644 index f2db354aeb..0000000000 --- a/src/env/environment.rs +++ /dev/null @@ -1,18 +0,0 @@ -use std::path::{Path, PathBuf}; - -#[derive(Debug, Clone)] -pub struct Environment { - crate path: PathBuf, -} - -impl Environment { - pub fn basic() -> Result { - let path = std::env::current_dir()?; - - Ok(Environment { path }) - } - - pub fn path(&self) -> &Path { - self.path.as_path() - } -} diff --git a/src/errors.rs b/src/errors.rs index 1e2291aa5e..18aa39bd5e 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -1,7 +1,6 @@ #[allow(unused)] use crate::prelude::*; -use crate::parser::{Span, Spanned}; use ansi_term::Color; use derive_new::new; use language_reporting::{Diagnostic, Label, Severity}; @@ -9,23 +8,18 @@ use serde::{Deserialize, Serialize}; #[derive(Debug, Eq, PartialEq, Clone, Ord, PartialOrd, Serialize, Deserialize)] pub enum Description { - Source(Spanned), + Source(Tagged), Synthetic(String), } impl Description { - pub fn from(item: Spanned>) -> Description { - match item { - Spanned { - span: - Span { - start: 0, - end: 0, - source: None, - }, - item, - } => Description::Synthetic(item.into()), - Spanned { span, item } => Description::Source(Spanned::from_item(item.into(), span)), + pub fn from(value: Tagged>) -> Description { + let value_span = value.span(); + let value_tag = value.tag(); + + match value_span { + Span { start: 0, end: 0 } => Description::Synthetic(value.item.into()), + _ => Description::Source(Tagged::from_item(value.item.into(), value_tag)), } } } @@ -33,7 +27,7 @@ impl Description { impl Description { fn into_label(self) -> Result, String> { match self { - Description::Source(s) => Ok(Label::new_primary(s.span).with_message(s.item)), + Description::Source(s) => Ok(Label::new_primary(s.span()).with_message(s.item)), Description::Synthetic(s) => Err(s), } } @@ -47,13 +41,13 @@ pub enum ArgumentError { } pub fn labelled( - span: impl Into>, + span: impl Into, heading: &'a str, span_message: &'a str, ) -> impl FnOnce(ShellError) -> ShellError + 'a { let span = span.into(); - move |_| ShellError::maybe_labeled_error(heading, span_message, span) + move |_| ShellError::labeled_error(heading, span_message, span) } #[derive(Debug, Eq, PartialEq, Clone, Ord, PartialOrd, Serialize, Deserialize)] @@ -74,7 +68,7 @@ impl serde::de::Error for ShellError { impl ShellError { crate fn type_error( expected: impl Into, - actual: Spanned>, + actual: Tagged>, ) -> ShellError { ProximateShellError::TypeError { expected: expected.into(), @@ -84,8 +78,8 @@ impl ShellError { } crate fn coerce_error( - left: Spanned>, - right: Spanned>, + left: Tagged>, + right: Tagged>, ) -> ShellError { ProximateShellError::CoerceError { left: left.map(|l| l.into()), @@ -175,9 +169,9 @@ impl ShellError { ProximateShellError::TypeError { expected, actual: - Spanned { + Tagged { item: Some(actual), - span, + tag: Tag { span, .. }, }, } => Diagnostic::new(Severity::Error, "Type Error").with_label( Label::new_primary(span) @@ -186,7 +180,11 @@ impl ShellError { ProximateShellError::TypeError { expected, - actual: Spanned { item: None, span }, + actual: + Tagged { + item: None, + tag: Tag { span, .. }, + }, } => Diagnostic::new(Severity::Error, "Type Error") .with_label(Label::new_primary(span).with_message(expected)), @@ -211,8 +209,8 @@ impl ShellError { ProximateShellError::Diagnostic(diag) => diag.diagnostic, ProximateShellError::CoerceError { left, right } => { Diagnostic::new(Severity::Error, "Coercion error") - .with_label(Label::new_primary(left.span).with_message(left.item)) - .with_label(Label::new_secondary(right.span).with_message(right.item)) + .with_label(Label::new_primary(left.span()).with_message(left.item)) + .with_label(Label::new_secondary(right.span()).with_message(right.item)) } } } @@ -228,18 +226,20 @@ impl ShellError { ) } - pub fn maybe_labeled_error( + pub fn labeled_error_with_secondary( msg: impl Into, - label: impl Into, - span: Option, + primary_label: impl Into, + primary_span: Span, + secondary_label: impl Into, + secondary_span: Span, ) -> ShellError { - match span { - Some(span) => ShellError::diagnostic( - Diagnostic::new(Severity::Error, msg.into()) - .with_label(Label::new_primary(span).with_message(label.into())), - ), - None => ShellError::string(msg), - } + ShellError::diagnostic( + Diagnostic::new_error(msg.into()) + .with_label(Label::new_primary(primary_span).with_message(primary_label.into())) + .with_label( + Label::new_secondary(secondary_span).with_message(secondary_label.into()), + ), + ) } pub fn string(title: impl Into) -> ShellError { @@ -260,7 +260,7 @@ pub enum ProximateShellError { String(StringError), TypeError { expected: String, - actual: Spanned>, + actual: Tagged>, }, MissingProperty { subpath: Description, @@ -273,8 +273,8 @@ pub enum ProximateShellError { }, Diagnostic(ShellDiagnostic), CoerceError { - left: Spanned, - right: Spanned, + left: Tagged, + right: Tagged, }, } impl ProximateShellError { diff --git a/src/evaluate/evaluator.rs b/src/evaluate/evaluator.rs index 5507ebc2ac..0a73667d22 100644 --- a/src/evaluate/evaluator.rs +++ b/src/evaluate/evaluator.rs @@ -2,7 +2,7 @@ use crate::errors::Description; use crate::object::base::Block; use crate::parser::{ hir::{self, Expression, RawExpression}, - CommandRegistry, Spanned, Text, + CommandRegistry, Text, }; use crate::prelude::*; use derive_new::new; @@ -10,20 +10,20 @@ use indexmap::IndexMap; #[derive(new)] pub struct Scope { - it: Spanned, + it: Tagged, #[new(default)] - vars: IndexMap>, + vars: IndexMap>, } impl Scope { crate fn empty() -> Scope { Scope { - it: Value::nothing().spanned_unknown(), + it: Value::nothing().tagged_unknown(), vars: IndexMap::new(), } } - crate fn it_value(value: Spanned) -> Scope { + crate fn it_value(value: Tagged) -> Scope { Scope { it: value, vars: IndexMap::new(), @@ -36,19 +36,20 @@ crate fn evaluate_baseline_expr( registry: &CommandRegistry, scope: &Scope, source: &Text, -) -> Result, ShellError> { +) -> Result, ShellError> { match &expr.item { RawExpression::Literal(literal) => Ok(evaluate_literal(expr.copy_span(*literal), source)), - RawExpression::Synthetic(hir::Synthetic::String(s)) => { - Ok(Value::string(s).spanned_unknown()) - } + RawExpression::Synthetic(hir::Synthetic::String(s)) => Ok(Value::string(s).tagged_unknown()), RawExpression::Variable(var) => evaluate_reference(var, scope, source), RawExpression::Binary(binary) => { let left = evaluate_baseline_expr(binary.left(), registry, scope, source)?; let right = evaluate_baseline_expr(binary.right(), registry, scope, source)?; match left.compare(binary.op(), &*right) { - Ok(result) => Ok(Spanned::from_item(Value::boolean(result), *expr.span())), + Ok(result) => Ok(Tagged::from_simple_spanned_item( + Value::boolean(result), + expr.span(), + )), Err((left_type, right_type)) => Err(ShellError::coerce_error( binary.left().copy_span(left_type), binary.right().copy_span(right_type), @@ -63,10 +64,10 @@ crate fn evaluate_baseline_expr( exprs.push(expr); } - Ok(Value::List(exprs).spanned(expr.span())) + Ok(Value::List(exprs).tagged(Tag::unknown_origin(expr.span()))) } - RawExpression::Block(block) => Ok(Spanned::from_item( - Value::Block(Block::new(block.clone(), source.clone(), *expr.span())), + RawExpression::Block(block) => Ok(Tagged::from_simple_spanned_item( + Value::Block(Block::new(block.clone(), source.clone(), expr.span())), expr.span(), )), RawExpression::Path(path) => { @@ -79,12 +80,12 @@ crate fn evaluate_baseline_expr( match next { None => { return Err(ShellError::missing_property( - Description::from(item.spanned_type_name()), + Description::from(item.tagged_type_name()), Description::from(name.clone()), )) } Some(next) => { - item = Spanned::from_item( + item = Tagged::from_simple_spanned_item( next.clone().item, (expr.span().start, name.span().end), ) @@ -92,13 +93,16 @@ crate fn evaluate_baseline_expr( }; } - Ok(Spanned::from_item(item.item().clone(), expr.span())) + Ok(Tagged::from_simple_spanned_item( + item.item().clone(), + expr.span(), + )) } RawExpression::Boolean(_boolean) => unimplemented!(), } } -fn evaluate_literal(literal: Spanned, source: &Text) -> Spanned { +fn evaluate_literal(literal: Tagged, source: &Text) -> Tagged { let result = match literal.item { hir::Literal::Integer(int) => Value::int(int), hir::Literal::Size(int, unit) => unit.compute(int), @@ -113,13 +117,13 @@ fn evaluate_reference( name: &hir::Variable, scope: &Scope, source: &Text, -) -> Result, ShellError> { +) -> Result, ShellError> { match name { - hir::Variable::It(span) => Ok(Spanned::from_item(scope.it.item.clone(), span)), + hir::Variable::It(span) => Ok(scope.it.item.clone().simple_spanned(span)), hir::Variable::Other(span) => Ok(scope .vars .get(span.slice(source)) .map(|v| v.clone()) - .unwrap_or_else(|| Value::nothing().spanned(span))), + .unwrap_or_else(|| Value::nothing().simple_spanned(span))), } } diff --git a/src/format/table.rs b/src/format/table.rs index 4618b23603..1db0de12f1 100644 --- a/src/format/table.rs +++ b/src/format/table.rs @@ -14,7 +14,7 @@ pub struct TableView { } impl TableView { - fn merge_descriptors(values: &[Spanned]) -> Vec { + fn merge_descriptors(values: &[Tagged]) -> Vec { let mut ret = vec![]; for value in values { for desc in value.data_descriptors() { @@ -26,7 +26,7 @@ impl TableView { ret } - pub fn from_list(values: &[Spanned]) -> Option { + pub fn from_list(values: &[Tagged]) -> Option { if values.len() == 0 { return None; } diff --git a/src/format/vtable.rs b/src/format/vtable.rs index ac27f3bc83..30539321a9 100644 --- a/src/format/vtable.rs +++ b/src/format/vtable.rs @@ -12,7 +12,7 @@ pub struct VTableView { } impl VTableView { - pub fn from_list(values: &[Spanned]) -> Option { + pub fn from_list(values: &[Tagged]) -> Option { if values.len() == 0 { return None; } diff --git a/src/lib.rs b/src/lib.rs index 919a809a91..6386547c66 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -31,14 +31,15 @@ mod traits; mod utils; pub use crate::commands::command::{CallInfo, ReturnSuccess, ReturnValue}; -pub use crate::context::SpanSource; +pub use crate::context::{SourceMap, SpanSource}; pub use crate::env::host::BasicHost; -pub use crate::parser::parse::span::SpannedItem; -pub use crate::parser::Spanned; +pub use crate::object::base::OF64; pub use crate::plugin::{serve_plugin, Plugin}; pub use crate::utils::{AbsolutePath, RelativePath}; pub use cli::cli; pub use errors::ShellError; pub use object::base::{Primitive, Value}; +pub use object::dict::{Dictionary, TaggedDictBuilder}; +pub use object::meta::{Span, Tag, Tagged, TaggedItem}; pub use parser::parse::text::Text; pub use parser::registry::{EvaluatedArgs, NamedType, PositionalType, Signature}; diff --git a/src/object.rs b/src/object.rs index bf8ffb6860..8cc86d4568 100644 --- a/src/object.rs +++ b/src/object.rs @@ -3,10 +3,11 @@ crate mod config; crate mod dict; crate mod files; crate mod into; +crate mod meta; crate mod process; crate mod types; #[allow(unused)] crate use base::{Block, Primitive, Switch, Value}; -crate use dict::{Dictionary, SpannedDictBuilder}; +crate use dict::{Dictionary, TaggedDictBuilder}; crate use files::dir_entry_dict; diff --git a/src/object/base.rs b/src/object/base.rs index b4350b7d9e..70683f8fe2 100644 --- a/src/object/base.rs +++ b/src/object/base.rs @@ -1,8 +1,8 @@ use crate::context::CommandRegistry; use crate::errors::ShellError; use crate::evaluate::{evaluate_baseline_expr, Scope}; -use crate::object::SpannedDictBuilder; -use crate::parser::{hir, Operator, Span, Spanned}; +use crate::object::TaggedDictBuilder; +use crate::parser::{hir, Operator}; use crate::prelude::*; use crate::Text; use ansi_term::Color; @@ -44,6 +44,8 @@ pub enum Primitive { Date(DateTime), Path(PathBuf), + // Stream markers (used as bookend markers rather than actual values) + BeginningOfStream, EndOfStream, } @@ -53,6 +55,7 @@ impl Primitive { match self { Nothing => "nothing", + BeginningOfStream => "beginning-of-stream", EndOfStream => "end-of-stream", Path(_) => "path", Int(_) => "int", @@ -70,6 +73,7 @@ impl Primitive { match self { Nothing => write!(f, "Nothing"), + BeginningOfStream => write!(f, "BeginningOfStream"), EndOfStream => write!(f, "EndOfStream"), Int(int) => write!(f, "{}", int), Path(path) => write!(f, "{}", path.display()), @@ -84,6 +88,7 @@ impl Primitive { pub fn format(&self, field_name: Option<&String>) -> String { match self { Primitive::Nothing => format!("{}", Color::Black.bold().paint("-")), + Primitive::BeginningOfStream => format!("{}", Color::Black.bold().paint("-")), Primitive::EndOfStream => format!("{}", Color::Black.bold().paint("-")), Primitive::Path(p) => format!("{}", p.display()), Primitive::Bytes(b) => { @@ -131,11 +136,11 @@ pub struct Block { } impl Block { - pub fn invoke(&self, value: &Spanned) -> Result, ShellError> { + pub fn invoke(&self, value: &Tagged) -> Result, ShellError> { let scope = Scope::new(value.clone()); if self.expressions.len() == 0 { - return Ok(Spanned::from_item(Value::nothing(), self.span)); + return Ok(Value::nothing().simple_spanned(self.span)); } let mut last = None; @@ -159,17 +164,17 @@ pub enum Value { Object(crate::object::Dictionary), #[serde(with = "serde_bytes")] Binary(Vec), - List(Vec>), + List(Vec>), #[allow(unused)] Block(Block), } -pub fn debug_list(values: &'a Vec>) -> ValuesDebug<'a> { +pub fn debug_list(values: &'a Vec>) -> ValuesDebug<'a> { ValuesDebug { values } } pub struct ValuesDebug<'a> { - values: &'a Vec>, + values: &'a Vec>, } impl fmt::Debug for ValuesDebug<'a> { @@ -181,7 +186,7 @@ impl fmt::Debug for ValuesDebug<'a> { } pub struct ValueDebug<'a> { - value: &'a Spanned, + value: &'a Tagged, } impl fmt::Debug for ValueDebug<'a> { @@ -196,17 +201,17 @@ impl fmt::Debug for ValueDebug<'a> { } } -impl Spanned { - crate fn spanned_type_name(&self) -> Spanned { +impl Tagged { + crate fn tagged_type_name(&self) -> Tagged { let name = self.type_name(); - Spanned::from_item(name, self.span) + Tagged::from_simple_spanned_item(name, self.span()) } } -impl std::convert::TryFrom<&'a Spanned> for Block { +impl std::convert::TryFrom<&'a Tagged> for Block { type Error = ShellError; - fn try_from(value: &'a Spanned) -> Result { + fn try_from(value: &'a Tagged) -> Result { match value.item() { Value::Block(block) => Ok(block.clone()), v => Err(ShellError::type_error( @@ -217,10 +222,10 @@ impl std::convert::TryFrom<&'a Spanned> for Block { } } -impl std::convert::TryFrom<&'a Spanned> for i64 { +impl std::convert::TryFrom<&'a Tagged> for i64 { type Error = ShellError; - fn try_from(value: &'a Spanned) -> Result { + fn try_from(value: &'a Tagged) -> Result { match value.item() { Value::Primitive(Primitive::Int(int)) => Ok(*int), v => Err(ShellError::type_error( @@ -247,10 +252,10 @@ impl Switch { } } -impl std::convert::TryFrom>> for Switch { +impl std::convert::TryFrom>> for Switch { type Error = ShellError; - fn try_from(value: Option<&'a Spanned>) -> Result { + fn try_from(value: Option<&'a Tagged>) -> Result { match value { None => Ok(Switch::Absent), Some(value) => match value.item() { @@ -264,7 +269,7 @@ impl std::convert::TryFrom>> for Switch { } } -impl Spanned { +impl Tagged { crate fn debug(&'a self) -> ValueDebug<'a> { ValueDebug { value: self } } @@ -296,13 +301,13 @@ impl Value { } } - crate fn get_data_by_key(&'a self, name: &str) -> Option<&Spanned> { + crate fn get_data_by_key(&'a self, name: &str) -> Option<&Tagged> { match self { Value::Object(o) => o.get_data_by_key(name), Value::List(l) => { for item in l { match item { - Spanned { + Tagged { item: Value::Object(o), .. } => match o.get_data_by_key(name) { @@ -319,14 +324,14 @@ impl Value { } #[allow(unused)] - crate fn get_data_by_index(&'a self, idx: usize) -> Option<&Spanned> { + crate fn get_data_by_index(&'a self, idx: usize) -> Option<&Tagged> { match self { Value::List(l) => l.iter().nth(idx), _ => None, } } - pub fn get_data_by_path(&'a self, span: Span, path: &str) -> Option> { + pub fn get_data_by_path(&'a self, tag: Tag, path: &str) -> Option> { let mut current = self; for p in path.split(".") { match current.get_data_by_key(p) { @@ -335,18 +340,15 @@ impl Value { } } - Some(Spanned { - item: current, - span, - }) + Some(Tagged::from_item(current, tag)) } pub fn insert_data_at_path( &'a self, - span: Span, + tag: Tag, path: &str, new_value: Value, - ) -> Option> { + ) -> Option> { let mut new_obj = self.clone(); let split_path: Vec<_> = path.split(".").collect(); @@ -361,19 +363,13 @@ impl Value { Value::Object(o) => { o.entries.insert( split_path[idx + 1].to_string(), - Spanned { - item: new_value, - span, - }, + Tagged::from_item(new_value, tag), ); } _ => {} } - return Some(Spanned { - item: new_obj, - span, - }); + return Some(Tagged::from_item(new_obj, tag)); } else { match next.item { Value::Object(ref mut o) => { @@ -393,10 +389,10 @@ impl Value { pub fn replace_data_at_path( &'a self, - span: Span, + tag: Tag, path: &str, replaced_value: Value, - ) -> Option> { + ) -> Option> { let mut new_obj = self.clone(); let split_path: Vec<_> = path.split(".").collect(); @@ -407,14 +403,8 @@ impl Value { match current.entries.get_mut(split_path[idx]) { Some(next) => { if idx == (split_path.len() - 1) { - *next = Spanned { - item: replaced_value, - span, - }; - return Some(Spanned { - item: new_obj, - span, - }); + *next = Tagged::from_item(replaced_value, tag); + return Some(Tagged::from_item(new_obj, tag)); } else { match next.item { Value::Object(ref mut o) => { @@ -451,8 +441,12 @@ impl Value { .map(|e| e.source(&b.source).to_string()), "; ", ), - Value::Object(_) => format!("[object Object]"), - Value::List(_) => format!("[list List]"), + Value::Object(_) => format!("[{}]", self.type_name()), + Value::List(l) => format!( + "[{} {}]", + l.len(), + if l.len() == 1 { "item" } else { "items" } + ), Value::Binary(_) => format!(""), } } @@ -492,6 +486,16 @@ impl Value { } } + crate fn as_pair(&self) -> Result<(Tagged, Tagged), ShellError> { + match self { + Value::List(list) if list.len() == 2 => Ok((list[0].clone(), list[1].clone())), + other => Err(ShellError::string(format!( + "Expected pair, got {:?}", + other + ))), + } + } + crate fn as_string(&self) -> Result { match self { Value::Primitive(Primitive::String(s)) => Ok(s.clone()), @@ -565,8 +569,8 @@ impl Value { } } -crate fn select_fields(obj: &Value, fields: &[String], span: impl Into) -> Spanned { - let mut out = SpannedDictBuilder::new(span); +crate fn select_fields(obj: &Value, fields: &[String], tag: impl Into) -> Tagged { + let mut out = TaggedDictBuilder::new(tag); let descs = obj.data_descriptors(); @@ -577,11 +581,11 @@ crate fn select_fields(obj: &Value, fields: &[String], span: impl Into) -> } } - out.into_spanned_value() + out.into_tagged_value() } -crate fn reject_fields(obj: &Value, fields: &[String], span: impl Into) -> Spanned { - let mut out = SpannedDictBuilder::new(span); +crate fn reject_fields(obj: &Value, fields: &[String], tag: impl Into) -> Tagged { + let mut out = TaggedDictBuilder::new(tag); let descs = obj.data_descriptors(); @@ -592,7 +596,7 @@ crate fn reject_fields(obj: &Value, fields: &[String], span: impl Into) -> } } - out.into_spanned_value() + out.into_tagged_value() } #[allow(unused)] diff --git a/src/object/config.rs b/src/object/config.rs index bffeff0ef0..77c974e790 100644 --- a/src/object/config.rs +++ b/src/object/config.rs @@ -19,7 +19,7 @@ const APP_INFO: AppInfo = AppInfo { #[derive(Deserialize, Serialize)] struct Config { #[serde(flatten)] - extra: IndexMap, + extra: IndexMap>, } crate fn config_path() -> Result { @@ -29,7 +29,7 @@ crate fn config_path() -> Result { Ok(location.join("config.toml")) } -crate fn write_config(config: &IndexMap>) -> Result<(), ShellError> { +crate fn write_config(config: &IndexMap>) -> Result<(), ShellError> { let location = app_root(AppDataType::UserConfig, &APP_INFO) .map_err(|err| ShellError::string(&format!("Couldn't open config file:\n{}", err)))?; @@ -45,7 +45,7 @@ crate fn write_config(config: &IndexMap>) -> Result<(), S Ok(()) } -crate fn config(span: impl Into) -> Result>, ShellError> { +crate fn config(span: impl Into) -> Result>, ShellError> { let span = span.into(); let location = app_root(AppDataType::UserConfig, &APP_INFO) @@ -57,19 +57,19 @@ crate fn config(span: impl Into) -> Result trace!("config file = {}", filename.display()); let contents = fs::read_to_string(filename) - .map(|v| v.spanned(span)) + .map(|v| v.simple_spanned(span)) .map_err(|err| ShellError::string(&format!("Couldn't read config file:\n{}", err)))?; let parsed: toml::Value = toml::from_str(&contents) .map_err(|err| ShellError::string(&format!("Couldn't parse config file:\n{}", err)))?; - let value = convert_toml_value_to_nu_value(&parsed, span); - + let value = convert_toml_value_to_nu_value(&parsed, Tag::unknown_origin(span)); + let tag = value.tag(); match value.item { Value::Object(Dictionary { entries }) => Ok(entries), other => Err(ShellError::type_error( "Dictionary", - other.type_name().spanned(value.span), + other.type_name().tagged(tag), )), } } diff --git a/src/object/dict.rs b/src/object/dict.rs index 16c7d32818..1ce9706a10 100644 --- a/src/object/dict.rs +++ b/src/object/dict.rs @@ -9,7 +9,7 @@ use std::fmt; #[derive(Debug, Default, Eq, PartialEq, Serialize, Deserialize, Clone, new)] pub struct Dictionary { - pub entries: IndexMap>, + pub entries: IndexMap>, } impl PartialOrd for Dictionary { @@ -28,8 +28,8 @@ impl PartialOrd for Dictionary { } } -impl From>> for Dictionary { - fn from(input: IndexMap>) -> Dictionary { +impl From>> for Dictionary { + fn from(input: IndexMap>) -> Dictionary { let mut out = IndexMap::default(); for (key, value) in input { @@ -79,7 +79,7 @@ impl Dictionary { } } - crate fn get_data_by_key(&self, name: &str) -> Option<&Spanned> { + crate fn get_data_by_key(&self, name: &str) -> Option<&Tagged> { match self .entries .iter() @@ -101,72 +101,71 @@ impl Dictionary { } } -pub struct SpannedListBuilder { - span: Span, - list: Vec>, +pub struct TaggedListBuilder { + tag: Tag, + list: Vec>, } -impl SpannedListBuilder { - pub fn new(span: impl Into) -> SpannedListBuilder { - SpannedListBuilder { - span: span.into(), +impl TaggedListBuilder { + pub fn new(tag: impl Into) -> TaggedListBuilder { + TaggedListBuilder { + tag: tag.into(), list: vec![], } } pub fn push(&mut self, value: impl Into) { - self.list.push(value.into().spanned(self.span)); + self.list.push(value.into().tagged(self.tag)); } - pub fn insert_spanned(&mut self, value: impl Into>) { + pub fn insert_tagged(&mut self, value: impl Into>) { self.list.push(value.into()); } - pub fn into_spanned_value(self) -> Spanned { - Value::List(self.list).spanned(self.span) + pub fn into_tagged_value(self) -> Tagged { + Value::List(self.list).tagged(self.tag) } } -impl From for Spanned { - fn from(input: SpannedListBuilder) -> Spanned { - input.into_spanned_value() +impl From for Tagged { + fn from(input: TaggedListBuilder) -> Tagged { + input.into_tagged_value() } } #[derive(Debug)] -pub struct SpannedDictBuilder { - span: Span, - dict: IndexMap>, +pub struct TaggedDictBuilder { + tag: Tag, + dict: IndexMap>, } -impl SpannedDictBuilder { - pub fn new(span: impl Into) -> SpannedDictBuilder { - SpannedDictBuilder { - span: span.into(), +impl TaggedDictBuilder { + pub fn new(tag: impl Into) -> TaggedDictBuilder { + TaggedDictBuilder { + tag: tag.into(), dict: IndexMap::default(), } } pub fn insert(&mut self, key: impl Into, value: impl Into) { - self.dict - .insert(key.into(), value.into().spanned(self.span)); + self.dict.insert(key.into(), value.into().tagged(self.tag)); } - pub fn insert_spanned(&mut self, key: impl Into, value: impl Into>) { + pub fn insert_tagged(&mut self, key: impl Into, value: impl Into>) { self.dict.insert(key.into(), value.into()); } - pub fn into_spanned_value(self) -> Spanned { - self.into_spanned_dict().map(Value::Object) + pub fn into_tagged_value(self) -> Tagged { + self.into_tagged_dict().map(Value::Object) } - pub fn into_spanned_dict(self) -> Spanned { - Dictionary { entries: self.dict }.spanned(self.span) + pub fn into_tagged_dict(self) -> Tagged { + Dictionary { entries: self.dict }.tagged(self.tag) } } -impl From for Spanned { - fn from(input: SpannedDictBuilder) -> Spanned { - input.into_spanned_value() +impl From for Tagged { + fn from(input: TaggedDictBuilder) -> Tagged { + input.into_tagged_value() } } diff --git a/src/object/files.rs b/src/object/files.rs index 7cea20a405..541e60eb57 100644 --- a/src/object/files.rs +++ b/src/object/files.rs @@ -1,5 +1,5 @@ use crate::errors::ShellError; -use crate::object::{SpannedDictBuilder, Value}; +use crate::object::{TaggedDictBuilder, Value}; use crate::prelude::*; #[derive(Debug)] @@ -10,15 +10,13 @@ pub enum FileType { } crate fn dir_entry_dict( - entry: &std::fs::DirEntry, - span: impl Into, -) -> Result, ShellError> { - let mut dict = SpannedDictBuilder::new(span); - let filename = entry.file_name(); + filename: &std::path::Path, + metadata: &std::fs::Metadata, + tag: impl Into, +) -> Result, ShellError> { + let mut dict = TaggedDictBuilder::new(tag); dict.insert("name", Value::string(filename.to_string_lossy())); - let metadata = entry.metadata()?; - let kind = if metadata.is_dir() { FileType::Directory } else if metadata.is_file() { @@ -50,5 +48,5 @@ crate fn dir_entry_dict( Err(_) => {} } - Ok(dict.into_spanned_value()) + Ok(dict.into_tagged_value()) } diff --git a/src/object/into.rs b/src/object/into.rs index dceb5192d1..1d2648a7ad 100644 --- a/src/object/into.rs +++ b/src/object/into.rs @@ -13,11 +13,10 @@ impl From for Value { } } -impl> Spanned { - pub fn into_spanned_value(self) -> Spanned { - let Spanned { item, span } = self; - - let value = item.into(); - value.spanned(span) +impl> Tagged { + pub fn into_tagged_value(self) -> Tagged { + let value_span = self.span(); + let value = self.item.into(); + value.simple_spanned(value_span) } } diff --git a/src/parser/parse/span.rs b/src/object/meta.rs similarity index 53% rename from src/parser/parse/span.rs rename to src/object/meta.rs index 8820ca8f80..6475ba1e89 100644 --- a/src/parser/parse/span.rs +++ b/src/object/meta.rs @@ -6,43 +6,44 @@ use serde::Deserialize; use serde::Serialize; use uuid::Uuid; -#[derive( - new, Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize, Hash, Getters, -)] -#[get = "crate"] -pub struct Spanned { - pub span: Span, +#[derive(new, Debug, Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Serialize, Deserialize, Hash)] +pub struct Tagged { + pub tag: Tag, pub item: T, } -impl HasSpan for Spanned { +impl HasSpan for Tagged { fn span(&self) -> Span { - self.span + self.tag.span } } -impl Spanned { - pub fn spanned(self, span: impl Into) -> Spanned { - Spanned::from_item(self.item, span.into()) +pub trait TaggedItem: Sized { + fn tagged(self, tag: impl Into) -> Tagged { + Tagged::from_item(self, tag.into()) } -} -pub trait SpannedItem: Sized { - fn spanned(self, span: impl Into) -> Spanned { - Spanned::from_item(self, span.into()) + fn simple_spanned(self, span: impl Into) -> Tagged { + Tagged::from_simple_spanned_item(self, span.into()) } // For now, this is a temporary facility. In many cases, there are other useful spans that we // could be using, such as the original source spans of JSON or Toml files, but we don't yet // have the infrastructure to make that work. - fn spanned_unknown(self) -> Spanned { - Spanned::from_item(self, (0, 0)) + fn tagged_unknown(self) -> Tagged { + Tagged::from_item( + self, + Tag { + span: Span::unknown(), + origin: None, + }, + ) } } -impl SpannedItem for T {} +impl TaggedItem for T {} -impl std::ops::Deref for Spanned { +impl std::ops::Deref for Tagged { type Target = T; fn deref(&self) -> &T { @@ -50,58 +51,71 @@ impl std::ops::Deref for Spanned { } } -impl Spanned { - crate fn from_item(item: T, span: impl Into) -> Spanned { - Spanned { - span: span.into(), +impl Tagged { + pub fn spanned(self, span: impl Into) -> Tagged { + Tagged::from_item( + self.item, + Tag { + span: span.into(), + origin: None, + }, + ) + } + + pub fn from_item(item: T, tag: impl Into) -> Tagged { + Tagged { item, + tag: tag.into(), } } - pub fn map(self, input: impl FnOnce(T) -> U) -> Spanned { - let Spanned { span, item } = self; - - let mapped = input(item); - Spanned { span, item: mapped } + pub fn from_simple_spanned_item(item: T, span: impl Into) -> Tagged { + Tagged::from_item( + item, + Tag { + span: span.into(), + origin: None, + }, + ) } - crate fn copy_span(&self, output: U) -> Spanned { - let Spanned { span, .. } = self; + pub fn map(self, input: impl FnOnce(T) -> U) -> Tagged { + let tag = self.tag(); - Spanned { - span: *span, - item: output, - } + let mapped = input(self.item); + Tagged::from_item(mapped, tag.clone()) + } + + crate fn copy_span(&self, output: U) -> Tagged { + let span = self.span(); + + Tagged::from_simple_spanned_item(output, span) } pub fn source(&self, source: &Text) -> Text { Text::from(self.span().slice(source)) } -} -#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize, Hash)] -pub struct Span { - crate start: usize, - crate end: usize, - pub source: Option, -} + pub fn span(&self) -> Span { + self.tag.span + } -impl From> for Span { - fn from(input: Option) -> Span { - match input { - None => Span { - start: 0, - end: 0, - source: None, - }, - Some(span) => span, - } + pub fn tag(&self) -> Tag { + self.tag + } + + pub fn origin(&self) -> Option { + self.tag.origin + } + + pub fn item(&self) -> &T { + &self.item } } -impl From<&Spanned> for Span { - fn from(input: &Spanned) -> Span { - input.span +impl From<&Tagged> for Span { + fn from(input: &Tagged) -> Span { + input.span() } } @@ -116,7 +130,6 @@ impl From> for Span { Span { start: input.offset, end: input.offset + input.fragment.len(), - source: None, } } } @@ -126,7 +139,6 @@ impl From<(nom5_locate::LocatedSpan, nom5_locate::LocatedSpan)> for Spa Span { start: input.0.offset, end: input.1.offset, - source: None, } } } @@ -136,7 +148,6 @@ impl From<(usize, usize)> for Span { Span { start: input.0, end: input.1, - source: None, } } } @@ -146,20 +157,52 @@ impl From<&std::ops::Range> for Span { Span { start: input.start, end: input.end, - source: None, + } + } +} + +#[derive( + Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize, Hash, Getters, +)] +pub struct Tag { + pub origin: Option, + pub span: Span, +} + +impl Tag { + pub fn unknown_origin(span: Span) -> Tag { + Tag { origin: None, span } + } + + pub fn unknown() -> Tag { + Tag { + origin: None, + span: Span::unknown(), + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Serialize, Deserialize, Hash)] +pub struct Span { + crate start: usize, + crate end: usize, +} + +impl From> for Span { + fn from(input: Option) -> Span { + match input { + None => Span { start: 0, end: 0 }, + Some(span) => span, } } } impl Span { pub fn unknown() -> Span { - Span { - start: 0, - end: 0, - source: None, - } + Span { start: 0, end: 0 } } + /* pub fn unknown_with_uuid(uuid: Uuid) -> Span { Span { start: 0, @@ -167,6 +210,7 @@ impl Span { source: Some(uuid), } } + */ pub fn is_unknown(&self) -> bool { self.start == 0 && self.end == 0 @@ -182,7 +226,6 @@ impl language_reporting::ReportingSpan for Span { Span { start, end: self.end, - source: None, } } @@ -190,7 +233,6 @@ impl language_reporting::ReportingSpan for Span { Span { start: self.start, end, - source: None, } } diff --git a/src/object/process.rs b/src/object/process.rs index ba716c5156..2d90dba2d7 100644 --- a/src/object/process.rs +++ b/src/object/process.rs @@ -1,11 +1,10 @@ -use crate::object::{SpannedDictBuilder, Value}; +use crate::object::{TaggedDictBuilder, Value}; use crate::prelude::*; use itertools::join; use sysinfo::ProcessExt; -crate fn process_dict(proc: &sysinfo::Process, span: impl Into) -> Spanned { - let mut dict = SpannedDictBuilder::new(span); - dict.insert("name", Value::string(proc.name())); +crate fn process_dict(proc: &sysinfo::Process, tag: impl Into) -> Tagged { + let mut dict = TaggedDictBuilder::new(tag); let cmd = proc.cmd(); @@ -15,10 +14,16 @@ crate fn process_dict(proc: &sysinfo::Process, span: impl Into) -> Spanned Value::string(join(cmd, "")) }; - dict.insert("cmd", cmd_value); - dict.insert("cpu", Value::float(proc.cpu_usage() as f64)); dict.insert("pid", Value::int(proc.pid() as i64)); dict.insert("status", Value::string(proc.status().to_string())); + dict.insert("cpu", Value::float(proc.cpu_usage() as f64)); + //dict.insert("name", Value::string(proc.name())); + match cmd_value { + Value::Primitive(Primitive::Nothing) => { + dict.insert("name", Value::string(proc.name())); + } + _ => dict.insert("name", cmd_value), + } - dict.into_spanned_value() + dict.into_tagged_value() } diff --git a/src/object/types.rs b/src/object/types.rs index d20586f8b6..8177f23ffd 100644 --- a/src/object/types.rs +++ b/src/object/types.rs @@ -5,15 +5,15 @@ use log::trace; use std::path::PathBuf; pub trait ExtractType: Sized { - fn extract(value: &Spanned) -> Result; - fn check(value: &'value Spanned) -> Result<&'value Spanned, ShellError>; + fn extract(value: &Tagged) -> Result; + fn check(value: &'value Tagged) -> Result<&'value Tagged, ShellError>; fn syntax_type() -> hir::SyntaxType { hir::SyntaxType::Any } } impl ExtractType for T { - default fn extract(_value: &Spanned) -> Result { + default fn extract(_value: &Tagged) -> Result { let name = std::intrinsics::type_name::(); Err(ShellError::unimplemented(format!( " ExtractType for {}", @@ -21,7 +21,7 @@ impl ExtractType for T { ))) } - default fn check(_value: &'value Spanned) -> Result<&'value Spanned, ShellError> { + default fn check(_value: &'value Tagged) -> Result<&'value Tagged, ShellError> { Err(ShellError::unimplemented("ExtractType for T")) } @@ -30,8 +30,8 @@ impl ExtractType for T { } } -impl ExtractType for Vec> { - fn extract(value: &Spanned) -> Result { +impl ExtractType for Vec> { + fn extract(value: &Tagged) -> Result { let name = std::intrinsics::type_name::(); trace!(" Extracting {:?} for Vec<{}>", value, name); @@ -40,24 +40,24 @@ impl ExtractType for Vec> { let mut out = vec![]; for item in items { - out.push(T::extract(item)?.spanned(item.span)); + out.push(T::extract(item)?.tagged(item.tag())); } Ok(out) } other => Err(ShellError::type_error( "Vec", - other.type_name().spanned(value.span), + other.type_name().tagged(value.tag()), )), } } - fn check(value: &'value Spanned) -> Result<&'value Spanned, ShellError> { + fn check(value: &'value Tagged) -> Result<&'value Tagged, ShellError> { match value.item() { Value::List(_) => Ok(value), other => Err(ShellError::type_error( "Vec", - other.type_name().spanned(value.span), + other.type_name().tagged(value.tag()), )), } } @@ -68,7 +68,7 @@ impl ExtractType for Vec> { } impl ExtractType for (T, U) { - fn extract(value: &Spanned) -> Result<(T, U), ShellError> { + fn extract(value: &Tagged) -> Result<(T, U), ShellError> { let t_name = std::intrinsics::type_name::(); let u_name = std::intrinsics::type_name::(); @@ -84,20 +84,20 @@ impl ExtractType for (T, U) { } else { Err(ShellError::type_error( "two-element-tuple", - "not-two".spanned(value.span), + "not-two".tagged(value.tag()), )) } } other => Err(ShellError::type_error( "two-element-tuple", - other.type_name().spanned(value.span), + other.type_name().tagged(value.tag()), )), } } } impl ExtractType for Option { - fn extract(value: &Spanned) -> Result, ShellError> { + fn extract(value: &Tagged) -> Result, ShellError> { let name = std::intrinsics::type_name::(); trace!("