From f0208a2fa1f9956087ab0d392fa6774e601a5951 Mon Sep 17 00:00:00 2001 From: Darius C Date: Wed, 7 Nov 2018 02:22:51 -0500 Subject: [PATCH 1/8] Added 32bit flag --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index b1c1806..7d1fe32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -42,6 +42,7 @@ matrix: env: - ARCH=arm - PLATFORM=android + - NDK_BUILD_32BIT=1 script: echo "cargo test temporarily disabled" before_deploy: - export PATH="$HOME/.cargo/bin:$PATH" From c45877fb2c84237b2839a60a04f31a40bb6a051a Mon Sep 17 00:00:00 2001 From: = <=> Date: Thu, 8 Nov 2018 15:32:47 +0100 Subject: [PATCH 2/8] my pc change cargo.lock --- Cargo.lock | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0c62def..3524b42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1160,6 +1160,14 @@ name = "openssl-probe" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "openssl-src" +version = "111.0.1+1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "openssl-sys" version = "0.9.39" @@ -1167,6 +1175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-src 111.0.1+1.1.1 (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)", ] @@ -1429,11 +1438,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rust_sodium" version = "0.10.1" -source = "git+https://github.com/dariusc93/rust_sodium#9fc99bafba651dd34f2d71e9f448be2db17ccb0d" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rust_sodium-sys 0.10.1 (git+https://github.com/dariusc93/rust_sodium)", + "rust_sodium-sys 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1441,7 +1450,7 @@ dependencies = [ [[package]] name = "rust_sodium-sys" version = "0.10.1" -source = "git+https://github.com/dariusc93/rust_sodium#9fc99bafba651dd34f2d71e9f448be2db17ccb0d" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2081,9 +2090,10 @@ dependencies = [ "futures 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "log-panics 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "rlua 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "rlua_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rust_sodium 0.10.1 (git+https://github.com/dariusc93/rust_sodium)", + "rust_sodium 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "select 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2568,6 +2578,7 @@ dependencies = [ "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +"checksum openssl-src 111.0.1+1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d1edaed888fd85a54a2646bf02992931ddefdda3b1a748fc79f088a8db27fcbe" "checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" @@ -2601,8 +2612,8 @@ dependencies = [ "checksum rlua 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d8e8a3ae8a34f53f241c8e6b1f7c8c8c7768b7abb8db07efce45cbfe39a9e097" "checksum rlua_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "78ba9f3fb6b174d50c5181937b246371b6811cab40821f57c3e25df72f2203bf" "checksum rust-ini 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ac66e816614e124a692b6ac1b8437237a518c9155a3aacab83a373982630c715" -"checksum rust_sodium 0.10.1 (git+https://github.com/dariusc93/rust_sodium)" = "" -"checksum rust_sodium-sys 0.10.1 (git+https://github.com/dariusc93/rust_sodium)" = "" +"checksum rust_sodium 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aae6b7adeb7ceeec0ac050d1eb2ca1e111a8e3b15a1be260dc3e61e731be46b7" +"checksum rust_sodium-sys 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "acadd1e619c7616e2bad20d5cb2dc361cd20fa0a739f2b4bd7fbea99185dd496" "checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" From 0fa7c54980394c9ae89e1566ec2d70d184f0d5c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20W=C5=82odarczyk?= Date: Fri, 16 Nov 2018 08:29:29 +0100 Subject: [PATCH 3/8] Cargo.lock change before merge --- .travis.yml | 7 ------- Cargo.lock | 28 +++++++++++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index 71cbd43..6351f3c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,17 +54,10 @@ matrix: - cargo build --target="aarch64-linux-android" --release - zip -j ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip target/aarch64-linux-android/release/${PROJECT} - os: linux -<<<<<<< HEAD - env: - - ARCH=arm32 - - PLATFORM=android - - NDK_BUILD_32BIT=1 -======= env: - ARCH=arm32 - PLATFORM=android - CHANNEL=stable ->>>>>>> upstream/master script: echo "cargo test temporarily disabled" before_deploy: - export PATH="$HOME/.cargo/bin:$PATH" diff --git a/Cargo.lock b/Cargo.lock index 7e213b0..fe73b9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -223,6 +223,14 @@ dependencies = [ "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "base64" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bit-set" version = "0.4.0" @@ -362,7 +370,7 @@ dependencies = [ [[package]] name = "comrak" -version = "0.2.14" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -592,7 +600,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "env_logger" -version = "0.5.13" +version = "0.6.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)", @@ -2193,18 +2201,18 @@ dependencies = [ [[package]] name = "torchbear" -version = "0.4.1" +version = "0.4.3" dependencies = [ "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "actix-lua 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "actix-web 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "comrak 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "config 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "fern 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2213,6 +2221,7 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log-panics 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "rlua 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", "rlua_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust_sodium 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2224,7 +2233,7 @@ dependencies = [ "serde_yaml 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "tera 0.11.19 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2642,6 +2651,7 @@ dependencies = [ "checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "621fc7ecb8008f86d7fb9b95356cd692ce9514b80a86d85b397f32a22da7b9e2" "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" "checksum bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9bf6104718e80d7b26a68fdbacff3481cfc05df670821affc7e9cbc1884400c" "checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f" @@ -2661,7 +2671,7 @@ dependencies = [ "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc0a60679001b62fb628c4da80e574b9645ab4646056d7c9018885efffe45533" -"checksum comrak 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "378397d3ac20b5b0b8b29fa2e1bf20546a6d6cedd1bc18a422dfb41384129e29" +"checksum comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bd60be8877a3343d25b9a3dadbaf7f02f9ac843b54e663ecef73e29e8b9c6b" "checksum config 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13490293b8a84cc82cd531da41adeae82cd9eaa40e926ac18865aa361f9c9f60" "checksum cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1465f8134efa296b4c19db34d909637cb2bf0f7aaf21299e23e18fa29ac557cf" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" @@ -2686,7 +2696,7 @@ dependencies = [ "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" "checksum entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" -"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" +"checksum env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afb070faf94c85d17d50ca44f6ad076bce18ae92f0037d350947240a36e9d42e" "checksum error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faa976b4fd2e4c2b2f3f486874b19e61944d3de3de8b61c9fcf835d583871bcc" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" From d80ac86b103e21c09f33c9ce3ad9a3c691062fab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20W=C5=82odarczyk?= Date: Mon, 19 Nov 2018 21:23:45 +0100 Subject: [PATCH 4/8] Cargo.lock before merge --- Cargo.lock | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7436f21..7f70dbe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2477,7 +2477,7 @@ dependencies = [ [[package]] name = "torchbear" -version = "0.5.0" +version = "0.5.1" dependencies = [ "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "actix-lua 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2955,10 +2955,7 @@ dependencies = [ "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc0a60679001b62fb628c4da80e574b9645ab4646056d7c9018885efffe45533" -<<<<<<< HEAD -======= "checksum combine 3.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "97d6e3d17febfeac84d2d94f78c31ba1d66069ae14fbfc7ed86148875300a1b4" ->>>>>>> upstream/master "checksum comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bd60be8877a3343d25b9a3dadbaf7f02f9ac843b54e663ecef73e29e8b9c6b" "checksum config 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13490293b8a84cc82cd531da41adeae82cd9eaa40e926ac18865aa361f9c9f60" "checksum cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1465f8134efa296b4c19db34d909637cb2bf0f7aaf21299e23e18fa29ac557cf" From 92e35708a08311bfa5a6459be26f3cd0ee0e769b Mon Sep 17 00:00:00 2001 From: Aleksander Date: Wed, 28 Nov 2018 19:45:11 +0100 Subject: [PATCH 5/8] commit before merge --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 7e213b0..45b0000 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2193,7 +2193,7 @@ dependencies = [ [[package]] name = "torchbear" -version = "0.4.1" +version = "0.4.2" dependencies = [ "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", "actix-lua 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", From f82a72e229d0d1a28e192a04c8b5f234bcfd3758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20W=C5=82odarczyk?= Date: Tue, 18 Dec 2018 10:20:52 +0100 Subject: [PATCH 6/8] local changes to overwrite --- .travis.yml | 53 +- Cargo.lock | 1054 +++++++++++++----------- Cargo.toml | 31 +- Dockerfile.nightly | 7 - Readme.md | 54 +- install.sh | 83 +- private_key.enc | Bin 0 -> 96 bytes public_key | 1 + src/bindings/app/diff.rs | 70 ++ src/bindings/{ => app}/git.rs | 35 +- src/bindings/{ => app}/log.rs | 2 +- src/bindings/{ => app}/markdown.rs | 4 +- src/bindings/app/mod.rs | 29 + src/bindings/app/patch.rs | 24 + src/bindings/{ => app}/tantivy.rs | 6 +- src/bindings/app/tera.rs | 85 ++ src/bindings/archive/mod.rs | 20 + src/bindings/archive/tar.rs | 38 + src/bindings/archive/xz.rs | 20 + src/bindings/archive/zip.rs | 41 + src/bindings/crypto/box_.rs | 13 +- src/bindings/crypto/hash.rs | 11 +- src/bindings/crypto/mod.rs | 23 +- src/bindings/crypto/sign.rs | 62 +- src/bindings/mod.rs | 25 +- src/bindings/string/heck.rs | 106 +++ src/bindings/string/mime.rs | 44 + src/bindings/string/mod.rs | 17 + src/bindings/{ => string}/regex.rs | 28 +- src/bindings/{ => string}/stringset.rs | 6 +- src/bindings/{ => string}/uuid.rs | 2 +- src/bindings/{ => system}/fs.rs | 14 +- src/bindings/system/mod.rs | 11 + src/bindings/{ => system}/time.rs | 2 +- src/bindings/tera.rs | 51 -- src/bindings/{ => text}/json.rs | 2 +- src/bindings/text/mod.rs | 15 + src/bindings/text/scl.rs | 262 ++++++ src/bindings/{ => text}/select.rs | 3 +- src/bindings/{ => text}/yaml.rs | 3 +- src/bindings/{ => web}/client.rs | 10 +- src/bindings/web/mod.rs | 11 + src/bindings/{ => web}/server.rs | 18 +- src/conf.rs | 58 ++ src/error.rs | 110 +++ src/handlers/bootstrap.lua | 9 + src/handlers/bridge.lua | 19 + src/handlers/debug.lua | 19 + src/lib.rs | 338 +++++--- src/logger.rs | 14 +- src/main.rs | 86 +- 51 files changed, 2131 insertions(+), 918 deletions(-) delete mode 100644 Dockerfile.nightly create mode 100644 private_key.enc create mode 100644 public_key create mode 100644 src/bindings/app/diff.rs rename src/bindings/{ => app}/git.rs (87%) rename src/bindings/{ => app}/log.rs (97%) rename src/bindings/{ => app}/markdown.rs (97%) create mode 100644 src/bindings/app/mod.rs create mode 100644 src/bindings/app/patch.rs rename src/bindings/{ => app}/tantivy.rs (98%) create mode 100644 src/bindings/app/tera.rs create mode 100644 src/bindings/archive/mod.rs create mode 100644 src/bindings/archive/tar.rs create mode 100644 src/bindings/archive/xz.rs create mode 100644 src/bindings/archive/zip.rs create mode 100644 src/bindings/string/heck.rs create mode 100644 src/bindings/string/mime.rs create mode 100644 src/bindings/string/mod.rs rename src/bindings/{ => string}/regex.rs (61%) rename src/bindings/{ => string}/stringset.rs (98%) rename src/bindings/{ => string}/uuid.rs (90%) rename src/bindings/{ => system}/fs.rs (89%) create mode 100644 src/bindings/system/mod.rs rename src/bindings/{ => system}/time.rs (97%) delete mode 100644 src/bindings/tera.rs rename src/bindings/{ => text}/json.rs (93%) create mode 100644 src/bindings/text/mod.rs create mode 100644 src/bindings/text/scl.rs rename src/bindings/{ => text}/select.rs (99%) rename src/bindings/{ => text}/yaml.rs (93%) rename src/bindings/{ => web}/client.rs (94%) create mode 100644 src/bindings/web/mod.rs rename src/bindings/{ => web}/server.rs (93%) create mode 100644 src/conf.rs create mode 100644 src/error.rs create mode 100644 src/handlers/bootstrap.lua create mode 100644 src/handlers/bridge.lua create mode 100644 src/handlers/debug.lua diff --git a/.travis.yml b/.travis.yml index 255b22f..d052b73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,21 +20,8 @@ matrix: - docker cp build-${PROJECT}:/home/rust/src/target/x86_64-unknown-linux-musl/release/${PROJECT} ${PROJECT} - docker rm build-${PROJECT} - docker rmi build-${PROJECT}-image - - zip ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip ${PROJECT} - - os: linux - rust: nightly - env: - - ARCH=x86_64 - - PLATFORM=linux - - CHANNEL=nightly - services: docker - script: echo "cargo test temporarily disabled" - before_deploy: - - docker build -f Dockerfile.nightly -t build-${PROJECT}-image . - - docker run -it --name build-${PROJECT} build-${PROJECT}-image - - docker cp build-${PROJECT}:/home/rust/src/target/x86_64-unknown-linux-musl/release/${PROJECT} ${PROJECT} - - docker rm build-${PROJECT} - - docker rmi build-${PROJECT}-image + - wget -O init.lua https://raw.githubusercontent.com/foundpatterns/file-witness/master/sign.lua + - ./${PROJECT} - zip ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip ${PROJECT} - os: osx rust: stable @@ -45,7 +32,10 @@ matrix: script: echo "cargo test temporarily disabled" before_deploy: - cargo build --release - - zip -j ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip target/release/${PROJECT} + - mv target/release/${PROJECT} . + - wget -O init.lua https://raw.githubusercontent.com/foundpatterns/file-witness/master/sign.lua + - ./${PROJECT} + - zip ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip ${PROJECT} - os: linux env: - ARCH=arm64 @@ -62,7 +52,11 @@ matrix: - ${NDK_HOME}/build/tools/make-standalone-toolchain.sh --arch=arm64 --install-dir=NDK/aarch64 --platform=android-22 - export PATH="$PATH:$PWD/NDK/aarch64/bin" - cargo build --target="aarch64-linux-android" --release - - zip -j ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip target/aarch64-linux-android/release/${PROJECT} + - bash install.sh + - mv target/aarch64-linux-android/release/${PROJECT} . + - wget -O init.lua https://raw.githubusercontent.com/foundpatterns/file-witness/master/sign.lua + - /usr/local/bin/torchbear + - zip ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip ${PROJECT} - os: linux env: - ARCH=arm32 @@ -77,22 +71,23 @@ matrix: - export NDK_HOME="$PWD/android-ndk-r18b" - mkdir NDK - ${NDK_HOME}/build/tools/make-standalone-toolchain.sh --arch=arm --install-dir=NDK/arm --platform=android-22 - - export PATH="$PATH:$PWD/NDK/arm/bin" + - export PATH="$PATH:$PWD/NDK/arm/bin" - cargo build --target="arm-linux-androideabi" --release - - zip -j ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip target/arm-linux-androideabi/release/${PROJECT} - # TODO: Implement windows jobs into travis. - # TODO: Implement 32bit as musl builder doesnt support it. Maybe just have it compile normally since it will be running against trusty which - # should be compatible with newer glibc - # - os: linux - # rust: stable - # sudo: required - # env: ARCH=i686 + - bash install.sh + - mv target/arm-linux-androideabi/release/${PROJECT} . + - wget -O init.lua https://raw.githubusercontent.com/foundpatterns/file-witness/master/sign.lua + - /usr/local/bin/torchbear + - zip ${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip ${PROJECT} +before_install: +- openssl aes-256-cbc -K $encrypted_3f0c7a8b3f66_key -iv $encrypted_3f0c7a8b3f66_iv -in private_key.enc -out private_key -d deploy: provider: releases api_key: - secure: vs0t3O6fc/ZAquCwrypegZ7dZJtuH1UKbL74JVy24m/T0Pe9BWHVILc/7iusepBm4gz4ZKltfJWb4eq0MpZ3EXwwny/Sjrkz85yzXBLD5FDSCO794y2zzOrsuho6VyWIlbI2Vldno9qG+oKKuUvNL083Wi1bDwj5+mQAXy1fvDgivI5MuRcZyYAKgdzfGhKxfaTCu0gUFzhaOG10gAqYkhO7wYz9ddFpu2/laVHjYJnt2BhbZ7Nu5EfC/mssLiuKq34DBwGQO6nfgmH2P+s2y+KNm6rua8gf9kQXG6r+50lwJhH0bq2BtjO9tCrZxDnOunybU8M0bPXKp02XmtHyNdflYL1CJoWm6+jTELoY+30ndlk6xg2oneOiJ/QAPcuB6ONVz3dCVQNVKgSTJvgSQ+Mexbzq8n8cz3B07epk0sb9XZZn4yVbPkMjt98IeTewe1raKCkQlsLu217RV/b8UZce3e7YRFpXPqSJ5DxymshZpbXIttqlbw3y6InESagK07bwjzOJJj2Za/Jfi+YAfRBiY1+U2zZn2Jj/lOyFfyKhn9hD4J9cA3JLtopTvU/A1IfwfPKBlbsNtZu7+XAaEPRLmhw3XryrZs5/RfO2JFaf9T/gyvka4HzAoyG8Du3zAUQqrXRcM8rdD5iWpktnnjsBD/Lw/YLwnHh+dVW0A3c= + secure: CgTP0SwOefwSUsePWKYuZCEV2QNVH3GJcMfComUgBCnPbdrfA8vnC7Ao3Sb31NHZ43k89+DhxCsVtDaWBhmMWqnost5aJ7LGfaEvObL9Cdg06OJv8o9UAcowSqU4k3eHEr0ZRJzEWEiAMTAtclzosmA1PfzyY7MyIv6ZAcoyoUg1uwzr0KJrc/dGN+tkWv/6M1IBgh5kji0yfg9yxjxClJ28GikAJoRmTv+Yx1tQQ+Q/qlkbVT+fVAc0vWwvk/YIauF1s2LBPhMKqkUmmpHyZVk9g3er421ddYjesLt25wMocmtRlWTrEn4G1RVLbQG6+mE+adyw7Oi081CvmJjF4eojsyOYbWI89qJBM0ZAAqzrXNwizZCdL7ShX/I5jHJTA/AMa2GyyLTFbR4CQT/+Otn0nfPLFfiY1g654CFcL73mRnDtixpGMx1aMJ4ScXbMR8rCDDO8hix7pOm71LtCqUAchOYCyNsn4MCkz2+LaH9WZ/hDJDmUgMVVBoqhGLb2vnaf3fd+vbeKFwpLDluFLRrunM+qdNPDPDHzb3qoXcospNnZEt18O3Pu5vMssxIaKEiesm2zTsd/+R4pl4Acotgiy/jLJucFRVs5Id+RpD/eETk/ZnR3Jekpkl6T95w82an1mGS8o8fl/F+CkNBOAn5J8a6gz0nXhjp6APLfErg= file_glob: true - file: "${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.*" + file: + - "${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.zip" + - "${PROJECT}-${TRAVIS_TAG}-${ARCH}-${PLATFORM}-${CHANNEL}.sig" skip_cleanup: true on: repo: foundpatterns/torchbear @@ -104,4 +99,4 @@ branches: - /^\d+\.\d+\.\d+.*$/ notifications: email: - on_success: never + on_success: never diff --git a/Cargo.lock b/Cargo.lock index 0d116f6..0100483 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,29 +1,29 @@ [[package]] name = "actix" -version = "0.7.5" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-signal 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-resolver 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trust-dns-resolver 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -32,35 +32,36 @@ name = "actix-lua" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlua 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "actix-net" -version = "0.1.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "actix 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-openssl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-resolver 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -68,25 +69,25 @@ dependencies = [ [[package]] name = "actix-web" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-net 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "actix 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-net 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "askama_escape 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (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.13 (registry+https://github.com/rust-lang/crates.io-index)", - "htmlescape 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -95,27 +96,27 @@ dependencies = [ "mime 0.3.12 (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)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-openssl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -125,9 +126,9 @@ name = "actix_derive" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -153,7 +154,7 @@ dependencies = [ [[package]] name = "arc-swap" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -163,10 +164,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "arrayvec" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -174,6 +175,11 @@ name = "ascii" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "askama_escape" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "atomicwrites" version = "0.2.2" @@ -189,25 +195,11 @@ name = "atty" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "backtrace" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "dbghelp-sys 0.2.0 (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.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "backtrace" version = "0.3.9" @@ -215,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -226,7 +218,7 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -285,6 +277,17 @@ dependencies = [ "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "blake2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "block-buffer" version = "0.3.3" @@ -300,7 +303,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -309,7 +312,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -322,6 +325,11 @@ name = "byte-tools" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "byte-tools" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "1.2.7" @@ -329,7 +337,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -341,17 +349,17 @@ name = "bzip2" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bzip2-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bzip2-sys" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -411,7 +419,7 @@ dependencies = [ [[package]] name = "combine" -version = "3.6.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ascii 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -423,35 +431,20 @@ dependencies = [ [[package]] name = "comrak" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_derive 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "twoway 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "typed-arena 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "unicode_categories 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "config" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-ini 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.80 (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.32 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "cookie" version = "0.11.0" @@ -469,7 +462,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -477,7 +470,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -488,6 +481,11 @@ dependencies = [ "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crc32fast" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "crossbeam" version = "0.4.1" @@ -504,11 +502,11 @@ name = "crossbeam-channel" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.6.0 (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.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -522,11 +520,11 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -534,7 +532,7 @@ name = "crossbeam-epoch" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -544,12 +542,12 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (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)", @@ -560,18 +558,35 @@ name = "crossbeam-utils" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crossbeam-utils" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "curl-sys" version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (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.39 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -579,15 +594,6 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "dbghelp-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "debug_unreachable" version = "0.1.1" @@ -601,6 +607,21 @@ name = "deunicode" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "diff-rs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "diffs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "diffs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "digest" version = "0.7.6" @@ -609,6 +630,14 @@ dependencies = [ "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "digest" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "downcast" version = "0.9.2" @@ -692,20 +721,12 @@ version = "0.6.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)", - "humantime 1.1.1 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "error-chain" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "error-chain" version = "0.8.1" @@ -746,9 +767,9 @@ name = "failure_derive" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -759,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "fern" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -768,20 +789,21 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "flate2" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide_c_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -868,13 +890,21 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "generic-array" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "git2" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "libgit2-sys 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -893,23 +923,31 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.14 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -932,10 +970,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "http" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -960,7 +998,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "humantime" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -986,13 +1024,13 @@ name = "iovec" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ipconfig" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1004,7 +1042,7 @@ dependencies = [ [[package]] name = "itertools" -version = "0.7.8" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1054,8 +1092,18 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.43" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libflate" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "libgit2-sys" @@ -1064,7 +1112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (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.39 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1077,7 +1125,7 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (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.39 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1090,20 +1138,11 @@ version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (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)", ] -[[package]] -name = "linked-hash-map" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_test 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "linked-hash-map" version = "0.4.2" @@ -1116,10 +1155,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lock_api" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1155,6 +1194,16 @@ dependencies = [ "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lzma-sys" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mac" version = "0.1.1" @@ -1189,7 +1238,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1198,7 +1247,7 @@ name = "memmap" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1207,6 +1256,14 @@ name = "memoffset" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "mime" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mime" version = "0.3.12" @@ -1215,6 +1272,17 @@ dependencies = [ "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mime_guess" +version = "1.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "phf 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_codegen 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mime_guess" version = "2.0.0-alpha.6" @@ -1232,7 +1300,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1250,7 +1318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (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.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1264,7 +1332,7 @@ dependencies = [ "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)", "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (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)", @@ -1278,7 +1346,7 @@ version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1308,7 +1376,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1316,7 +1384,7 @@ dependencies = [ "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1325,7 +1393,7 @@ version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1345,22 +1413,14 @@ dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "nodrop" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "nom" -version = "4.1.1" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "num-integer" @@ -1370,14 +1430,6 @@ dependencies = [ "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "num-traits" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "num-traits" version = "0.2.6" @@ -1388,9 +1440,14 @@ name = "num_cpus" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "opaque-debug" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "openssl" version = "0.10.15" @@ -1400,7 +1457,7 @@ dependencies = [ "cfg-if 0.1.6 (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.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1411,7 +1468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "openssl-src" -version = "111.0.1+1.1.1" +version = "111.1.0+1.1.1a" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1423,8 +1480,8 @@ version = "0.9.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-src 111.0.1+1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-src 111.1.0+1.1.1a (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)", ] @@ -1438,14 +1495,6 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "owning_ref" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "owning_ref" version = "0.4.0" @@ -1459,7 +1508,7 @@ name = "parking_lot" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", ] @@ -1468,13 +1517,25 @@ name = "parking_lot_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.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.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "patch-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_derive 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "percent-encoding" version = "1.0.1" @@ -1519,8 +1580,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest_meta 2.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1586,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.20" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1604,10 +1665,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1616,7 +1677,7 @@ version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1626,7 +1687,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1637,11 +1698,38 @@ 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-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.6.1" +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-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.0 (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_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (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 = "rand_core" version = "0.2.2" @@ -1655,9 +1743,42 @@ name = "rand_core" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (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 = "rand_xorshift" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_syscall" -version = "0.1.40" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1665,17 +1786,17 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.0.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.4 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1687,10 +1808,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "regex-syntax" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1715,9 +1836,9 @@ name = "rental-impl" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1736,7 +1857,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1747,7 +1868,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1760,11 +1881,6 @@ dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rust-ini" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "rust-stemmers" version = "1.0.2" @@ -1779,7 +1895,7 @@ name = "rust_sodium" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "rust_sodium-sys 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1792,14 +1908,14 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "http_req 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tar 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", "unwrap 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "zip 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1824,7 +1940,7 @@ dependencies = [ [[package]] name = "ryu" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1841,6 +1957,15 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "scl" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "scopeguard" version = "0.3.3" @@ -1853,7 +1978,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1863,7 +1988,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1888,59 +2013,34 @@ name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "serde" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "serde" version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "serde-hjson" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -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.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "serde_derive" version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "serde_test" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "serde_urlencoded" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1951,7 +2051,7 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1989,11 +2089,11 @@ dependencies = [ [[package]] name = "signal-hook" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arc-swap 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2016,7 +2116,7 @@ dependencies = [ [[package]] name = "smallvec" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2037,8 +2137,8 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2049,7 +2149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "string" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2073,8 +2173,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "phf_generator 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", "phf_shared 0.7.23 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2088,6 +2188,11 @@ name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" version = "0.11.11" @@ -2103,18 +2208,18 @@ name = "syn" version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "0.15.18" +version = "0.15.22" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2131,9 +2236,9 @@ name = "synstructure" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2148,7 +2253,7 @@ dependencies = [ "bitpacking 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "census 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "combine 3.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "combine 3.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "downcast 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2160,7 +2265,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "htmlescape 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "levenshtein_automata 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2168,27 +2273,27 @@ dependencies = [ "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "owned-read 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "snap 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "stable_deref_trait 1.1.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.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tar" -version = "0.4.18" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "filetime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2203,13 +2308,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2226,7 +2331,7 @@ dependencies = [ [[package]] name = "tera" -version = "0.11.19" +version = "0.11.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2236,9 +2341,9 @@ dependencies = [ "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pest_derive 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "unic-segment 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2257,8 +2362,8 @@ name = "termion" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2283,30 +2388,31 @@ name = "time" version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2314,14 +2420,14 @@ name = "tokio-codec" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2343,7 +2449,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2351,17 +2457,27 @@ name = "tokio-io" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-openssl" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-reactor" -version = "0.1.6" +version = "0.1.7" 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)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2375,17 +2491,17 @@ dependencies = [ [[package]] name = "tokio-signal" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2394,123 +2510,114 @@ name = "tokio-tcp" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (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.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.7" +version = "0.2.8" 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)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "tokio-tls" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "tokio-udp" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "toml" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "torchbear" -version = "0.5.2" +version = "0.10.0" dependencies = [ - "actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", + "actix 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)", "actix-lua 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "actix-web 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)", + "actix-web 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "config 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "comrak 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "diff-rs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fern 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fern 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "git2 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log-panics 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 1.8.6 (registry+https://github.com/rust-lang/crates.io-index)", "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "patch-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlua 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)", "rlua_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rust_sodium 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scl 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "select 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)", "tantivy 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tera 0.11.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "xz2 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "zip 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2521,29 +2628,6 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "trust-dns-proto" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (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.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "trust-dns-proto" version = "0.5.0" @@ -2556,35 +2640,17 @@ dependencies = [ "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "trust-dns-resolver" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "ipconfig 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "trust-dns-resolver" version = "0.10.0" @@ -2593,13 +2659,13 @@ dependencies = [ "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "ipconfig 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "resolv-conf 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2628,7 +2694,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ucd-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2704,6 +2770,11 @@ name = "unicode-normalization" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-segmentation" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-width" version = "0.1.5" @@ -2890,7 +2961,15 @@ name = "xattr" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "xz2" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lzma-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2907,28 +2986,40 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "msdos_time 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "zip" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + [metadata] -"checksum actix 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "710e449bb7720ad245a7101f3698ebc743588e0f4ba2b07fe9d74323e348b835" +"checksum actix 0.7.7 (registry+https://github.com/rust-lang/crates.io-index)" = "17503213788d3cd8b0d2d8a70afa0f6e376bff2415338e22e53c3d1dcf7b2e4c" "checksum actix-lua 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28fa7feab99481638fe42d98b1f1dc20dfa0ddf30f0891bb093fae7613abe4f0" -"checksum actix-net 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6681a31050ab951f09050f08c5ddb4189659b8bca93b629b26547208861d1401" -"checksum actix-web 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)" = "726a60109dce69d2fb86ef24b4f97135cb2e9ae63b5bbc61bb5987989303a734" +"checksum actix-net 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c1afd4a2973f2ece17100874183be416ec73ca529be846639930ec2cd9c8b8b9" +"checksum actix-web 0.7.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9e151d7cc0dbe8fad1141d491eed981f91aee03fcc4fce0005bcc572a0433f" "checksum actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" "checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum arc-swap 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "af192669a9f44d2fb63c691a04183c8e12428f34041449270b08c0456587f5a5" +"checksum arc-swap 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5c5ed110e2537bdd3f5b9091707a8a5556a72ac49bbd7302ae0b28fdccb3246c" "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" +"checksum arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f405cc4c21cd8b784f6c8fc2adf9bc00f59558f0049b5ec21517f875963040cc" "checksum ascii 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a5fc969a8ce2c9c0c4b0429bb8431544f6658283c8326ba5ff8c762b75369335" +"checksum askama_escape 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "719b48039ffac1564f67d70162109ba9341125cee0096a540e478355b3c724a7" "checksum atomicwrites 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a3420b33cdefd3feb223dddc23739fc05cc034eb0f2be792c763e3d89e1eb6e3" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" -"checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" "checksum base64 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "621fc7ecb8008f86d7fb9b95356cd692ce9514b80a86d85b397f32a22da7b9e2" @@ -2939,15 +3030,17 @@ dependencies = [ "checksum bit-vec 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4440d5cb623bb7390ae27fec0bb6c61111969860f8e3ae198bfa0663645e67cf" "checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" "checksum bitpacking 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "75c04b83d2b444a22c6a30f4d068597efbe468fe56f068e042e627ded2fb21e7" +"checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" "checksum brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" "checksum brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" "checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" +"checksum byte-tools 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "980479e6fde23246dfb54d47580d66b4e99202e7579c5eaa9fe10ecb5ebd2182" "checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" -"checksum bytes 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0ce55bd354b095246fc34caf4e9e242f5297a7fd938b090cadfea6eee614aa62" +"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" "checksum bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" -"checksum bzip2-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2c5162604199bbb17690ede847eaa6120a3f33d5ab4dcc8e7c25b16d849ae79b" +"checksum bzip2-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6584aa36f5ad4c9247f5323b0a42f37802b37a836f0ad87084d7a33961abe25f" "checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" "checksum census 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e5c044df9888597e4e96610c916ce9d58c653b67c01b5eac5b7abd7405f4fee4" "checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" @@ -2955,26 +3048,30 @@ dependencies = [ "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum colored 1.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc0a60679001b62fb628c4da80e574b9645ab4646056d7c9018885efffe45533" -"checksum combine 3.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "97d6e3d17febfeac84d2d94f78c31ba1d66069ae14fbfc7ed86148875300a1b4" -"checksum comrak 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a9bd60be8877a3343d25b9a3dadbaf7f02f9ac843b54e663ecef73e29e8b9c6b" -"checksum config 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13490293b8a84cc82cd531da41adeae82cd9eaa40e926ac18865aa361f9c9f60" +"checksum combine 3.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "db733c5d0f4f52e78d4417959cadf0eecc7476e7f9ece05677912571a4af34e2" +"checksum comrak 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb233a128a946b14da666a50a197e14fde465c49f4249e0ca35337f2bc1e0ac7" "checksum cookie 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1465f8134efa296b4c19db34d909637cb2bf0f7aaf21299e23e18fa29ac557cf" "checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" "checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" "checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" +"checksum crc32fast 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e0e685559fa8bccfa46afd0f876047ee5d87c536d71d0c2b3a08cc9e880f73eb" "checksum crossbeam 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d7408247b1b87f480890f28b670c5f8d9a8a4274833433fe74dc0dfd46d33650" "checksum crossbeam-channel 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7b85741761b7f160bc5e7e0c14986ef685b7f8bf9b7ad081c60c604bb4649827" "checksum crossbeam-deque 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7792c4a9b5a4222f654e3728a3dd945aacc24d2c3a1a096ed265d80e4929cb9a" -"checksum crossbeam-deque 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3486aefc4c0487b9cb52372c97df0a48b8c249514af1ee99703bf70d2f2ceda1" +"checksum crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe1b6f945f824c7a25afe44f62e25d714c0cc523f8e99d8db5cd1026e1269d3" "checksum crossbeam-epoch 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30fecfcac6abfef8771151f8be4abc9e4edc112c2bcb233314cafde2680536e9" -"checksum crossbeam-epoch 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c90f1474584f38e270b5b613e898c8c328aa4f3dea85e0a27ac2e642f009416" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" +"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "721c204978be2143fab0a84b708c49d79d1f6100b8785610f456043a90708870" -"checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" "checksum debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3" "checksum deunicode 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "850878694b7933ca4c9569d30a34b55031b9b139ee1fc7b94a527c4ef960d690" +"checksum diff-rs 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "baaf6f56d153236beb362bb32adff66b28a47e7582b82457d460c33799996377" +"checksum diffs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f986674bb2b4ef21915be8625ebddeffe67bcf78153351ca52d626a5f6b29e6e" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" +"checksum digest 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05f47366984d3ad862010e22c7ce81a7dbcaebbdfb37241a620f8b6596ee135c" "checksum downcast 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c6fe31318b6ef21166c8e839e680238eb16f875849d597544eead7ec882eed3" "checksum dtoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d301140eb411af13d3115f9a562c85cc6b541ade9dfa314132244aaee7489dd" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" @@ -2987,16 +3084,15 @@ dependencies = [ "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" "checksum entities 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" "checksum env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afb070faf94c85d17d50ca44f6ad076bce18ae92f0037d350947240a36e9d42e" -"checksum error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faa976b4fd2e4c2b2f3f486874b19e61944d3de3de8b61c9fcf835d583871bcc" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" "checksum fail 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bd2e1a22c616c8c8c96b6e07c243014551f3ba77291d24c22e0bfea6830c0b4e" "checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" "checksum failure_derive 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "64c2d913fe8ed3b6c6518eedf4538255b989945c14c2a7d5cbff62a5e2120596" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum fern 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "57915fe00a83af935983eb2d00b0ecc62419c4741b28c207ecbf98fd4a1b94c8" -"checksum filetime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6f57e64bf5eae62efd4efed005ae81a7115012a61f522bba54542e1a556af921" -"checksum flate2 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3b0c7353385f92079524de3b7116cf99d73947c08a7472774e9b3b04bff3b901" +"checksum fern 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b48af88aaf938b11baef948a5599e66e709cf92854aa2b87c71f1bcf20f80a01" +"checksum filetime 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a2df5c1a8c4be27e7707789dc42ae65976e60b394afd293d1419ab915833e646" +"checksum flate2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2291c165c8e703ee54ef3055ad6188e3d51108e2ded18e9f2476e774fc5ad3d4" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" @@ -3007,23 +3103,25 @@ dependencies = [ "checksum futf 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" "checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +"checksum generic-array 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c0f28c2f5bfb5960175af447a2da7c18900693738343dc896ffbcabd9839592" "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" "checksum git2 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "591f8be1674b421644b6c030969520bc3fa12114d2eb467471982ed3e9584e71" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7dd33bafe2e6370e6c8eb0cf1b8c5f93390b90acde7e9b03723f166b28b648ed" +"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" "checksum html5ever 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a49d5001dd1bddf042ea41ed4e0a671d50b1bf187e66b349d7ec613bdce4ad90" "checksum htmlescape 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163" -"checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" +"checksum http 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "02096a6d2c55e63f7fcb800690e4f889a25f6ec342e3adb4594e293b625215ab" "checksum http_req 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23fdb3445813f5f5e7fdb9d93df8f1c7e382237f2656b21c42e93e3a63e25c11" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum humansize 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" -"checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" +"checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum ipconfig 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "fccb81dd962b29a25de46c4f46e497b75117aa816468b6fff7a63a598a192394" -"checksum itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)" = "f58856976b776fedd95533137617a02fb25719f40e7d9b01c7043cd65474f450" +"checksum ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "08f7eadeaf4b52700de180d147c4805f199854600b36faa963d91114827b2ffc" +"checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" @@ -3031,18 +3129,19 @@ dependencies = [ "checksum lazy_static 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fb497c35d362b6a331cfd94956a07fc2c78a4604cdbee844a81170386b996dd3" "checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum levenshtein_automata 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73a004f877f468548d8d0ac4977456a249d8fabbdb8416c36db163dfc8f2e8ca" -"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "10923947f84a519a45c8fefb7dd1b3e8c08747993381adee176d7a82b4195311" +"checksum libflate 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "bff3ac7d6f23730d3b533c35ed75eef638167634476a499feef16c428d74b57b" "checksum libgit2-sys 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4916b5addc78ec36cc309acfcdf0b9f9d97ab7b84083118b248709c5b7029356" "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 linked-hash-map 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6d262045c5b87c0861b3f004610afd0e2c851e2908d08b6c870cbb9d5f494ecd" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" -"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum log-panics 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ae0136257df209261daa18d6c16394757c63e032e27aafd8b07788b051082bef" "checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" +"checksum lzma-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "50c562099975607456d41db1e622633d1bcb553aa4569f2c27ce9efca995099b" "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" "checksum markup5ever 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff834ac7123c6a37826747e5ca09db41fd7a83126792021c2e636ad174bb77d3" @@ -3050,7 +3149,9 @@ dependencies = [ "checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" "checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" "checksum mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0a907b83e7b9e987032439a387e187119cddafc92d5c2aaeb1d92580a793f630" +"checksum mime_guess 1.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2d4c0961143b8efdcfa29c3ae63281601b446a4a668165454b6c90f8024954c5" "checksum mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30de2e4613efcba1ec63d8133f344076952090c122992a903359be5a4f99c3ed" "checksum miniz-sys 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0300eafb20369952951699b68243ab4334f4b10a88f411c221d444b36c40e649" "checksum miniz_oxide 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ad30a47319c16cde58d0314f5d98202a80c9083b5f61178457403dfb14e509c" @@ -3063,21 +3164,20 @@ dependencies = [ "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" "checksum new_debug_unreachable 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0cdc457076c78ab54d5e0d6fa7c47981757f1e34dc39ff92787f217dede586c4" "checksum nix 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d37e713a259ff641624b6cb20e3b12b2952313ba36b6823c0f16e6cfd9e5de17" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" -"checksum nom 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c349f68f25f596b9f44cf0e7c69752a5c633b0550c3ff849518bfba0233774a" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" -"checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" "checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" +"checksum opaque-debug 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "51ecbcb821e1bd256d456fe858aaa7f380b63863eab2eb86eee1bd9f33dd6682" "checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-src 111.0.1+1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d1edaed888fd85a54a2646bf02992931ddefdda3b1a748fc79f088a8db27fcbe" +"checksum openssl-src 111.1.0+1.1.1a (registry+https://github.com/rust-lang/crates.io-index)" = "26bb632127731bf4ac49bf86a5dde12d2ca0918c2234fc39d79d4da2ccbc6da7" "checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" "checksum owned-read 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "05d57fab18d627fc4dffbd78d4a25a5b5b5211fda724231f001bee4cef1b2d3b" -"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "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_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" +"checksum patch-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "36b17c85e29958514636d3071b17538241a2631c32fed7e6ff3b431d2bda4a1a" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0fce5d8b5cc33983fc74f78ad552b5522ab41442c4ca91606e4236eb4b5ceefc" "checksum pest 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a677051ad923732bb5c70f2d45f8985a96e3eee2e2bff86697e3b11b0c3fcfde" @@ -3092,20 +3192,26 @@ dependencies = [ "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum podio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "780fb4b6698bbf9cf2444ea5d22411cef2953f0824b98f33cf454ec5615645bd" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -"checksum proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "3d7b7eaaa90b4a90a932a9ea6666c95a389e424eff347f0f793979289429feee" +"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" -"checksum quote 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "63b5829244f52738cfee93b3a165c1911388675be000c888d2fae620dee8fa5b" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" "checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae9d223d52ae411a33cf7e54ec6034ec165df296ccd23533d671a28252b6f66a" +"checksum rand_chacha 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "771b009e3a508cb67e8823dda454aaa5368c7bc1c16829fb77d3e980440dd34a" "checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" -"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" +"checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" +"checksum redox_syscall 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "679da7508e9a6390aeaf7fbd02a800fdc64b73fe2204dd2c8ae66d22d9d5ad5d" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467" +"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" "checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" -"checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e" +"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" "checksum rental 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ca24bf9b98e3df0bb359f1bbb8ef993a0093d8432500c5eaf3ae724f30b5f754" "checksum rental-impl 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a269533a9b93bbaa4848260e51b64564cc445d46185979f31974ec703374803a" @@ -3113,87 +3219,82 @@ dependencies = [ "checksum ring 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe642b9dd1ba0038d78c4a3999d1ee56178b4d415c1e1fbaba83b06dce012f0" "checksum rlua 0.15.3 (registry+https://github.com/rust-lang/crates.io-index)" = "187f5174337682c1ae2d957b107f4c84e204ce2e084c76532194d3849db09a28" "checksum rlua_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "78ba9f3fb6b174d50c5181937b246371b6811cab40821f57c3e25df72f2203bf" -"checksum rust-ini 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ac66e816614e124a692b6ac1b8437237a518c9155a3aacab83a373982630c715" "checksum rust-stemmers 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fbf06149ec391025664a5634200ced1afb489f0f3f8a140d515ebc0eb04b4bc0" "checksum rust_sodium 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aae6b7adeb7ceeec0ac050d1eb2ca1e111a8e3b15a1be260dc3e61e731be46b7" "checksum rust_sodium-sys 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5b9d861bb72f3f6ab7ec3bf08822b409b37254c089050038e78d7798a48e23" "checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum ryu 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7153dd96dade874ab973e098cb62fcdbb89a03682e46b144fd09550998d4a4a7" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" "checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" +"checksum scl 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4fb5cfdc8626b7f7e97533dc80e4235d3e7186725ff2e8f5f1b5aa0e47807d" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0" "checksum security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab01dfbe5756785b5b4d46e0289e5a18071dfa9a7c2b24213ea00b9ef9b665bf" "checksum select 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7004292887d0a030e29abda3ae1b63a577c96a17e25d74eaa1952503e6c1c946" "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.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" -"checksum serde-hjson 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0b833c5ad67d52ced5f5938b2980f32a9c1c5ef047f0b4fb3127e7a423c76153" "checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" -"checksum serde_json 1.0.32 (registry+https://github.com/rust-lang/crates.io-index)" = "43344e7ce05d0d8280c5940cabb4964bea626aa58b1ec0e8c73fa2a8512a38ce" -"checksum serde_test 0.8.23 (registry+https://github.com/rust-lang/crates.io-index)" = "110b3dbdf8607ec493c22d5d947753282f3bae73c0f56d322af1e8c78e4c23d5" -"checksum serde_urlencoded 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "aaed41d9fb1e2f587201b863356590c90c1157495d811430a0c0325fe8169650" -"checksum serde_yaml 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a2054770c85c7f026ad772e31ff631e65e378154ee20e85d0ada8c6ed053e63a" +"checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811" +"checksum serde_urlencoded 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d48f9f99cd749a2de71d29da5f948de7f2764cc5a9d7f3c97e3514d4ee6eabf2" +"checksum serde_yaml 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0887a8e097a69559b56aa2526bf7aff7c3048cf627dff781f0b56a6001534593" "checksum sha-1 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "51b9d1f3b5de8a167ab06834a7c883bd197f2191e1dda1a22d9ccfeedbf9aded" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" "checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" -"checksum signal-hook 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f7ca1f1c0ed6c8beaab713ad902c041e4f09d06e1b4bb74c5fc553c078ed0110" +"checksum signal-hook 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8941ae94fa73d0f73b422774b3a40a7195cecd88d1c090f4b37ade7dc795ab66" "checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" "checksum slug 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" -"checksum smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "153ffa32fd170e9944f7e0838edf824a754ec4c1fc64746fcc9fe1f8fa602e5d" +"checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" "checksum snap 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "95d697d63d44ad8b78b8d235bf85b34022a78af292c8918527c5f0cffdde7f43" "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" +"checksum string 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98998cced76115b1da46f63388b909d118a37ae0be0f82ad35773d4a4bc9d18d" "checksum string_cache 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "413fc7852aeeb5472f1986ef755f561ddf0c789d3d796e65f0b6fe293ecd4ef8" "checksum string_cache_codegen 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1eea1eee654ef80933142157fdad9dd8bc43cf7c74e999e369263496f04ff4da" "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum syn 0.15.18 (registry+https://github.com/rust-lang/crates.io-index)" = "90c39a061e2f412a9f869540471ab679e85e50c6b05604daf28bc3060f75c430" +"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synstructure 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73687139bf99285483c96ac0add482c3776528beac1d97d444f6e91f203a2015" "checksum tantivy 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "34fab04422b020c9e6e4b5f4a2eb5d6727ce89d244a9f96434347956c8d9dad6" -"checksum tar 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)" = "89b518542272d9c12195e72885c7a4c142b89226f681bb129e4a922ba1b1ee74" +"checksum tar 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "a303ba60a099fcd2aaa646b14d2724591a96a75283e4b7ed3d1a1658909d9ae2" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -"checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" +"checksum tempfile 3.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7e91405c14320e5c79b3d148e1c86f40749a36e490642202a31689cb1a3452b2" "checksum tendril 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1b72f8e2f5b73b65c315b1a70c730f24b9d7a25f39e98de8acbe2bb795caea" -"checksum tera 0.11.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac6d8ad623a7efcfb4367ce2a36f84ef849d5aa3c7bcf2e0324c4cbcc57ebaf" +"checksum tera 0.11.20 (registry+https://github.com/rust-lang/crates.io-index)" = "4b505279e19d8f7d24b1a9dc58327c9c36174b1a2c7ebdeac70792d017cb64f3" "checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" -"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "a7817d4c98cc5be21360b3b37d6036fe9b7aefa5b7a201b7b16ff33423822f7d" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" +"checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" "checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" "checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" "checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" -"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" -"checksum tokio-signal 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "40da88e6445ed335e14746b60986a6c8b3632b09bc9097df76b4a6ddd16f1f92" +"checksum tokio-openssl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4646ae1fd623393de3d796ea53af75acd02938dd5579544fbd6d236d041978a6" +"checksum tokio-reactor 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "502b625acb4ee13cbb3b90b8ca80e0addd263ddacf6931666ef751e610b07fb5" +"checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" "checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" -"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" -"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" -"checksum tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e53fdbf3156f588be1676022fe794232b24922d426e8c14f4e46891c1e31c440" -"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" -"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" -"checksum toml 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4a2ecc31b0351ea18b3fe11274b8db6e4d82bce861bbb22e6dbed40417902c65" +"checksum tokio-threadpool 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "56c5556262383032878afad66943926a1d1f0967f17e94bd7764ceceb3b70e7f" +"checksum tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f37f0111d76cc5da132fe9bc0590b9b9cfd079bc7e75ac3846278430a299ff8" +"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" +"checksum tokio-uds 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "99ce87382f6c1a24b513a72c048b2c8efe66cb5161c9061d00bee510f08dc168" "checksum tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" -"checksum trust-dns-proto 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1525ca4e26f5a09d81b79584f19225e7dba5606ae3a416311c2751c5cea60bb" "checksum trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" "checksum trust-dns-resolver 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4e913a5df94658858e548cc95a3212797ee524e487ede091c32f27ca26e11620" -"checksum trust-dns-resolver 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4a821ad51a29816420b8cac4b026756b81c023630b97eaa4c8090637ee3508bd" "checksum twoway 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" "checksum typed-arena 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c6c06a92aef38bb4dc5b0df00d68496fc31307c5344c867bb61678c6e1671ec5" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" "checksum ucd-trie 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "71a9c5b1fe77426cf144cc30e49e955270f5086e31a6441dfa8b32efc09b9d77" -"checksum ucd-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0f8bfa9ff0cadcd210129ad9d2c5f145c13e9ced3d3e5d948a6213487d52444" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" "checksum unic-char-property 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce36d3f7ce754afdbccccf8ff0dd0134e50fb44aaae579f96218856e9e5dbd1e" "checksum unic-char-range 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9ab85fab42ad1b26cafc03bf891f69cb4d6e15f491030e89a0122197baa8ae8" "checksum unic-common 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8d4a7ade929ef7d971e16ced21a8cd56a63869aa6032dfb8cb083cf7d077bf" @@ -3204,6 +3305,7 @@ dependencies = [ "checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" @@ -3233,5 +3335,7 @@ dependencies = [ "checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +"checksum xz2 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c179869f34fc7c01830d3ce7ea2086bc3a07e0d35289b667d0a8bf910258926c" "checksum yaml-rust 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95acf0db5515d07da9965ec0e0ba6cc2d825e2caeb7303b66ca441729801254e" "checksum zip 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "77ce0ceee93c995954a31f77903925a6a8bb094709445238e344f2107910e29e" +"checksum zip 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00acf1fafb786ff450b6726e5be41ef029142597b47a40ce80f952f1471730a0" diff --git a/Cargo.toml b/Cargo.toml index 72ab727..1751633 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "torchbear" -description = "network application framework" -version = "0.5.3" +description = "Lua programming environment in Rust" +version = "0.10.0" authors = ["Mitchell Tannenbaum "] repository = "https://github.com/foundpatterns/torchbear" readme = "Readme.md" -keywords = ["actix", "lua", "cryptography", "web", "frameworkd"] +keywords = ["actix", "lua", "cryptography", "web", "framework"] license = "MIT/Apache-2.0" categories = ["network-programming", "asynchronous", "web-programming::http-server", @@ -23,7 +23,7 @@ path = "src/main.rs" [dependencies] actix = "0.7" actix-lua = "0.5" -actix-web = { version = "0.7", features = ["tls"] } +actix-web = { version = "0.7", features = ["ssl"] } futures = "0.1" env_logger = "0.6" tera = "0.11" @@ -35,16 +35,15 @@ serde_yaml = "0.8" rlua_serde = "0.2" uuid = "0.7" serde_urlencoded = "0.5" -comrak = "0.3" +comrak = "0.4" serde_json = "1.0" rust_sodium = "0.10" base64 = "0.10" -config = "0.9" clap = "2.32" chrono = "0.4" -log = "0.4.5" +log = "0.4" fern = { version = "0.5", features = ["colored"] } -colored = "1.6.1" +colored = "1.6" log-panics = "2.0" select = "0.4" serde_derive = "1.0" @@ -52,10 +51,20 @@ openssl = { version = "0.10", features = ["vendored"] } git2 = "0.7" regex = "1" tantivy = "0.7" +mime_guess = "1.8" +scl = "0.0" +heck = "0.3" +zip = "0.5" +blake2 = "0.8" +tar = "0.4" +xz2 = "0.1" +diff-rs = "0.2" +patch-rs = "0.3" + [dev-dependencies] tempfile = "3" -#[features] -#default = [] -#log_bindings = [] +[features] +default = [] +tantivy_bindings = [] diff --git a/Dockerfile.nightly b/Dockerfile.nightly deleted file mode 100644 index 0543228..0000000 --- a/Dockerfile.nightly +++ /dev/null @@ -1,7 +0,0 @@ - -FROM ekidd/rust-musl-builder:nightly - -ADD . ./ -RUN sudo chown -R rust:rust . - -CMD cargo build --release \ No newline at end of file diff --git a/Readme.md b/Readme.md index 03a8f02..19aa700 100644 --- a/Readme.md +++ b/Readme.md @@ -3,7 +3,7 @@

Travis Build Status Appveyor Build Status - Dependencies + Dependencies torchbear Crate Download Total
@@ -11,45 +11,55 @@ Contributions Welcome PRs Welcome License: MIT/Apache - Chat + Chat

-Torchbear is an extremely fast and featureful Lua application framework. It gives you power of Rust with the simplicity of Lua. You can use it for web automation, embedded programming, and anything else you can imagine. +Torchbear gives you power of Rust with the simplicity of Lua. You can use it for web automation, embedded programming, data analysis, and anything else you can imagine. + +You don't need to learn Rust to use Torchbear, and Lua is a very simple language. You can [Learn in Lua 15 minutes](http://tylerneylon.com/a/learn-lua/). Below is a list of additional functionality in Torchbear, and you can also browse the [bindings functions documentation](https://foundpatterns.github.io/torchbear-docs/index.html), which is automatically generated using a Torchbear [code map app](http://github.com/foundpatterns/lua-module-map). ## Built-in Tools -* [rlua](https://github.com/kyren/rlua) safely wrapped Lua 5.3.5 with traceback error messages +* [rlua](https://github.com/kyren/rlua) *completely safe* Lua 5.3.5 with traceback error messages * [Actix Web](https://github.com/actix/actix-web) HTTP/1.x and HTTP/2.0 web servers and clients * [Tera](https://github.com/Keats/tera) Jinja template rendering -* [Comrak](https://github.com/kivikakk/comrak) Markdown output +* [Comrak](https://github.com/kivikakk/comrak) Markdown to HTML outputting * [Libsodium](https://github.com/maidsafe/rust_sodium) cryptographic signing and verifying, and encrypting and decrypting * [`std::fs::*`](https://doc.rust-lang.org/std/fs/index.html) filesystem operations * [`std::collections::HashSet`](https://doc.rust-lang.org/std/collections/struct.HashSet.html) set-theoretic operations * [Serde](https://github.com/serde-rs/serde) YAML and JSON serializing/deserializing +* [SCL](https://github.com/Keats/scl) simple, safe configuration language serializing/deserializing * [UUID-rs](https://github.com/uuid-rs/uuid) UUID generation and verification * [Chrono](https://github.com/chronotope/chrono) time/date generation and verification * [Select-rs](https://github.com/utkarshkukreti/select.rs) HTML scraping -* [Git](https://github.com/alexcrichton/git2-rs) repo creation, commit staging, and log access +* [Git](https://github.com/alexcrichton/git2-rs) cloning, pulling, repo creation, staging, committing, and log access (builtin, no `git` dependency) * [Tantivy](https://github.com/tantivy-search/tantivy) schema building, document adding/updating/deleting, and searching * [regex](https://github.com/rust-lang/regex) matching and replacing +* [MIME](https://github.com/abonander/mime_guess) type guessing +* [Heck](https://github.com/withoutboats/heck) case conversions +* [Zip](https://github.com/mvdnes/zip-rs), [Tar](https://github.com/alexcrichton/tar-rs), and [xz](https://github.com/alexcrichton/xz2-rs) (lzma) file decompression +* [Diff](https://github.com/foundpatterns/diff-rs) strings and files, and produce [unidiff](https://en.wikipedia.org/wiki/Diff#Unified_format) outputs +* [Patch](https://github.com/foundpatterns/patch-rs) text files with a unidiff input to get a second text output ## Installation -Torchbear comes as a single executable, making it very easy to install. The latest version is available on [Torchbear's GitHub releases page](https://github.com/foundpatterns/torchbear/releases), so you can download the zip file for your operating system and hardware architecture from there and unzip the executable wherever is most convenient for you. To make it simpler, you can use our install script by copying and pasting this line into your terminal, then just running `torchbear` or `torchbear.exe` in any of your apps: +Torchbear comes as a single executable, making it very easy to install. Here's a simple command to install it: ```sh - curl https://git.io/fpcV6 -sSfL | sh - ``` + curl https://git.io/fpcV6 -sSfL | bash +``` + +[Our installer](https://github.com/foundpatterns/torchbear/blob/master/install.sh) gives you the latest version, which is also available on [Torchbear's GitHub releases page](https://github.com/foundpatterns/torchbear/releases), so you can download the zip file for your operating system and hardware architecture and unzip the executable wherever is most convenient for you. Our install script is much easier though; you can use it by copying and pasting that line into your terminal, then you'll be able to run `torchbear` in any of your apps. -#### How to add a terminal on non-linux environments +#### What is a terminal? -(If you haven't heard of a terminal before, here's a [1 min intro to what is a terminal window](https://www.youtube.com/watch?v=zw7Nd67_aFw).) +If you haven't heard of a terminal before, here's a [1 min intro to what is a terminal window](https://www.youtube.com/watch?v=zw7Nd67_aFw). On Windows, Android, and MacOS, we've tested with these tools that make a very nice user experience: Windows: install [Cmder](http://cmder.net/) Full. -Android users, install [Termux](https://termux.com/). +Android: install [Termux](https://termux.com/). -MacOS comes ready, but [Homebrew](https://brew.sh/) has many additional tools. +MacOS: comes mostly ready, but [Homebrew](https://brew.sh/) has additional tools. ## Examples @@ -59,16 +69,22 @@ MacOS comes ready, but [Homebrew](https://brew.sh/) has many additional tools. `print("hello from Torchbear")` -- in `Settings.toml` +- run `torchbear` -`init = "init.lua"` +#### [Simple Webserver](https://github.com/foundpatterns/simple-webserver) · also supports TLS -- run `torchbear` +#### [Machu Picchu](https://github.com/foundpatterns/machu-picchu) · general-purpose package manager -#### [Torchbear Static Webserver](https://github.com/foundpatterns/torchbear-static-webserver) +#### [File Witness](https://github.com/foundpatterns/file-witness) · code signing app -#### [Lighttouch Application Framework](https://github.com/foundpatterns/lighttouch) (👍👍 for Web Development!) +#### [Gut](https://github.com/foundpatterns/gut) · simple version control system + +#### [Lighttouch Application Framework](https://github.com/foundpatterns/lighttouch) · application framework, good for web development + +#### [Lua Module Map](https://github.com/foundpatterns/lua-module-map) · Rust/Lua code diagram visualization ## Contributions wanted -Torchbear extends Rust's burgeoning ecosystem of libraries. Developers are welcomed to [make small changes](https://github.com/foundpatterns/torchbear/issues?q=is%3Aopen+is%3Aissue+label%3Asize%2F0.25) as well as high impact contributions, like [adding bindings](https://github.com/foundpatterns/torchbear/labels/feature%2Fbindings). There are many examples to learn from in the bindings directory, each with an interesting history. You'll learn a Rust library's API inside and out, and you'll put another tool into the hands of a growing userbase. +Torchbear extends Rust's growing ecosystem of libraries. Developers are welcomed to [make small changes](https://github.com/foundpatterns/torchbear/issues?q=is%3Aopen+is%3Aissue+label%3Asize%2F0.25) as well as high impact contributions, like [adding bindings](https://github.com/foundpatterns/torchbear/labels/feature%2Fbindings). There are many examples to learn from in the bindings directory, each with an interesting history. You'll learn a Rust library's API inside and out, and you'll put another tool into the hands of a growing userbase. + +If you just want to add a 'review', you're more than welcomed to do that too. Just add this "issue label" (type/review) and it won't get in anyone's way. This will help us understand Torchbear from your point of view. diff --git a/install.sh b/install.sh index ad18f88..99fda74 100644 --- a/install.sh +++ b/install.sh @@ -1,14 +1,6 @@ -#!/bin/bash +#!/usr/bin/env bash set -e -is_root() { - if [ "$EUID" -ne 0 ];then - return 1 - else - return 0 - fi -} - architecture() { case `uname -m` in x86_64) @@ -34,11 +26,14 @@ get_os() { case `uname -s` in Linux) - if [[ $(uname -o) == "Android" ]]; then - echo Android - else - echo Linux - fi + case `uname -o` in + Android) + echo Android + ;; + GNU/Linux) + echo Linux + ;; + esac ;; MINGW* | MSYS* | CYGWIN*) echo Windows @@ -70,7 +65,7 @@ system() { } get_latest_version() { - curl --silent "https://api.github.com/repos/$1/releases/latest" | + curl --silent "https://api.github.com/repos/foundpatterns/torchbear/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' } @@ -80,7 +75,7 @@ get_url() { local os=$(system) #Maybe instead of getting the latest version, we could get the latest stable release instead to reduce the chance of #exposed bugs being sent to users - local version=$(get_latest_version "foundpatterns/torchbear") + local version=$(get_latest_version) #TODO: Use github api to get the uri for the download instead. echo "https://github.com/foundpatterns/torchbear/releases/download/${version}/torchbear-${version}-${arch}-${os}-stable.zip" } @@ -107,46 +102,58 @@ download_and_extract() { } -#TODO: Add a simple check to see if path already -set_path() { - if [[ "$(system)" == *"windows"* ]]; then - if [[ "$PATH" != *"torchbear"* ]]; then - setx PATH $HOME/.bin/:$PATH - fi - fi +torchbear_path() { + case $(get_os) in + Linux | Darwin) + echo "/usr/local/bin/torchbear" + ;; + Android) + echo "/data/data/com.termux/files/usr/bin/torchbear" + ;; + Windows) + if [ -d "$CMDER_ROOT" ]; then + echo "$CMDER_ROOT/bin/torchbear.exe" + else + error Cmder is required to run this installer. + fi + ;; + esac } install() { echo System Type: $(get_os) - - if [ -f "/usr/local/bin/torchbear" ] || [ -f "$HOME/.bin/torchbear.exe" ] || [ -f "/data/data/com.termux/files/usr/bin/torchbear" ] || [ ! -x $(command -v torchbear) ]; then - #TODO: Give user the an option to upgrade if they are running the installer to upgrade. - error "Torchbear is already installed." + if [ -f "$(torchbear_path)" ]; then + local curr_version=($(echo $($(torchbear_path) -V))) + local repo_version=$(get_latest_version) + + if [ "${curr_version[1]}" == "$repo_version" ]; then + error "Torchbear is up to date." + fi + echo "New version of available" + echo "Current Version: ${curr_version[1]}" + echo "Latest Version: $repo_version" fi echo Downloading torchbear - case $(system) in - linux | apple) + case $(get_os) in + Linux | Darwin) download_and_extract "/usr/local/bin" ;; - android) + Android) download_and_extract "/data/data/com.termux/files/usr/bin" ;; - *windows*) - if [ ! -d "$HOME/.bin" ]; then - mkdir "$HOME/.bin" - fi - download_and_extract "$HOME/.bin" - set_path + Windows) + download_and_extract "$CMDER_ROOT/bin" ;; *) error "System is not supported at this time" ;; esac - if [ -x $(command -v torchbear) ] || [ -f "$HOME/.bin/torchbear.exe" ]; then - echo Torchbear has been installed. + if [ -f "$(torchbear_path)" ]; then + local version=($(echo $($(torchbear_path) -V))) + echo Torchbear ${version[1]} has been installed. fi } diff --git a/private_key.enc b/private_key.enc new file mode 100644 index 0000000000000000000000000000000000000000..1544e55c9bf91932816e489500a0bd3ed16647ad GIT binary patch literal 96 zcmV-m0H6P!^zgcTKlaFnB(^e(=?o}p;JNug{VgxS4mqso46U#?MVD6heX9FQ1R@iw zQ7t`F)m_%EFUx}^Ox`bj3|J;G=(w!&nb-Ll|3|(+3R@NQ`F})88#gzWz{$b%0A)y3 C@GrFh literal 0 HcmV?d00001 diff --git a/public_key b/public_key new file mode 100644 index 0000000..e0c3a74 --- /dev/null +++ b/public_key @@ -0,0 +1 @@ +kV3hXg2/jKaPTbZ0I3Kp1hT6CfV4BSzJUK0tNPnspb4= diff --git a/src/bindings/app/diff.rs b/src/bindings/app/diff.rs new file mode 100644 index 0000000..c028170 --- /dev/null +++ b/src/bindings/app/diff.rs @@ -0,0 +1,70 @@ +use rlua::prelude::*; +use std::{fs, io}; +use std::io::BufRead; +use chrono::{DateTime, Local}; +use diff_rs::diff; + +fn time_format(d: &DateTime) -> String { + d.format("%Y-%m-%d %H:%M:%S.%f %z").to_string() +} + +fn mtime(path: &str) -> ::Result> { + Ok(DateTime::from(fs::metadata(path)?.modified()?)) +} + +fn read_file(path: &str) -> io::Result> { + let file = fs::File::open(path)?; + let file = io::BufReader::new(file); + file.lines().collect() +} + +pub fn init(lua: &Lua) -> ::Result<()> { + let module = lua.create_table()?; + + module.set("compare_strings", lua.create_function( |_, (left, right): (String, String)| { + let prefix = vec![ + format!("--- a\t{}", time_format(&Local::now())), + format!("+++ b\t{}", time_format(&Local::now())) + ]; + + let diff = diff( + &left + .split("\n") + .map(str::to_owned) + .collect::>(), + &right + .split("\n") + .map(str::to_owned) + .collect::>(), + 3 + ).map_err(LuaError::external)?; + + let mut res = String::new(); + prefix.iter().cloned().chain(diff).for_each(|s| { res.push_str(&s); res.push('\n') }); + + Ok(res) + })?)?; + + module.set("compare_files", lua.create_function( |_, (left, right): (String, String)| { + let prefix = vec![ + format!("--- {}\t{}", &left, time_format(&mtime(&left).map_err(LuaError::external)?)), + format!("+++ {}\t{}", &right, time_format(&mtime(&right).map_err(LuaError::external)?)) + ]; + + let left = read_file(&left).map_err(LuaError::external)?; + let right = read_file(&right).map_err(LuaError::external)?; + + let diff = diff(&left, &right, 3).map_err(LuaError::external)?; + + let mut res = String::new(); + prefix.iter().cloned().chain(diff).for_each(|s| { res.push_str(&s); res.push('\n') }); + + Ok(res) + })?)?; + + + lua.globals().set("diff", module)?; + + Ok(()) +} + diff --git a/src/bindings/git.rs b/src/bindings/app/git.rs similarity index 87% rename from src/bindings/git.rs rename to src/bindings/app/git.rs index cd70cf8..30b9756 100644 --- a/src/bindings/git.rs +++ b/src/bindings/app/git.rs @@ -1,4 +1,3 @@ -use rlua::prelude::*; use rlua::Lua; use git2; @@ -8,7 +7,7 @@ use git2; /// paths: path of files to add. These paths are relative to repo. /// For example: current directory is /, repo is /repo, file is /repo/file, we need to call: /// git_add("repo", &vec!["file"]) -fn git_add(repo: &str, paths: &Vec) -> Result<(), git2::Error> { +fn git_add(repo: &str, paths: &Vec) -> ::Result<()> { let repo = git2::Repository::open(&repo)?; let mut index = repo.index()?; index.add_all(paths.iter(), git2::IndexAddOption::DEFAULT, None)?; @@ -19,7 +18,7 @@ fn git_add(repo: &str, paths: &Vec) -> Result<(), git2::Error> { /// repo: Repository's path /// message: commit message /// sig: pair of (name, email). If is None, will try to use repo's config. -fn git_commit(repo: &str, message: &str, sig: Option<(String, String)>) -> Result<(), git2::Error> { +fn git_commit(repo: &str, message: &str, sig: Option<(String, String)>) -> ::Result<()> { let repo = git2::Repository::open(&repo)?; let sig = if let Some((name, email)) = sig { git2::Signature::now(&name, &email)? @@ -44,7 +43,20 @@ fn git_commit(repo: &str, message: &str, sig: Option<(String, String)>) -> Resul Ok(()) } -pub fn init(lua: &Lua) -> Result<(), LuaError> { +fn git_clone(url: &str, into: &str) -> ::Result<()> { + let _ = git2::Repository::clone(url, into)?; + Ok(()) +} + +fn git_pull(path: &str) -> ::Result<()> { + let repo = git2::Repository::open(&path)?; + repo.find_remote("origin")? + .fetch(&["master"], None, None)?; + + Ok(()) +} + +pub fn init(lua: &Lua) -> ::Result<()> { let git = lua.create_table()?; git.set( @@ -106,6 +118,21 @@ pub fn init(lua: &Lua) -> Result<(), LuaError> { })?, )?; + git.set( + "clone", + lua.create_function(|_, (url, into): (String, String)| { + Ok(git_clone(&url, &into).is_ok()) + })?, + )?; + + git.set( + "pull", + lua.create_function(|_, path: String| { + Ok(git_pull(&path).is_ok()) + })?, + )?; + + let globals = lua.globals(); globals.set("git", git)?; Ok(()) diff --git a/src/bindings/log.rs b/src/bindings/app/log.rs similarity index 97% rename from src/bindings/log.rs rename to src/bindings/app/log.rs index 2b6e516..5d37c64 100644 --- a/src/bindings/log.rs +++ b/src/bindings/app/log.rs @@ -1,7 +1,7 @@ use rlua::prelude::*; use rlua::{Variadic, Value}; -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { fn tostr (lua: &Lua, args: Variadic) -> LuaResult { let f: LuaFunction = lua.globals().get("tostring")?; diff --git a/src/bindings/markdown.rs b/src/bindings/app/markdown.rs similarity index 97% rename from src/bindings/markdown.rs rename to src/bindings/app/markdown.rs index e12f1fd..9053e44 100644 --- a/src/bindings/markdown.rs +++ b/src/bindings/app/markdown.rs @@ -31,7 +31,7 @@ fn comrak_options_from_table(table: &HashMap) -> Result { options.default_info_string = Some(val.to_str()?.to_string()) } - (SAFE, LuaValue::Boolean(val)) => options.safe = *val, + (SAFE, LuaValue::Boolean(val)) => options.unsafe_ = *val, (EXT_STRIKETHROUGH, LuaValue::Boolean(val)) => options.ext_strikethrough = *val, (EXT_TAGFILTER, LuaValue::Boolean(val)) => options.ext_tagfilter = *val, (EXT_TABLE, LuaValue::Boolean(val)) => options.ext_table = *val, @@ -53,7 +53,7 @@ fn comrak_options_from_table(table: &HashMap) -> Result Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let render_markdown = lua.create_function( |_, (markdown_str, options): (String, Option>)| { let html_string = match options { diff --git a/src/bindings/app/mod.rs b/src/bindings/app/mod.rs new file mode 100644 index 0000000..b53528d --- /dev/null +++ b/src/bindings/app/mod.rs @@ -0,0 +1,29 @@ +pub mod git; +pub mod log; +pub mod markdown; +pub mod tera; +pub mod diff; +pub mod patch; + +use rlua::prelude::*; + +#[cfg(feature = "tantivy_bindings")] +pub mod tantivy; + +// Dummy modules +#[cfg(not(feature = "tantivy_bindings"))] +pub mod tantivy { + pub fn init(_: &rlua::Lua) -> ::Result<()> { Ok(()) } +} + +pub fn init(lua: &Lua) -> ::Result<()> { + git::init(&lua)?; + log::init(&lua)?; + markdown::init(&lua)?; + tantivy::init(&lua)?; + tera::init(&lua)?; + diff::init(&lua)?; + patch::init(&lua)?; + + Ok(()) +} diff --git a/src/bindings/app/patch.rs b/src/bindings/app/patch.rs new file mode 100644 index 0000000..97d83b4 --- /dev/null +++ b/src/bindings/app/patch.rs @@ -0,0 +1,24 @@ +use rlua::{Lua, UserData, UserDataMethods}; + +struct PatchParser(patch_rs::PatchParser); + +impl UserData for PatchParser { + fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) { + methods.add_method("process", |_, this, _: ()| { + this.0.process().map_err(rlua::Error::external) + }); + } +} + +pub fn init(lua: &Lua) -> Result<(), rlua::Error> { + let module = lua.create_table()?; + module.set( + "new", + lua.create_function(|_, (text, patch): (Vec, String)| { + Ok(PatchParser(patch_rs::PatchParser::new(text, patch))) + })?, + )?; + let g = lua.globals(); + g.set("patch_parser", module)?; + Ok(()) +} diff --git a/src/bindings/tantivy.rs b/src/bindings/app/tantivy.rs similarity index 98% rename from src/bindings/tantivy.rs rename to src/bindings/app/tantivy.rs index 9db9ebc..c9b0b05 100644 --- a/src/bindings/tantivy.rs +++ b/src/bindings/app/tantivy.rs @@ -195,7 +195,7 @@ impl UserData for Document { use tantivy::schema::Value; - fn get_value<'a, 'b> (lua: &'a Lua, tan: &'b Value) -> LuaResult> { + fn get_value<'a, 'b> (lua: &'a Lua, tan: &'b Value) -> Result> { Ok(match tan { Value::Str(s) => LuaValue::String(lua.create_string(&s)?), Value::U64(n) => LuaValue::Integer(*n as rlua::Integer), @@ -212,7 +212,7 @@ impl UserData for Document { }); methods.add_method_mut("get_all", |lua, this, f: Field| { - let vals: Result, _> = + let vals: Result> = this.0.get_all(f.0).iter().map( |x| get_value(lua, x) ).collect(); @@ -226,7 +226,7 @@ struct Term(tantivy::Term); impl UserData for Term {} -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let tan = lua.create_table()?; tan.set( "new_schema_builder", diff --git a/src/bindings/app/tera.rs b/src/bindings/app/tera.rs new file mode 100644 index 0000000..5706b8c --- /dev/null +++ b/src/bindings/app/tera.rs @@ -0,0 +1,85 @@ +use std::collections::HashMap; +use std::sync::{Arc, Mutex}; +use rlua::prelude::*; +use rlua_serde; +use tera::{Tera, Value as JsonValue, Context as TeraContext}; +use error::Error; + +struct LuaTera (Arc>); + +fn get_tera_context_from_table(table: &HashMap) -> Result { + let mut context = TeraContext::new(); + + for (key, value) in table.iter() { + match value { + LuaValue::Integer(num) => context.insert(key, num), + LuaValue::Number(num) => context.insert(key, num), + LuaValue::String(string) => context.insert(key, string.to_str()?), + LuaValue::Boolean(boolean) => context.insert(key, boolean), + value @ LuaValue::Table(_) => { + let value: JsonValue = rlua_serde::from_value(value.clone()) + .map_err(|err| LuaError::external(err))?; + context.insert(key, &value); + }, + LuaValue::Nil => context.insert(key, &()), + value @ _ => unimplemented!("Value {:?} is not implemented as a template parameter", value), + } + } + + Ok(context) +} + +impl LuaUserData for LuaTera { + fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) { + + methods.add_method("extend", |_, this, dir: String| { + let mut tera = this.0.try_lock().unwrap(); + let new_tera = Tera::parse(&dir).map_err(|err| { + LuaError::external(format_err!("{}", err.to_string())) + })?; + tera.extend(&new_tera).map_err(|err| { + LuaError::external(format_err!("{}", err.to_string())) + }) + }); + + methods.add_method("reload", |_, this, _: ()| { + let mut tera = this.0.try_lock().unwrap(); + tera.full_reload().map_err(|err| { + LuaError::external(format_err!("{}", err.to_string())) + }) + }); + + methods.add_method("render", |_, this, (path, params): (String, Option>)| { + let tera = this.0.try_lock().unwrap(); + let text = match params { + Some(params) => { + let mut context = get_tera_context_from_table(¶ms)?; + tera.render(&path, &context) + }, + None => { + tera.render(&path, &()) + }, + }.map_err(|err| { + // can't convert error_chain to failure directly + LuaError::external(format_err!("{}", err.to_string())) + })?; + + Ok(text) + }); + } +} + +pub fn init(lua: &Lua) -> ::Result<()> { + + let new_tera = lua.create_function(move |_, dir: String| { + let tera = Tera::new(&dir).unwrap(); + let arc_mutex = Arc::new(Mutex::new(tera)); + Ok(LuaTera(arc_mutex)) + })?; + + let module = lua.create_table()?; + module.set("new", new_tera)?; + lua.globals().set("tera", module).map_err(Error::from)?; + + Ok(()) +} diff --git a/src/bindings/archive/mod.rs b/src/bindings/archive/mod.rs new file mode 100644 index 0000000..dc04a46 --- /dev/null +++ b/src/bindings/archive/mod.rs @@ -0,0 +1,20 @@ +pub mod tar; +pub mod xz; +pub mod zip; + +use rlua::prelude::*; +use rlua::UserData; + +#[derive(Clone)] +struct ByteBuf(Vec); + +impl UserData for ByteBuf {} + + +pub fn init(lua: &Lua) -> ::Result<()> { + tar::init(&lua)?; + xz::init(&lua)?; + zip::init(&lua)?; + + Ok(()) +} diff --git a/src/bindings/archive/tar.rs b/src/bindings/archive/tar.rs new file mode 100644 index 0000000..e0e5e05 --- /dev/null +++ b/src/bindings/archive/tar.rs @@ -0,0 +1,38 @@ +use rlua::prelude::*; +use std::fs; +use std::io::Read; +use std::result; +use std::path::Path; +use tar::Archive; +use error::Error; + +use super::ByteBuf; + +fn extract(archive: &mut Archive, dst: &Path) -> result::Result<(), LuaError> { + for file in archive.entries().map_err(LuaError::external)? { + file + .and_then(|mut file| file.unpack_in(&dst)) + .map_err(LuaError::external)?; + } + Ok(()) +} + +pub fn init(lua: &Lua) -> ::Result<()> { + let module = lua.create_table()?; + module.set("decompress", lua.create_function(|_, (src, dst): (String, String)| { + let tar = fs::File::open(src).map_err(LuaError::external)?; + let dst = Path::new(&dst); + let mut archive = Archive::new(tar); + extract(&mut archive, &dst) + })?)?; + + module.set("decompress_buf", lua.create_function(|_, (data, dst): (ByteBuf, String)| { + let dst = Path::new(&dst); + let mut archive = Archive::new(&data.0[..]); + extract(&mut archive, &dst) + })?)?; + + lua.globals().set("tar", module).map_err(Error::from)?; + + Ok(()) +} diff --git a/src/bindings/archive/xz.rs b/src/bindings/archive/xz.rs new file mode 100644 index 0000000..fba0ce3 --- /dev/null +++ b/src/bindings/archive/xz.rs @@ -0,0 +1,20 @@ +use rlua::prelude::*; +use std::fs; +use std::io::Read; +use xz2::read::*; +use super::ByteBuf; + +pub fn init(lua: &Lua) -> ::Result<()> { + let module = lua.create_table()?; + module.set("decompress", lua.create_function(|_, file: (String)| { + let file = fs::File::open(&file).map_err(LuaError::external)?; + let mut data = XzDecoder::new(file); + let mut buf = vec![]; + data.read_to_end(&mut buf).map_err(LuaError::external)?; + Ok(ByteBuf(buf)) + })?)?; + + lua.globals().set("xz", module)?; + + Ok(()) +} diff --git a/src/bindings/archive/zip.rs b/src/bindings/archive/zip.rs new file mode 100644 index 0000000..8c97486 --- /dev/null +++ b/src/bindings/archive/zip.rs @@ -0,0 +1,41 @@ +use rlua::prelude::*; +use zip::ZipArchive; +use std::fs; +use std::io; +use std::path::Path; + +pub fn init(lua: &Lua) -> ::Result<()> { + + let module = lua.create_table()?; + module.set("decompress", lua.create_function(|_, (src, dst): (String, String)| { + let zip = fs::File::open(src).map_err(LuaError::external)?; + + ZipArchive::new(zip).map_err(LuaError::external).and_then(|mut archive|{ + let path = Path::new(&dst); + for i in 0..archive.len() { + let mut temp = archive.by_index(i).map_err(LuaError::external)?; + let outpath = temp.sanitized_name(); + if (&*temp.name()).ends_with('/') { + fs::create_dir_all(path.join(&outpath)).map_err(LuaError::external)?; + } else { + if let Some(p) = outpath.parent() { + if !p.exists() { + fs::create_dir_all(path.join(p)).map_err(LuaError::external)?; + } + } + let p = path.join(&outpath); + fs::File::create(p) + .and_then(|mut output| io::copy(&mut temp, &mut output) ).map_err(LuaError::external)?; + } + + } + + Ok(()) + }) + + })?)?; + + lua.globals().set("zip", module)?; + + Ok(()) +} \ No newline at end of file diff --git a/src/bindings/crypto/box_.rs b/src/bindings/crypto/box_.rs index 16d6f5c..fca70d7 100644 --- a/src/bindings/crypto/box_.rs +++ b/src/bindings/crypto/box_.rs @@ -2,18 +2,7 @@ use rlua::{UserData, UserDataMethods, Error as LuaError, Lua, Value}; use rust_sodium::crypto::box_; use base64; use std::cell::Ref; - -#[derive(Fail, Debug)] -pub enum Error { - #[fail(display = "Failed to load keys, data is invalid.")] - InvalidKeys, - #[fail(display = "Failed to load nonce, data is invalid.")] - InvalidNonce, - #[fail(display = "Object passed is in not Nonce.")] - InvalidNonceObject, - #[fail(display = "Failed to decrypt.")] - FailedToDecrypt, -} +use error::Error; pub struct KeyPair { secret: box_::SecretKey, diff --git a/src/bindings/crypto/hash.rs b/src/bindings/crypto/hash.rs index cb81a43..090769d 100644 --- a/src/bindings/crypto/hash.rs +++ b/src/bindings/crypto/hash.rs @@ -1,4 +1,5 @@ use rlua::{Error as LuaError, Lua}; +use blake2::*; use rust_sodium::crypto::hash; use base64; @@ -6,4 +7,12 @@ use base64; pub fn hash(_lua: &Lua, msg: String) -> Result { let digest = hash::hash(msg.as_bytes()); Ok(base64::encode(&digest)) -} \ No newline at end of file +} + +/// Returns base64 encoded BLAKE2B of `msg` +pub fn blake2_hash(_lua: &Lua, msg: String) -> Result { + let mut hasher = Blake2b::new(); + hasher.input(msg); + let digest = hasher.result(); + Ok(base64::encode(&digest)) +} diff --git a/src/bindings/crypto/mod.rs b/src/bindings/crypto/mod.rs index e4c21b1..6f42514 100644 --- a/src/bindings/crypto/mod.rs +++ b/src/bindings/crypto/mod.rs @@ -1,27 +1,20 @@ -use rlua::{Error as LuaError, Lua}; -use rust_sodium; - mod hash; mod sign; mod random; mod box_; -#[derive(Fail, Debug)] -pub enum Error { - #[fail(display = "Failed to initialize libsodium.")] - SodiumInitFailure, -} +use rlua::{Error as LuaError, Lua}; +use rust_sodium; +use error::Error; -pub fn init(lua: &Lua) -> Result<(), LuaError> { - match rust_sodium::init() { - Ok(_) => {}, - Err(_) => return Err(LuaError::external(Error::SodiumInitFailure)) - }; +pub fn init(lua: &Lua) -> ::Result<()> { + rust_sodium::init().map_err(|_| LuaError::external(Error::SodiumInitFailure))?; let crypto = lua.create_table()?; crypto.set("random_bytes", lua.create_function(random::random_bytes)?)?; crypto.set("hash", lua.create_function(hash::hash)?)?; + crypto.set("blake2b", lua.create_function(hash::blake2_hash)?)?; let sign = lua.create_table()?; sign.set("new_keypair", lua.create_function(sign::new_keypair)?)?; @@ -93,7 +86,9 @@ mod tests { local source = "this is a test!" print( "source=" .. source ) local hash = crypto.hash(source) - print("hash=" .. hash) + print("SHA512=" .. hash) + local blakehash = crypto.blake2b(source) + print("BLAKE2B=" .. blakehash) return true "#, None); diff --git a/src/bindings/crypto/sign.rs b/src/bindings/crypto/sign.rs index 31840ea..9f752d9 100644 --- a/src/bindings/crypto/sign.rs +++ b/src/bindings/crypto/sign.rs @@ -2,54 +2,40 @@ use rlua::prelude::*; use rlua::{UserDataMethods, UserData, MetaMethod, Lua}; use rust_sodium::crypto::sign; use base64; +use error::Error; pub struct LuaSecretKey (sign::SecretKey); pub struct LuaPublicKey (sign::PublicKey); -#[derive(Fail, Debug)] -pub enum Error { - #[fail(display = "Failed to verify signed message.")] - VerifyError, - #[fail(display = "Failed to load key, data is invalid.")] - InvalidKeys, - #[fail(display = "Failed verify, signature is invalid.")] - InvalidSignature, -} - /// Returns `msg` signed and base64 encoded -pub fn sign(_: &Lua, this: &LuaSecretKey, msg: String) -> LuaResult { +pub fn sign(_: &Lua, this: &LuaSecretKey, msg: String) -> Result { let signed_data = sign::sign(msg.as_bytes(), &this.0); Ok(base64::encode(&signed_data)) } /// Returns verified (decrypted) `base64_msg` /// Expects `base64_msg` to be base64 encoded encrypted msg -pub fn verify(_: &Lua, this: &LuaPublicKey, base64_msg: String) -> LuaResult { +pub fn verify(_: &Lua, this: &LuaPublicKey, base64_msg: String) -> Result { let signed_msg = base64::decode(&base64_msg).map_err(LuaError::external)?; - match sign::verify(&signed_msg, &this.0) { - Ok(v) => { - Ok(String::from_utf8(v).map_err(LuaError::external)?) - } - Err(_) => Err(LuaError::external(Error::VerifyError)) - } + sign::verify(&signed_msg, &this.0) + .and_then(|v| String::from_utf8(v).map_err(|_| ()) ) + .map_err(|_| LuaError::external(Error::VerifyError)) + } /// Returns base64 encoded signature for `msg` -pub fn sign_detached(_: &Lua, this: &LuaSecretKey, msg: String) -> LuaResult { +pub fn sign_detached(_: &Lua, this: &LuaSecretKey, msg: String) -> Result { let signature = sign::sign_detached(msg.as_bytes(), &this.0); Ok(base64::encode(signature.0.as_ref())) } /// Returns true/false if the given `signature` verifies for the given `msg` /// Expects `signature` to be base64 encoded -pub fn verify_detached(_: &Lua, this: &LuaPublicKey, (msg, base64_signature): (String, String)) -> LuaResult { +pub fn verify_detached(_: &Lua, this: &LuaPublicKey, (msg, base64_signature): (String, String)) -> Result { let signature_bytes = base64::decode(&base64_signature).map_err(LuaError::external)?; - let signature = match sign::Signature::from_slice(&signature_bytes) { - Some(signature) => Ok(signature), - _ => Err(LuaError::external(Error::InvalidSignature)) - }?; + let signature = sign::Signature::from_slice(&signature_bytes).ok_or(LuaError::external(Error::InvalidSignature))?; Ok(sign::verify_detached(&signature, msg.as_bytes(), &this.0)) } @@ -81,25 +67,15 @@ pub fn new_keypair(_lua: &Lua, _: ()) -> LuaResult<(LuaSecretKey, LuaPublicKey)> } /// Constructs and returns a LuaSecretKey object from it's base64 string encoding -pub fn load_secret(_: &Lua, base64_key: String) -> LuaResult { - match base64::decode(&base64_key) { - Ok(vec) => - match sign::SecretKey::from_slice(&vec) { - Some(key) => Ok(LuaSecretKey(key)), - None => Err(LuaError::external(Error::InvalidKeys)) - }, - Err(e) => Err(LuaError::external(e)) - } +pub fn load_secret(_: &Lua, base64_key: String) -> Result { + base64::decode(&base64_key).map_err(Error::from) + .and_then(|vec| sign::SecretKey::from_slice(&vec).ok_or(Error::InvalidKeys).map(|key| LuaSecretKey(key))) + .map_err(LuaError::external) } /// Constructs and returns a LuaPublicKey object from it's base64 string encoding -pub fn load_public(_: &Lua, base64_key: String) -> LuaResult { - match base64::decode(&base64_key) { - Ok(vec) => - match sign::PublicKey::from_slice(&vec) { - Some(key) => Ok(LuaPublicKey(key)), - None => Err(LuaError::external(Error::InvalidKeys)) - }, - Err(e) => Err(LuaError::external(e)) - } -} \ No newline at end of file +pub fn load_public(_: &Lua, base64_key: String) -> Result { + base64::decode(&base64_key).map_err(Error::from) + .and_then(|vec| sign::PublicKey::from_slice(&vec).ok_or(Error::InvalidKeys).map(|key| LuaPublicKey(key))) + .map_err(LuaError::external) +} \ No newline at end of file diff --git a/src/bindings/mod.rs b/src/bindings/mod.rs index bb2e582..6860f04 100644 --- a/src/bindings/mod.rs +++ b/src/bindings/mod.rs @@ -1,18 +1,9 @@ -pub mod tera; -pub mod yaml; -pub mod json; -pub mod uuid; -pub mod markdown; -pub mod client; +pub mod app; +pub mod archive; pub mod crypto; -pub mod stringset; -pub mod server; -pub mod time; -pub mod fs; -pub mod select; -pub mod git; -pub mod regex; -pub mod tantivy; -// Panics if not included (?) -//#[cfg(feature = "log_bindings")] -pub mod log; +pub mod string; +pub mod system; +pub mod text; +pub mod web; + + diff --git a/src/bindings/string/heck.rs b/src/bindings/string/heck.rs new file mode 100644 index 0000000..9342bc2 --- /dev/null +++ b/src/bindings/string/heck.rs @@ -0,0 +1,106 @@ +use rlua::prelude::*; +use heck::*; + +pub fn init(lua: &Lua) -> ::Result<()> { + + let module = lua.create_table()?; + + module.set("to_camel_case", lua.create_function(|_, text: String| { + Ok(text.to_camel_case()) + })?)?; + + module.set("to_kebab_case", lua.create_function(|_, text: String| { + Ok(text.to_kebab_case()) + })?)?; + + module.set("to_mixed_case", lua.create_function(|_, text: String| { + Ok(text.to_mixed_case()) + })?)?; + + module.set("to_shouty_snake_case", lua.create_function(|_, text: String| { + Ok(text.to_shouty_snake_case()) + })?)?; + + module.set("to_snake_case", lua.create_function(|_, text: String| { + Ok(text.to_snake_case()) + })?)?; + + module.set("to_title_case", lua.create_function(|_, text: String| { + Ok(text.to_title_case()) + })?)?; + + lua.globals().set("heck", module)?; + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn lua_heck_cambel () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "We are not in the least afraid of ruins" + assert(heck.to_camel_case(val) == "WeAreNotInTheLeastAfraidOfRuins") + "#, None).unwrap(); + } + + #[test] + fn lua_heck_kebab () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "We are going to inherit the earth" + assert(heck.to_kebab_case(val) == "we-are-going-to-inherit-the-earth") + "#, None).unwrap(); + } + + #[test] + fn lua_heck_mixed () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "It is we who built these palaces and cities" + assert(heck.to_mixed_case(val) == "itIsWeWhoBuiltThesePalacesAndCities") + "#, None).unwrap(); + } + + #[test] + fn lua_heck_shouty() { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "That world is growing in this minute" + assert(heck.to_shouty_snake_case(val) == "THAT_WORLD_IS_GROWING_IN_THIS_MINUTE") + "#, None).unwrap(); + } + + #[test] + fn lua_heck_snake () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "We carry a new world here, in our hearts" + assert(heck.to_snake_case(val) == "we_carry_a_new_world_here_in_our_hearts") + "#, None).unwrap(); + } + + #[test] + fn lua_heck_title () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local val = "We have always lived in slums and holes in the wall" + assert(heck.to_title_case(val) == "We Have Always Lived In Slums And Holes In The Wall") + "#, None).unwrap(); + } +} \ No newline at end of file diff --git a/src/bindings/string/mime.rs b/src/bindings/string/mime.rs new file mode 100644 index 0000000..40b653b --- /dev/null +++ b/src/bindings/string/mime.rs @@ -0,0 +1,44 @@ +use rlua::prelude::*; +use mime_guess; + +pub fn init(lua: &Lua) -> ::Result<()> { + let module = lua.create_table()?; + module.set("get_mime_type", lua.create_function(|_, ext: String| { + Ok(mime_guess::get_mime_type(&ext).to_string()) + })?)?; + + module.set("guess_mime_type", lua.create_function(|_, path: String| { + Ok(mime_guess::guess_mime_type(&path).to_string()) + })?)?; + + lua.globals().set("mime", module)?; + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn lua_mime_get_type () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local mime = mime.get_mime_type("gif") + assert(mime == "image/gif") + "#, None).unwrap(); + } + + #[test] + fn lua_mime_guess_type () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local mime = mime.guess_mime_type("file.txt") + assert(mime == "text/plain") + "#, None).unwrap(); + } +} \ No newline at end of file diff --git a/src/bindings/string/mod.rs b/src/bindings/string/mod.rs new file mode 100644 index 0000000..e14d2c5 --- /dev/null +++ b/src/bindings/string/mod.rs @@ -0,0 +1,17 @@ +pub mod heck; +pub mod mime; +pub mod regex; +pub mod stringset; +pub mod uuid; + +use rlua::prelude::*; + +pub fn init(lua: &Lua) -> ::Result<()> { + heck::init(&lua)?; + mime::init(&lua)?; + regex::init(&lua)?; + stringset::init(&lua)?; + uuid::init(&lua)?; + + Ok(()) +} \ No newline at end of file diff --git a/src/bindings/regex.rs b/src/bindings/string/regex.rs similarity index 61% rename from src/bindings/regex.rs rename to src/bindings/string/regex.rs index c30d2e9..20b6440 100644 --- a/src/bindings/regex.rs +++ b/src/bindings/string/regex.rs @@ -1,7 +1,7 @@ use rlua::prelude::*; use regex; -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let module = lua.create_table()?; module.set("match", lua.create_function(|_, (expr, val): (String, String)| { @@ -14,6 +14,15 @@ pub fn init(lua: &Lua) -> Result<(), LuaError> { Ok(re.replace_all(&val, patt.as_str()).into_owned()) })?)?; + module.set("captures", lua.create_function(|_, (expr, val): (String, String)| { + let re = regex::Regex::new(&expr).map_err(LuaError::external)?; + + Ok(re.captures(&val).and_then(|v| { + Some(v.iter().filter_map(|s| s).map(|s| s.as_str().to_string()).collect::>()) + })) + + })?)?; + lua.globals().set("regex", module)?; Ok(()) @@ -50,4 +59,21 @@ mod tests { assert(result == true) "#, None).unwrap(); } + + #[test] + fn lua_regex_captures () { + let lua = Lua::new(); + init(&lua).unwrap(); + + lua.exec::<_, ()>(r#" + local expr = [['([^']+)'\s+\((\d{4})\)]] + local val = "Not my favorite movie: 'Citizen Kane' (1941)" + local result = regex.captures(expr, val) + + assert(result ~= nil) + assert(result[1] == "'Citizen Kane' (1941)") + assert(result[2] == "Citizen Kane") + assert(result[3] == "1941") + "#, None).unwrap(); + } } \ No newline at end of file diff --git a/src/bindings/stringset.rs b/src/bindings/string/stringset.rs similarity index 98% rename from src/bindings/stringset.rs rename to src/bindings/string/stringset.rs index d9aae01..af005f6 100644 --- a/src/bindings/stringset.rs +++ b/src/bindings/string/stringset.rs @@ -75,7 +75,7 @@ impl UserData for StringSet { Ok(StringSet(this.0.clone())) }); - methods.add_method("into_table", |lua, this, _: ()| { + methods.add_method("to_table", |lua, this, _: ()| { let table = lua.create_sequence_from(this.0.iter().cloned())?; Ok(table) }); @@ -196,7 +196,7 @@ mod tests { d:clear() assert(d:is_empty()) - local t = a:union(b):into_table() + local t = a:union(b):to_table() for i, v in ipairs(t) do print(i, v) end @@ -223,4 +223,4 @@ mod tests { symmetric(a, b) "#, None).unwrap(); } -} \ No newline at end of file +} diff --git a/src/bindings/uuid.rs b/src/bindings/string/uuid.rs similarity index 90% rename from src/bindings/uuid.rs rename to src/bindings/string/uuid.rs index 6e8fe19..36a1ca5 100644 --- a/src/bindings/uuid.rs +++ b/src/bindings/string/uuid.rs @@ -1,7 +1,7 @@ use rlua::prelude::*; use uuid::Uuid; -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let generate_uuid_v4 = lua.create_function(|_, _: ()| { let uuid = Uuid::new_v4().to_string(); diff --git a/src/bindings/fs.rs b/src/bindings/system/fs.rs similarity index 89% rename from src/bindings/fs.rs rename to src/bindings/system/fs.rs index c69e351..dfbcf43 100644 --- a/src/bindings/fs.rs +++ b/src/bindings/system/fs.rs @@ -3,11 +3,18 @@ use std::sync::Arc; use std::fs; use serde_json; use rlua_serde; - -pub fn init(lua: &Lua) -> Result<(), LuaError> { + +pub fn init(lua: &Lua) -> ::Result<()> { let module = lua.create_table()?; + module.set("canonicalize", lua.create_function( |lua, path: String| { + match fs::canonicalize(path).map_err(|err| LuaError::external(err)) { + Ok(i) => Ok(Some(lua.create_string(&i.to_str().unwrap()).unwrap())), + _ => Ok(None) + } + })? )?; + module.set("create_dir", lua.create_function( |_, (path, all): (String, Option)| { let result = match all { Some(true) => fs::create_dir_all(path), @@ -112,6 +119,9 @@ mod tests { local md = fs.metadata(entry) print(md.type .. ": " .. entry) end + + assert(fs.canonicalize("."), "expected path") + assert(fs.canonicalize("/no/such/path/here") == nil, "expected nil") "#, None).unwrap(); } } \ No newline at end of file diff --git a/src/bindings/system/mod.rs b/src/bindings/system/mod.rs new file mode 100644 index 0000000..dbaf6e4 --- /dev/null +++ b/src/bindings/system/mod.rs @@ -0,0 +1,11 @@ +pub mod fs; +pub mod time; + +use rlua::prelude::*; + +pub fn init(lua: &Lua) -> ::Result<()> { + fs::init(&lua)?; + time::init(&lua)?; + + Ok(()) +} \ No newline at end of file diff --git a/src/bindings/time.rs b/src/bindings/system/time.rs similarity index 97% rename from src/bindings/time.rs rename to src/bindings/system/time.rs index 57b5369..e6cf6e7 100644 --- a/src/bindings/time.rs +++ b/src/bindings/system/time.rs @@ -25,7 +25,7 @@ impl UserData for LuaTime { } } -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let module = lua.create_table()?; module.set("now", lua.create_function( |_, _: ()| { diff --git a/src/bindings/tera.rs b/src/bindings/tera.rs deleted file mode 100644 index 414492d..0000000 --- a/src/bindings/tera.rs +++ /dev/null @@ -1,51 +0,0 @@ -use std::collections::HashMap; -use std::sync::Arc; -use rlua::prelude::*; -use rlua_serde; -use tera::{Tera, Value as JsonValue, Context as TeraContext}; - -fn get_tera_context_from_table(table: &HashMap) -> Result { - let mut context = TeraContext::new(); - - for (key, value) in table.iter() { - match value { - LuaValue::Integer(num) => context.insert(key, num), - LuaValue::Number(num) => context.insert(key, num), - LuaValue::String(string) => context.insert(key, string.to_str()?), - LuaValue::Boolean(boolean) => context.insert(key, boolean), - value @ LuaValue::Table(_) => { - let value: JsonValue = rlua_serde::from_value(value.clone()) - .map_err(|err| LuaError::external(err))?; - context.insert(key, &value); - }, - LuaValue::Nil => context.insert(key, &()), - value @ _ => unimplemented!("Value {:?} is not implemented as a template parameter", value), - } - } - - Ok(context) -} - -pub fn init(lua: &Lua, tera: Arc) -> Result<(), LuaError> { - let render_template = lua.create_function(move |_, (path, params): (String, Option>)| { - let text = match params { - Some(params) => { - let mut context = get_tera_context_from_table(¶ms)?; - tera.render(&path, &context) - }, - None => { - tera.render(&path, &()) - }, - }.map_err(|err| { - // can't convert error_chain to failure directly - LuaError::external(format_err!("{}", err.to_string())) - })?; - - Ok(text) - })?; - - let globals = lua.globals(); - globals.set("render", render_template)?; - - Ok(()) -} diff --git a/src/bindings/json.rs b/src/bindings/text/json.rs similarity index 93% rename from src/bindings/json.rs rename to src/bindings/text/json.rs index 835e00b..e14c425 100644 --- a/src/bindings/json.rs +++ b/src/bindings/text/json.rs @@ -2,7 +2,7 @@ use rlua::prelude::*; use serde_json; use rlua_serde; -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { // Decode string to a table let module = lua.create_table()?; module.set("to_table", lua.create_function(|lua, text: String| { diff --git a/src/bindings/text/mod.rs b/src/bindings/text/mod.rs new file mode 100644 index 0000000..6c5af97 --- /dev/null +++ b/src/bindings/text/mod.rs @@ -0,0 +1,15 @@ +pub mod json; +pub mod scl; +pub mod select; +pub mod yaml; + +use rlua::prelude::*; + +pub fn init(lua: &Lua) -> ::Result<()> { + json::init(&lua)?; + scl::init(&lua)?; + select::init(&lua)?; + yaml::init(&lua)?; + + Ok(()) +} \ No newline at end of file diff --git a/src/bindings/text/scl.rs b/src/bindings/text/scl.rs new file mode 100644 index 0000000..573fa4c --- /dev/null +++ b/src/bindings/text/scl.rs @@ -0,0 +1,262 @@ +use rlua::{ToLua, FromLua, prelude::LuaError}; +use error::Error; + +fn to_rlua_value(lua: &rlua::Lua, val: scl::Value) -> rlua::Value { + match val { + scl::Value::Boolean(b) => b.to_lua(lua).unwrap(), + scl::Value::Integer(i) => i.to_lua(lua).unwrap(), + scl::Value::Float(f) => f.to_lua(lua).unwrap(), + scl::Value::String(s) => s.to_lua(lua).unwrap(), + scl::Value::Dict(d) => d + .into_iter() + .map(|(k, v)| (k, to_rlua_value(lua, v))) + .collect::>() + .to_lua(lua) + .unwrap(), + scl::Value::Array(a) => a + .into_iter() + .map(|v| to_rlua_value(lua, v)) + .collect::>() + .to_lua(lua) + .unwrap(), + scl::Value::Date(d) => { + let mut map = std::collections::BTreeMap::new(); + map.insert("day", d.day as u16); + map.insert("month", d.month as u16); + map.insert("year", d.year); + map.to_lua(lua).unwrap() + } + } +} + +fn to_date(lua: &rlua::Lua, t: &rlua::Table) -> ::Result { + if t.len()? == 3 + || t.contains_key("day")? + || t.contains_key("month")? + || t.contains_key("year")? + { + let day = <_>::from_lua(t.get("day")?, lua)?; + let month = <_>::from_lua(t.get("month")?, lua)?; + let year = <_>::from_lua(t.get("year")?, lua)?; + Ok(scl::Date { day, month, year }) + } else { + Err(Error::from(rlua::Error::external(failure::err_msg("not a date")))) + } +} + +fn to_scl_value(lua: &rlua::Lua, val: rlua::Value) -> scl::Value { + match &val { + rlua::Value::Boolean(_) => scl::Value::Boolean(<_>::from_lua(val, lua).unwrap()), + rlua::Value::Integer(_) => scl::Value::Integer(<_>::from_lua(val, lua).unwrap()), + rlua::Value::Number(_) => scl::Value::Float(<_>::from_lua(val, lua).unwrap()), + rlua::Value::String(_) => scl::Value::String(<_>::from_lua(val, lua).unwrap()), + rlua::Value::Table(_) => { + let t = if let rlua::Value::Table(t) = val { + t + } else { + unreachable!(); + }; + if t.contains_key(1).unwrap() { + let len = t.len().unwrap() as usize; + let mut vec = Vec::new(); + for i in 1..=len { + vec.push(to_scl_value(lua, t.get(i).unwrap())) + } + scl::Value::Array(vec) + } else if let Ok(date) = to_date(lua, &t) { + scl::Value::Date(date) + } else { + let mut dict = std::collections::BTreeMap::new(); + for pair in t.pairs::() { + let (k, v) = pair.unwrap(); + dict.insert(k, to_scl_value(lua, v)); + } + scl::Value::Dict(dict) + } + } + _ => panic!("Not supported"), + } +} + +fn escape(s: String) -> String { + if s.contains(r##"""""##) { + // escape \n and " + // return "\"".to_owned() + &s.replace('"', r##"\""##).replace('\n', "\\n") + "\""; + // + // this doesn't work, see: + // https://github.com/Keats/scl/issues/10 + // + // Because it doesn't work, just panic instead + panic!("Don't use a string containing \"\"\""); + } else { + // use multiline string + r##"""""##.to_owned() + &s + r##"""""## + } +} + +fn scl_decode(d: scl::Dict) -> String { + let mut s = String::new(); + for (k, v) in d { + s += &k; + s += "="; + s += &to_string(v); + s += "\n"; + } + s +} + +fn to_string(val: scl::Value) -> String { + match val { + scl::Value::Boolean(b) => if b { "true" } else { "false" }.to_owned(), + scl::Value::Integer(i) => i.to_string(), + scl::Value::Float(f) => f.to_string(), + scl::Value::String(s) => escape(s), + scl::Value::Date(d) => format!("{:04}-{:02}-{:02}", d.year, d.month, d.day), + scl::Value::Array(a) => { + let mut s = "[".to_owned(); + for v in a { + s += &to_string(v); + s += ","; + } + s += "]"; + s + } + scl::Value::Dict(d) => { + let mut s = "{".to_owned(); + for (k, v) in d { + s += &k; + s += "="; + s += &to_string(v); + s += ","; + } + s += "}"; + s + } + } +} + +pub fn init(lua: &rlua::Lua) -> ::Result<()> { + // Decode string to a table + let module = lua.create_table()?; + module.set( + "to_table", + lua.create_function(|lua, text: String| { + scl::parse_str(&text) + .map(|dict| to_rlua_value(lua, scl::Value::Dict(dict))) + .map_err(|e| LuaError::external(Error::from(e))) + })?, + )?; + + // Encode table to a string + module.set( + "from_table", + lua.create_function(|lua, table: rlua::Table| { + let val = to_scl_value(lua, rlua::Value::Table(table)); + if let scl::Value::Dict(d) = val { + Ok(scl_decode(d)) + } else { + unreachable!(); + } + })?, + )?; + + lua.globals().set("scl", module)?; + + Ok(()) +} + +#[cfg(test)] +mod tests { + #[test] + fn test_decode() { + static TEXT: &str = r##" +owner = { + name = "Vincent Prouillet", + dob = 1979-05-27, # first-class date type +} + +database = { + ports = [ 8001, 8001, 8002 ], + connection_max = 5000, + enabled = true, +} + +servers = { + max_upload_size = 10MB, # first class byte size + alpha = { + ip = "10.0.0.1", + dc = "eqdc10", + }, +} + +clients = { + data = [ + ["gamma"], + [1], + ], +} + "##; + let lua = rlua::Lua::new(); + super::init(&lua).unwrap(); + lua.globals().set("TEXT", TEXT).unwrap(); + lua.exec::<_, rlua::Value>( + r##" + local x = scl.to_table(TEXT) + assert(x.owner.name == "Vincent Prouillet") + assert(x.owner.dob.year == 1979) + assert(x.owner.dob.month == 5) + assert(x.owner.dob.day == 27) + assert(#x.database.ports == 3) + assert(x.database.ports[1] == 8001) + assert(x.database.ports[2] == 8001) + assert(x.database.ports[3] == 8002) + assert(x.database.connection_max == 5000) + assert(x.database.enabled == true) + assert(x.servers.max_upload_size == 10000000) + assert(x.servers.alpha.ip == "10.0.0.1") + assert(x.servers.alpha.dc == "eqdc10") + assert(x.clients.data[1][1] == "gamma") + assert(x.clients.data[2][1] == 1) + "##, + None, + ) + .unwrap(); + } + + #[test] + fn test_encode() { + let lua = rlua::Lua::new(); + super::init(&lua).unwrap(); + lua.exec::<_, rlua::Value>( + r##" + local x = { + x=0, + y=true, + z="a\nb", + a=1.2, + b={c=1}, + d={day=1,month=2,year=2018}, + e={2, 3, 4}, + } + local s = scl.from_table(x) + print(s) + local y = scl.to_table(s) + -- don't mess with floating point number + -- assert(y.a == 1.2) + assert(y.b.c == 1) + assert(y.d.year == 2018) + assert(y.d.month == 2) + assert(y.d.day == 1) + assert(y.e[1] == 2) + assert(y.e[2] == 3) + assert(y.e[3] == 4) + assert(#y.e == 3) + assert(y.x == 0) + assert(y.y == true) + assert(y.z == "a\nb") + "##, + None, + ) + .unwrap(); + } +} diff --git a/src/bindings/select.rs b/src/bindings/text/select.rs similarity index 99% rename from src/bindings/select.rs rename to src/bindings/text/select.rs index c6f7a50..c84f131 100644 --- a/src/bindings/select.rs +++ b/src/bindings/text/select.rs @@ -1,5 +1,4 @@ use rlua; -use rlua::prelude::*; use rlua::{Lua, UserData, UserDataMethods}; use select; use select::node::Raw; @@ -211,7 +210,7 @@ impl UserData for Document { } } -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> ::Result<()> { let select = lua.create_table()?; // New Document from string diff --git a/src/bindings/yaml.rs b/src/bindings/text/yaml.rs similarity index 93% rename from src/bindings/yaml.rs rename to src/bindings/text/yaml.rs index a2c1c1d..5a2b9de 100644 --- a/src/bindings/yaml.rs +++ b/src/bindings/text/yaml.rs @@ -1,8 +1,9 @@ use rlua::prelude::*; use serde_yaml; use rlua_serde; +use Result; -pub fn init(lua: &Lua) -> Result<(), LuaError> { +pub fn init(lua: &Lua) -> Result<()> { // Decode string to a table let module = lua.create_table()?; module.set("to_table", lua.create_function(|lua, text: String| { diff --git a/src/bindings/client.rs b/src/bindings/web/client.rs similarity index 94% rename from src/bindings/client.rs rename to src/bindings/web/client.rs index 4d47253..e119c3c 100644 --- a/src/bindings/client.rs +++ b/src/bindings/web/client.rs @@ -12,7 +12,7 @@ fn map_actix_err(err: actix_web::Error) -> LuaError { LuaError::external(format_err!("actix_web error: {}", &err)) } -fn parse_response(lua: &Lua, res: ClientResponse) -> LuaResult { +fn parse_response(lua: &Lua, res: ClientResponse) -> Result { let body_data = res.body() .wait() .map_err(|err| { @@ -59,7 +59,7 @@ fn parse_response(lua: &Lua, res: ClientResponse) -> LuaResult { } /// For POST and PUT requests. -fn set_body(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> LuaResult { +fn set_body(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> Result { match value { LuaValue::Table(_) => { let json_value: JsonValue = rlua_serde::from_value(value) @@ -72,9 +72,9 @@ fn set_body(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> LuaR }, _ => Err(LuaError::external(format_err!("Unsupported POST body: {:?}", value))), } -} +} -fn set_headers(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> LuaResult<()> { +fn set_headers(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> Result<(), LuaError> { if let LuaValue::Table(headers) = value.clone() { for pair in headers.pairs() { let (key, value): (String, LuaValue) = pair?; @@ -93,7 +93,7 @@ fn set_headers(value: LuaValue, request_builder: &mut ClientRequestBuilder) -> L Ok(()) } -fn send_lua_request <'a> (lua: &'a Lua, val: LuaValue<'a>) -> LuaResult> { +fn send_lua_request <'a> (lua: &'a Lua, val: LuaValue<'a>) -> Result, LuaError> { let mut builder = ClientRequest::build(); diff --git a/src/bindings/web/mod.rs b/src/bindings/web/mod.rs new file mode 100644 index 0000000..ab8fa8e --- /dev/null +++ b/src/bindings/web/mod.rs @@ -0,0 +1,11 @@ +pub mod client; +pub mod server; + +use rlua::prelude::*; +use Result; + +pub fn init(lua: &Lua) -> Result<()> { + client::init(&lua)?; + + Ok(()) +} \ No newline at end of file diff --git a/src/bindings/server.rs b/src/bindings/web/server.rs similarity index 93% rename from src/bindings/server.rs rename to src/bindings/web/server.rs index c259e93..b454b9c 100644 --- a/src/bindings/server.rs +++ b/src/bindings/web/server.rs @@ -8,7 +8,7 @@ use futures::Future; use serde_urlencoded; use serde_json; -use ::app_state::AppState; +use AppState; /// Creates a lua table from a HttpRequest fn extract_table_from_request(request: &HttpRequest, body: String) -> HashMap { @@ -26,8 +26,8 @@ fn extract_table_from_request(request: &HttpRequest, body: String) -> let host = request.uri().host() .map(|host| LuaMessage::String(host.to_owned())) .unwrap_or(LuaMessage::Nil); - let port = request.uri().port() - .map(|port| LuaMessage::Number(port as f64)) + let port = request.uri().port_part() + .map(|port| LuaMessage::Number(port.as_u16() as f64)) .unwrap_or(LuaMessage::Nil); let fragment = request.uri().to_string() .rsplit("#") @@ -107,9 +107,15 @@ fn extract_table_from_request(request: &HttpRequest, body: String) -> pub fn handler((request, body): (HttpRequest, String)) -> FutureResponse { let table = extract_table_from_request(&request, body); - request.state() - .lua - .send(LuaMessage::Table(table)) + let app_state = request.state(); + + let own_addr = if app_state.lua.is_none() { + Some(app_state.create_addr()) + } else { None }; + + let addr = own_addr.as_ref().unwrap_or_else(|| { app_state.lua.as_ref().unwrap() }); + + addr.send(LuaMessage::Table(table)) .from_err() .and_then(|res| match res { LuaMessage::String(s) => Ok(HttpResponse::Ok().body(s)), diff --git a/src/conf.rs b/src/conf.rs new file mode 100644 index 0000000..35c82b0 --- /dev/null +++ b/src/conf.rs @@ -0,0 +1,58 @@ + +use scl::Value as SclValue; +use serde_json::{self, Value}; +use serde::de::DeserializeOwned; +use std::path::Path; + +pub struct Conf; + +impl Conf { + pub fn load_file(path: P) -> T + where P: AsRef, + T: DeserializeOwned + { + let config = match scl::parse_file(path) { + Ok(c) => c, + Err(e) => { + println!("Error loading config file: {}", e); + ::std::process::exit(0); + } + }; + + match serde_json::from_value(Conf::from(SclValue::Dict(config))) { + Ok(j) => j, + Err(e) => { + println!("Error occurred while loading config file: {}", e); + ::std::process::exit(0); + } + } + } + + fn from(val: SclValue) -> serde_json::Value { + match val { + SclValue::Boolean(b) => Value::Bool(b), + SclValue::Integer(i) => serde_json::to_value(i).unwrap_or_default(), + SclValue::Float(f) => serde_json::to_value(f).unwrap_or_default(), + SclValue::String(s) => Value::String(s), + SclValue::Dict(d) => { + let mut map = serde_json::Map::new(); + for (k, v) in d.into_iter() { + map.insert(k,Conf::from(v)).unwrap_or_default(); + } + Value::Object(map) + }, + SclValue::Array(a) => Value::Array(a + .into_iter() + .map(|v| Conf::from(v)) + .collect::>()), + SclValue::Date(d) => { + let mut map = serde_json::Map::new(); + map.insert(String::from("day"), serde_json::to_value(d.day).unwrap_or_default()); + map.insert(String::from("month"), serde_json::to_value(d.month).unwrap_or_default()); + map.insert(String::from("year"), serde_json::to_value(d.year).unwrap_or_default()); + Value::Object(map) + } + } + + } +} \ No newline at end of file diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..edfe37e --- /dev/null +++ b/src/error.rs @@ -0,0 +1,110 @@ +use std::{io, string}; +use serde_json; +use serde_yaml; +use rlua_serde; +use rlua; +use git2; +use base64; +use scl; + +//Due to number of number of crates that have different errors, we will handle them this way for the time being which would just create a base for +//handling errors properly. The errors will be bound to change in the near future + +#[derive(Fail, Debug)] +pub enum Error { + #[fail(display = "Failed to initialize libsodium.")] + SodiumInitFailure, + #[fail(display = "Failed to load nonce, data is invalid.")] + InvalidNonce, + #[fail(display = "Object passed is in not Nonce.")] + InvalidNonceObject, + #[fail(display = "Failed to decrypt.")] + FailedToDecrypt, + #[fail(display = "Failed to verify signed message.")] + VerifyError, + #[fail(display = "Failed to load key, data is invalid.")] + InvalidKeys, + #[fail(display = "Failed verify, signature is invalid.")] + InvalidSignature, + #[fail(display = "{}", _0)] + LuaError(rlua::Error), + #[fail(display = "{}", _0)] + IoError(io::Error), + #[fail(display = "{}", _0)] + JsonError(serde_json::Error), + #[fail(display = "{}", _0)] + YamlError(serde_yaml::Error), + #[fail(display = "{}", _0)] + LuaSerdeError(rlua_serde::error::Error), + #[fail(display = "{}", _0)] + GitError(git2::Error), + #[fail(display = "{}", _0)] + Base64Error(base64::DecodeError), + #[fail(display = "{}", _0)] + StringUtf8Error(string::FromUtf8Error), + #[fail(display = "{}", _0)] + SclError(scl::Error), + //TODO: This is only temp as a place holder for anything making use of a string for error messages + #[fail(display = "{}", _0)] + Other(String), +} + +impl From for Error { + fn from(err: rlua::prelude::LuaError) -> Error { + Error::LuaError(err) + } +} + +impl From for Error { + fn from(err: io::Error) -> Error { + Error::IoError(err) + } +} + +impl From for Error { + fn from(err: serde_json::Error) -> Error { + Error::JsonError(err) + } +} + +impl From for Error { + fn from(err: serde_yaml::Error) -> Error { + Error::YamlError(err) + } +} + +impl From for Error { + fn from(err: rlua_serde::error::Error) -> Error { + Error::LuaSerdeError(err) + } +} + +impl From for Error { + fn from(err: git2::Error) -> Error { + Error::GitError(err) + } +} + +impl From for Error { + fn from(err: base64::DecodeError) -> Error { + Error::Base64Error(err) + } +} + +impl From for Error { + fn from(err: string::FromUtf8Error) -> Error { + Error::StringUtf8Error(err) + } +} + +impl From for Error { + fn from(err: scl::Error) -> Error { + Error::SclError(err) + } +} + +impl From for Error { + fn from(err: String) -> Error { + Error::Other(err) + } +} \ No newline at end of file diff --git a/src/handlers/bootstrap.lua b/src/handlers/bootstrap.lua new file mode 100644 index 0000000..8478465 --- /dev/null +++ b/src/handlers/bootstrap.lua @@ -0,0 +1,9 @@ +return xpcall(function () + local fn, err = loadfile(torchbear.bootstrap) + if not fn then error(err) end + fn() +end, function (msg) + msg = tostring(msg) + local trace = debug.traceback(msg, 3) + log.error(trace) +end) \ No newline at end of file diff --git a/src/handlers/bridge.lua b/src/handlers/bridge.lua new file mode 100644 index 0000000..4eabbd3 --- /dev/null +++ b/src/handlers/bridge.lua @@ -0,0 +1,19 @@ +xpcall(function () + local init_f, err = loadfile(torchbear.init_filename) + if not init_f then error(err) end + + local handler = init_f() + + if handler then + torchbear.handler = handler + end + +end, function (msg) + msg = tostring(msg) + local trace = debug.traceback(msg, 3) + log.error(trace) +end) + +if not torchbear.handler then + log.debug("No handler specified") +end diff --git a/src/handlers/debug.lua b/src/handlers/debug.lua new file mode 100644 index 0000000..eebee46 --- /dev/null +++ b/src/handlers/debug.lua @@ -0,0 +1,19 @@ +-- The debug library is unpredictable in some cases, +-- so we only include the safe parts. + +-- Modify the table itself instead of setting the +-- global field, because debug can also be required. + +local to_remove = {} + +for k, _ in pairs(debug) do + if k ~= "traceback" + and k ~= "getinfo" + then + table.insert(to_remove, k) + end +end + +for _, k in ipairs(to_remove) do + debug[k] = nil +end \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 7a64961..2b346a0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,6 @@ extern crate actix_lua; extern crate actix_web; extern crate env_logger; extern crate futures; -#[macro_use] extern crate tera; extern crate rlua; #[macro_use] @@ -20,7 +19,6 @@ extern crate uuid; extern crate comrak; extern crate rust_sodium; extern crate base64; -extern crate config; extern crate chrono; #[macro_use] extern crate log; @@ -32,111 +30,118 @@ extern crate select; extern crate serde_derive; extern crate git2; extern crate regex; +extern crate openssl; +extern crate mime_guess; +extern crate heck; +extern crate zip; +extern crate tar; +extern crate xz2; +extern crate diff_rs; +extern crate blake2; +extern crate patch_rs; + +#[cfg(feature = "tantivy_bindings")] extern crate tantivy; +extern crate scl; + +pub mod bindings; +pub mod logger; +pub mod conf; +pub mod error; -use std::sync::Arc; use actix::prelude::*; use actix_lua::LuaActorBuilder; use actix_web::{server as actix_server, App}; -use tera::{Tera}; use rlua::prelude::*; -use std::collections::HashMap; use std::path::Path; - -pub mod bindings; -pub mod logger; - -mod app_state { - pub struct AppState { - pub lua: ::actix::Addr<::actix_lua::LuaActor>, - pub tera: ::std::sync::Arc<::tera::Tera>, - } +use std::path::PathBuf; +use std::result; +use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod}; +use serde_json::Value; +use error::Error; + +type LuaAddr = ::actix::Addr<::actix_lua::LuaActor>; +pub type Result = result::Result; + +#[derive(Clone)] +pub struct AppState { + pub lua: Option, + pub init_path: PathBuf, + pub init_args: Option>, + pub package_path: Option, + pub settings: Value, } -fn create_vm(tera: Arc, init_path: &str, settings: HashMap) -> Result { - let lua = unsafe { Lua::new_with_debug() }; - - lua.exec::<_, ()>(r#" - -- The debug library is unpredictable in some cases, - -- so we only include the safe parts. - - -- Modify the table itself instead of setting the - -- global field, because debug can also be required. - - local to_remove = {} - - for k, _ in pairs(debug) do - if k ~= "traceback" - and k ~= "getinfo" - then - table.insert(to_remove, k) - end - end - - for _, k in ipairs(to_remove) do - debug[k] = nil - end - "#, None)?; - - bindings::tera::init(&lua, tera)?; - bindings::yaml::init(&lua)?; - bindings::json::init(&lua)?; - bindings::uuid::init(&lua)?; - bindings::markdown::init(&lua)?; - bindings::client::init(&lua)?; - bindings::crypto::init(&lua)?; - bindings::stringset::init(&lua)?; - bindings::time::init(&lua)?; - bindings::fs::init(&lua)?; - bindings::select::init(&lua)?; - bindings::git::init(&lua)?; - bindings::regex::init(&lua)?; - bindings::tantivy::init(&lua)?; - - // torchbear crashes if there's no log binding - //if cfg!(feature = "log_bindings") { - bindings::log::init(&lua)?; - //} - - // torchbear global table - { - let tb_table = lua.create_table()?; - tb_table.set("settings", settings)?; - tb_table.set("init_filename", init_path)?; - lua.globals().set("torchbear", tb_table)?; - } - - // Lua Bridge - lua.exec::<_, ()>(r#" - xpcall(function () +impl AppState { + pub fn create_vm (&self) -> result::Result { + let lua = unsafe { Lua::new_with_debug() }; + + lua.exec::<_, ()>(include_str!("handlers/debug.lua"), None)?; + + bindings::app::init(&lua).map_err(LuaError::external)?; + bindings::archive::init(&lua).map_err(LuaError::external)?; + bindings::crypto::init(&lua).map_err(LuaError::external)?; + bindings::string::init(&lua).map_err(LuaError::external)?; + bindings::system::init(&lua).map_err(LuaError::external)?; + bindings::text::init(&lua).map_err(LuaError::external)?; + bindings::web::init(&lua).map_err(LuaError::external)?; + + // torchbear global table + { + let tb_table = lua.create_table()?; + tb_table.set("settings", rlua_serde::to_value(&lua, &self.settings).map_err(LuaError::external)?)?; + tb_table.set("init_filename", self.init_path.to_str())?; + tb_table.set("version", env!("CARGO_PKG_VERSION"))?; + lua.globals().set("torchbear", tb_table)?; + } - local init_f, err = loadfile(torchbear.init_filename) - if not init_f then error(err) end + // Lua package.path + match self.package_path { + Some(ref package_path) => { + let package: LuaTable = lua.globals().get("package")?; + let mut path: String = package.get("path")?; + path.push_str(";"); + path.push_str(package_path); + package.set("path", path)?; + }, + None => () + } - local handler = init_f() + // Lua arg + match self.init_args { + Some(ref init_args) => lua.globals().set("arg", lua.create_sequence_from(init_args.clone())?)?, + None => () + } - if handler then - torchbear.handler = handler - end - - end, function (msg) - msg = tostring(msg) - local trace = debug.traceback(msg, 3) - log.error(trace) - end) + // Lua Bridge + lua.exec::<_, ()>(include_str!("handlers/bridge.lua"), None)?; - if not torchbear.handler then - log.error("No handler specified") - end - "#, None)?; + Ok(lua) + } - Ok(lua) + pub fn create_addr (&self) -> LuaAddr { + let vm = self.create_vm().unwrap(); + Arbiter::start(move |_| { + let lua_actor = LuaActorBuilder::new() + .on_handle_with_lua(include_str!("handlers/web_server.lua")) + .build_with_vm(vm) + .unwrap(); + lua_actor + }) + } } pub struct ApplicationBuilder { log_settings: logger::Settings, } +#[derive(Debug, Default, Deserialize)] +pub struct SettingConfig { + general: Option, + #[serde(rename = "web-server")] + web_server: Option, +} + impl ApplicationBuilder { pub fn new () -> Self { Self { @@ -155,60 +160,141 @@ impl ApplicationBuilder { self.log_settings.everything = b; self } - pub fn start (&mut self) { - - let mut settings = config::Config::new(); - - let setting_file = Path::new("Settings.toml"); - if setting_file.exists() { - match settings.merge(config::File::with_name("Settings.toml")) { - Err(err) => { - println!("Error opening Settings.toml: {}", err); - std::process::exit(1); - }, - _ => () - }; - settings.merge(config::Environment::with_prefix("torchbear")).unwrap(); + pub fn start (&mut self, args: Option>) -> Result<()> { + + let mut init_path: Option = None; + let mut init_args: Option> = None; + let mut package_path: Option = None; + + match args { + // Interpreter + Some(args) => { + + init_path = Path::new(args.first().expect("Missing first argument.")) + .canonicalize() + .map_err(|e| { + println!("Error getting the absolute path: {}", e); + std::process::exit(1); + }) + .ok(); + + + init_args = Some(args.to_vec()); + + package_path = match &init_path { + Some(p) => p.parent().map(|p| { + let mut t = p.to_str().expect("Error getting the directory.").to_string(); + t.push_str("/?.lua"); t + }), + None => None + }; + }, + // Server + None => () } - let hashmap = if setting_file.exists() { - settings.try_into::>().unwrap() + let setting_file = Path::new("torchbear.scl"); + + let config = if setting_file.exists() { + conf::Conf::load_file(&setting_file) } else { - HashMap::new() + SettingConfig::default() }; + //let config = settings.try_into::().unwrap_or_default(); - fn get_or (map: &HashMap, key: &str, val: &str) -> String { - map.get(key).map(|s| s.to_string()).unwrap_or(String::from(val)) + fn get_or (map: &Value, key: &str, val: &str) -> String { + map.get(key).map(|s| String::from(s.as_str().unwrap_or(val)) ).unwrap_or(String::from(val)) } + + let general = config.general.unwrap_or_default(); - let templates_path = get_or(&hashmap, "templates_path", "templates/**/*"); - let host = get_or(&hashmap, "host", "0.0.0.0:3000"); - let init_path = get_or(&hashmap, "init", "init.lua"); - let log_path = get_or(&hashmap, "log_path", "log"); + let init_path = init_path.unwrap_or(Path::new(&get_or(&general, "init", "init.lua")).to_path_buf()); + let log_path = get_or(&general, "log_path", "log"); + if !init_path.exists() { + println!("Error: Specified init.lua not found. You may have not completed installing your app"); + std::process::exit(1); + } + logger::init(::std::path::Path::new(&log_path), self.log_settings.clone()); //log_panics::init(); let sys = actix::System::new("torchbear"); - let tera = Arc::new(compile_templates!(&templates_path)); - let vm = create_vm(tera.clone(), &init_path, hashmap).unwrap(); + let mut app_state = AppState { + lua: None, + init_path: init_path, + init_args: init_args, + package_path: package_path, + settings: general + }; - let addr = Arbiter::start(move |_| { - let lua_actor = LuaActorBuilder::new() - .on_handle_with_lua(include_str!("handlers/web_server.lua")) - .build_with_vm(vm) - .unwrap(); - lua_actor - }); + if let Some(web) = config.web_server { + + if let Some(Some(bootstrap)) = web.get("bootstrap_path").map(|s| { s.as_str() }) { + let vm = app_state.create_vm().unwrap(); + vm.globals().get::<_, LuaTable>("torchbear").unwrap().set("bootstrap", bootstrap).unwrap(); + + if !vm.exec::<_, bool>(include_str!("handlers/bootstrap.lua"), Some("bootstrap")).unwrap() + { std::process::exit(1); } + } - actix_server::new(move || { - App::with_state(app_state::AppState { lua: addr.clone(), tera: tera.clone() }) - .default_resource(|r| r.with(bindings::server::handler)) - }).bind(&host) - .unwrap() - .start(); + let single_actor = match web.get("single_actor").map(|s| { s.as_bool() }) { + None => false, + Some(Some(b)) => b, + _ => { + println!("Error: Setting web_server.single_actor must be a boolean value"); + std::process::exit(1); + }, + }; + + if single_actor { + app_state.lua = Some(app_state.create_addr()); + } + + log::debug!("web server section in settings, starting seting up web server"); + let host = get_or(&web, "address", "0.0.0.0"); + let port = get_or(&web, "port", "3000").parse().unwrap_or(3000); + + let some_ssl = match (web.get("tls_private"), web.get("tls_certificate")) { + (None, None) => None, + (Some(priv_path), Some(cert_path)) => { + let mut builder = SslAcceptor::mozilla_intermediate(SslMethod::tls()).unwrap(); + builder.set_private_key_file(priv_path.as_str().unwrap(), SslFiletype::PEM).unwrap(); + builder.set_certificate_chain_file(cert_path.as_str().unwrap()).unwrap(); + Some(builder) + }, + _ => { + println!("Error: SSL needs both tls_private and tls_certificate settings."); + std::process::exit(1); + } + }; + + let mut server = actix_server::new(move || { + App::with_state(app_state.clone()) + .default_resource(|r| r.with(bindings::web::server::handler)) + }); + + server = server.bind((host.as_str(), port))?; + log::debug!("web server listening on port {}:{}", &host, port); + + if let Some(ssl_builder) = some_ssl { + let host = get_or(&web, "tls_address", "0.0.0.0"); + let port = get_or(&web, "tls_port", "3001").parse().unwrap_or(3001); + server = server.bind_ssl((host.as_str(), port), ssl_builder)?; + log::debug!("tls server listening on port {}:{}", &host, port); + } + + server.start(); + + let _ = sys.run(); + } else { + // Temporary fix to run non webserver apps. Doesn't start the actor + // system, just runs a vanilla lua vm. + debug!("Torchbear app started"); + let _ = app_state.create_vm()?; + } - let _ = sys.run(); + Ok(()) } } diff --git a/src/logger.rs b/src/logger.rs index 493ab68..0dd4325 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -4,7 +4,7 @@ use std::path::Path; use std::fs::{File, create_dir, OpenOptions}; use std::fmt::Display; use colored::*; - +use {Error, Result}; pub use log::{Level, LevelFilter}; #[derive(Copy, Clone)] @@ -13,19 +13,15 @@ pub struct Settings { pub everything: bool, } -pub fn get_log_file (path: &Path) -> Result { +pub fn get_log_file (path: &Path) -> Result { let now = ::chrono::Local::now().format("%Y_%m_%d__%H_%M_%S"); if path.exists() { if !path.is_dir() { - return Err(format!("{:?} is not a directory", path)); + return Err(Error::from(format!("{:?} is not a directory", path))); } } else { - match create_dir(path) { - Err(e) => return Err( - format!("could not create directory {:?}: {}", path, e) - ), Ok(_) => {}, - } + create_dir(path).map_err(|e| Error::from(format!("could not create directory {:?}: {}", path, e)))?; } let mut path_buf = path.to_path_buf(); @@ -36,7 +32,7 @@ pub fn get_log_file (path: &Path) -> Result { .create(true) .write(true) .open(&path_buf) - .map_err(|e| format!("could not log to {:?}: {}", &path_buf, e)) + .map_err(|e| Error::from(format!("could not log to {:?}: {}", &path_buf, e))) } pub fn init (path: &Path, settings: Settings) { diff --git a/src/main.rs b/src/main.rs index 2756f9a..af92f46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,47 +1,67 @@ extern crate torchbear_lib; +#[macro_use] extern crate clap; extern crate log; use clap::{Arg, App as ClapApp}; +use std::{ + io, + collections::HashMap +}; +use torchbear_lib::error::Error; fn main() { + + let levels: HashMap<&str, log::Level> = [ + ("error", log::Level::Error), + ("warn", log::Level::Warn), + ("info", log::Level::Info), + ("debug", log::Level::Debug), + ("trace", log::Level::Trace) + ].iter().cloned().collect(); + let matches = ClapApp::new("torchbear") - .version("0.5.3") - .author("Mitchell Tannenbaum ") + .version(crate_version!()) + .author(crate_authors!()) .about("TorchBear Application Framework") - .arg(Arg::with_name("log") - .long("log") - .value_name("LEVEL") - .help("Prints messages with log level ") - .default_value("info") - .takes_value(true)) + .setting(clap::AppSettings::TrailingVarArg) + .arg(Arg::with_name("log") + .long("log") + .value_name("LEVEL") + .help("Prints messages with log level ") + .possible_values(&levels.iter().map(|(&k, _)| k).collect::>()[..]) + .default_value("info") + .takes_value(true)) .arg(Arg::with_name("log scope") - .long("log-scope") - .value_name("SCOPE") - .help("Whether to log everything in the dependency tree") - .default_value("torchbear") - .takes_value(true)) + .long("log-scope") + .value_name("SCOPE") + .help("Whether to log everything in the dependency tree") + .possible_values(&["torchbear", "everything"]) + .default_value("torchbear") + .takes_value(true)) + .arg(Arg::with_name("interpreter") + .index(1) + .multiple(true)) .get_matches(); - torchbear_lib::ApplicationBuilder::new() - .log_level(match matches.value_of("log").unwrap() { - "error" => log::Level::Error, - "warn" => log::Level::Warn, - "info" => log::Level::Info, - "debug" => log::Level::Debug, - "trace" => log::Level::Trace, - l => { - println!("{} is not a valid log level, available levels are:\n\terror, warn, info, debug or trace", l); - std::process::exit(1) - } - }) - .log_everything(match matches.value_of("log scope").unwrap() { - "torchbear" => false, - "everything" => true, - l => { - println!("{} is not a valid log scope, available levels are 'torchbear' and 'everything'", l); - std::process::exit(1) + match torchbear_lib::ApplicationBuilder::new() + .log_level(*matches.value_of("log").map(|l| levels.get(&l).unwrap()).unwrap()) + .log_everything(matches.value_of("log scope").unwrap() == "everything") + .start(matches.values_of("interpreter").map(|val| val.map(|s| s.to_string()).collect())) { + Ok(_) => {}, + Err(e) => { + //To handle "AddrInUse". Will move this away in a later commit when refactoring + if let Error::IoError(err) = e { + if err.kind() == io::ErrorKind::AddrInUse { + println!("Error: Address already in use."); + } else { + println!("Unknown error as occurred: {:?}", err); + } + } else { + println!("Error: {}", e); } - }) - .start() + + } + } + } From 9211f4013f4e2178ca53ba8477c51e1c22c0a55c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20W=C5=82odarczyk?= Date: Sun, 13 Jan 2019 19:56:16 +0100 Subject: [PATCH 7/8] package.searchers[2] patching --- src/handlers/bridge.lua | 57 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/src/handlers/bridge.lua b/src/handlers/bridge.lua index afcea90..ca27d15 100644 --- a/src/handlers/bridge.lua +++ b/src/handlers/bridge.lua @@ -1,5 +1,9 @@ -- Patch require to log all executed modules +_G._require = require + +local default_searchers = package.searchers[2] + _G._require = require function _G.require (module_name) if package.loaded[module_name] == nil then @@ -8,6 +12,59 @@ function _G.require (module_name) return _require(module_name) end +package.searchers[2] = function(name) + package.preload[name] = function(modulename) + local created_file = io.open("module.lua", "w+") + local modulepath = string.gsub(modulename, "%.", "/") + local path = "/" + local filename = string.gsub(path, "%?", modulepath) + local file = io.open(filename, "rb") + modulepath = modulepath + if file then + created_file:write("local module_timer = os.clock()") + + -- count lines to check if last line isn't return + local line_count = 0; + local return_line_num = 0; + for line in io.lines(modulepath .. ".lua") do + if line ~= "" then line_count = line_count + 1 end + if string.find(line, "return") ~= nil then + return_line_num = line_count + end + end + + local return_on_last_line = false; + if return_line_num == line_count then return_on_last_line = true end + local last_line_return = "" + -- rewrite file content + local line_num = 0 + for line in io.lines(modulepath .. ".lua") do + + if line ~= "" then line_num = line_num + 1 end + if return_on_last_line == false or line_num ~= line_count then + created_file:write(line .. "\n\t") + else + last_line_return = line + end + end + + created_file:write("\n\tlocal elapsed = (os.clock() - module_timer) * 1000") + created_file:write("\n\r_log.info(\"" .. modulename .. " done in \" .. elapsed .. \" milliseconds\")") + if return_on_last_line then + created_file:write("\n" .. last_line_return) + end + created_file:close() + -- Compile and return the module + local to_compile = io.open("module.lua", "rb") + local compiled = assert(load(assert(to_compile:read("*a")), modulepath)) + os.execute("rm module.lua") + return compiled + end + end + return require(name) +end + + xpcall(function () local init_f, err = loadfile(torchbear.init_filename) if not init_f then error(err) end From 5054386b58a58dd67b95cdd51fbce48f25028cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksander=20W=C5=82odarczyk?= Date: Sun, 13 Jan 2019 21:07:23 +0100 Subject: [PATCH 8/8] splitted into functions --- src/handlers/bridge.lua | 93 +++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 35 deletions(-) diff --git a/src/handlers/bridge.lua b/src/handlers/bridge.lua index ca27d15..595edb9 100644 --- a/src/handlers/bridge.lua +++ b/src/handlers/bridge.lua @@ -21,42 +21,9 @@ package.searchers[2] = function(name) local file = io.open(filename, "rb") modulepath = modulepath if file then - created_file:write("local module_timer = os.clock()") - - -- count lines to check if last line isn't return - local line_count = 0; - local return_line_num = 0; - for line in io.lines(modulepath .. ".lua") do - if line ~= "" then line_count = line_count + 1 end - if string.find(line, "return") ~= nil then - return_line_num = line_count - end - end - - local return_on_last_line = false; - if return_line_num == line_count then return_on_last_line = true end - local last_line_return = "" - -- rewrite file content - local line_num = 0 - for line in io.lines(modulepath .. ".lua") do - - if line ~= "" then line_num = line_num + 1 end - if return_on_last_line == false or line_num ~= line_count then - created_file:write(line .. "\n\t") - else - last_line_return = line - end - end - - created_file:write("\n\tlocal elapsed = (os.clock() - module_timer) * 1000") - created_file:write("\n\r_log.info(\"" .. modulename .. " done in \" .. elapsed .. \" milliseconds\")") - if return_on_last_line then - created_file:write("\n" .. last_line_return) - end - created_file:close() + process_module(modulepath, modulename, created_file) -- Compile and return the module - local to_compile = io.open("module.lua", "rb") - local compiled = assert(load(assert(to_compile:read("*a")), modulepath)) + local compiled = compile_module(modulepath) os.execute("rm module.lua") return compiled end @@ -65,6 +32,62 @@ package.searchers[2] = function(name) end +function compile_module(modulepath) + local to_compile = io.open("module.lua", "rb") + local compiled = assert(load(assert(to_compile:read("*a")), modulepath)) + + return compiled +end + +function count_lines(modulepath) + local counters = { } + -- count lines to check if last line isn't return + local line_count = 0; + local return_line_num = 0; + for line in io.lines(modulepath .. ".lua") do + if line ~= "" then line_count = line_count + 1 end + if string.find(line, "return") ~= nil then + return_line_num = line_count + end + end + counters[1] = line_count + counters[2] = return_line_num + + return counters +end + +function process_module(modulepath, modulename, created_file) + created_file:write("local module_timer = os.clock()") + + line_nums = count_lines(modulepath) + -- count lines to check if last line isn't return + local line_count = line_nums[1]; + local return_line_num = line_nums[2]; + + local return_on_last_line = false; + if return_line_num == line_count then return_on_last_line = true end + local last_line_return = "" + + -- rewrite file content + local line_num = 0 + for line in io.lines(modulepath .. ".lua") do + + if line ~= "" then line_num = line_num + 1 end + if return_on_last_line == false or line_num ~= line_count then + created_file:write(line .. "\n\t") + else + last_line_return = line + end + end + + created_file:write("\n\tlocal elapsed = (os.clock() - module_timer) * 1000") + created_file:write("\n\r_log.info(\"" .. modulename .. " done in \" .. elapsed .. \" milliseconds\")") + if return_on_last_line then + created_file:write("\n" .. last_line_return) + end + created_file:close() +end + xpcall(function () local init_f, err = loadfile(torchbear.init_filename) if not init_f then error(err) end