├── .github ├── hn.png └── workflows │ ├── cd.yml │ └── ci.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md └── src ├── app.rs ├── hn.rs ├── main.rs ├── time.rs └── ui.rs /.github/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yayoc/hn/9d3971d5c374e8f08972e2f661bd5adc70d143f7/.github/hn.png -------------------------------------------------------------------------------- /.github/workflows/cd.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Deployment 2 | 3 | on: 4 | push: 5 | tags: 6 | - "v*.*.*" 7 | 8 | jobs: 9 | publish: 10 | name: Publishing for ${{ matrix.os }} 11 | runs-on: ${{ matrix.os }} 12 | strategy: 13 | matrix: 14 | os: [macos-latest, ubuntu-latest] 15 | rust: [nightly] 16 | include: 17 | - os: macos-latest 18 | artifact_prefix: macos 19 | target: x86_64-apple-darwin 20 | - os: ubuntu-latest 21 | artifact_prefix: linux 22 | target: x86_64-unknown-linux-gnu 23 | 24 | steps: 25 | - name: Installing Rust toolchain 26 | uses: actions-rs/toolchain@v1 27 | with: 28 | toolchain: ${{ matrix.rust }} 29 | override: true 30 | - name: Installing needed macOS dependencies 31 | if: matrix.os == 'macos-latest' 32 | run: brew install openssl@1.1 33 | - name: Installing needed Ubuntu dependencies 34 | if: matrix.os == 'ubuntu-latest' 35 | run: | 36 | sudo apt-get update 37 | sudo apt-get install -y -qq pkg-config libssl-dev 38 | - name: Checking out sources 39 | uses: actions/checkout@v1 40 | - name: Running cargo build 41 | uses: actions-rs/cargo@v1 42 | with: 43 | command: build 44 | toolchain: ${{ matrix.rust }} 45 | args: --release --target ${{ matrix.target }} 46 | 47 | - name: Packaging final binary 48 | shell: bash 49 | run: | 50 | cd target/${{ matrix.target }}/release 51 | strip hn 52 | tar czvf hn-${{ matrix.artifact_prefix }}.tar.gz hn 53 | shasum -a 256 hn-${{ matrix.artifact_prefix }}.tar.gz > hn-${{ matrix.artifact_prefix }}.sha256 54 | - name: Releasing assets 55 | uses: softprops/action-gh-release@v1 56 | with: 57 | files: | 58 | target/${{ matrix.target }}/release/hn-${{ matrix.artifact_prefix }}.tar.gz 59 | target/${{ matrix.target }}/release/hn-${{ matrix.artifact_prefix }}.sha256 60 | env: 61 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 62 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous integration 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | check: 7 | name: Check 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v1 11 | - uses: actions-rs/toolchain@v1 12 | with: 13 | profile: minimal 14 | toolchain: nightly 15 | override: true 16 | - uses: actions-rs/cargo@v1 17 | with: 18 | command: check 19 | 20 | test: 21 | name: Test Suite 22 | runs-on: ubuntu-latest 23 | steps: 24 | - uses: actions/checkout@v1 25 | - uses: actions-rs/toolchain@v1 26 | with: 27 | profile: minimal 28 | toolchain: nightly 29 | override: true 30 | - uses: actions-rs/cargo@v1 31 | with: 32 | command: test 33 | 34 | fmt: 35 | name: Rustfmt 36 | runs-on: ubuntu-latest 37 | steps: 38 | - uses: actions/checkout@v1 39 | - uses: actions-rs/toolchain@v1 40 | with: 41 | profile: minimal 42 | toolchain: nightly 43 | override: true 44 | - run: rustup component add rustfmt 45 | - uses: actions-rs/cargo@v1 46 | with: 47 | command: fmt 48 | args: --all -- --check 49 | 50 | clippy: 51 | name: Clippy 52 | runs-on: ubuntu-latest 53 | steps: 54 | - uses: actions/checkout@v1 55 | - uses: actions-rs/toolchain@v1 56 | with: 57 | profile: minimal 58 | toolchain: nightly 59 | override: true 60 | - run: rustup component add clippy 61 | - uses: actions-rs/cargo@v1 62 | with: 63 | command: clippy 64 | args: -- -D warnings 65 | 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | .idea 4 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "adler32" 5 | version = "1.0.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | 8 | [[package]] 9 | name = "aho-corasick" 10 | version = "0.7.6" 11 | source = "registry+https://github.com/rust-lang/crates.io-index" 12 | dependencies = [ 13 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 14 | ] 15 | 16 | [[package]] 17 | name = "ansi_term" 18 | version = "0.11.0" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | dependencies = [ 21 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 22 | ] 23 | 24 | [[package]] 25 | name = "approx" 26 | version = "0.1.1" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | 29 | [[package]] 30 | name = "arrayvec" 31 | version = "0.4.12" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | dependencies = [ 34 | "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 35 | ] 36 | 37 | [[package]] 38 | name = "assert-json-diff" 39 | version = "1.0.0" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | dependencies = [ 42 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 44 | ] 45 | 46 | [[package]] 47 | name = "atty" 48 | version = "0.2.13" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | dependencies = [ 51 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 53 | ] 54 | 55 | [[package]] 56 | name = "autocfg" 57 | version = "0.1.6" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | 60 | [[package]] 61 | name = "backtrace" 62 | version = "0.3.40" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | dependencies = [ 65 | "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 67 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 68 | "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 69 | ] 70 | 71 | [[package]] 72 | name = "backtrace-sys" 73 | version = "0.1.32" 74 | source = "registry+https://github.com/rust-lang/crates.io-index" 75 | dependencies = [ 76 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 77 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 78 | ] 79 | 80 | [[package]] 81 | name = "base64" 82 | version = "0.10.1" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | dependencies = [ 85 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 86 | ] 87 | 88 | [[package]] 89 | name = "bitflags" 90 | version = "1.2.1" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | 93 | [[package]] 94 | name = "byteorder" 95 | version = "1.3.2" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | 98 | [[package]] 99 | name = "bytes" 100 | version = "0.4.12" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | dependencies = [ 103 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 104 | "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 105 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 106 | ] 107 | 108 | [[package]] 109 | name = "c2-chacha" 110 | version = "0.2.2" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | dependencies = [ 113 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 114 | "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 115 | ] 116 | 117 | [[package]] 118 | name = "cassowary" 119 | version = "0.3.0" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | 122 | [[package]] 123 | name = "cc" 124 | version = "1.0.46" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | 127 | [[package]] 128 | name = "cfg-if" 129 | version = "0.1.10" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | 132 | [[package]] 133 | name = "cgmath" 134 | version = "0.16.1" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | dependencies = [ 137 | "approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 138 | "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", 139 | "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 140 | ] 141 | 142 | [[package]] 143 | name = "chrono" 144 | version = "0.4.9" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | dependencies = [ 147 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 148 | "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 149 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 151 | ] 152 | 153 | [[package]] 154 | name = "clap" 155 | version = "2.33.0" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | dependencies = [ 158 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 159 | "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 160 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 161 | "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 162 | "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 163 | "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 164 | "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 165 | ] 166 | 167 | [[package]] 168 | name = "cloudabi" 169 | version = "0.0.3" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | dependencies = [ 172 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 173 | ] 174 | 175 | [[package]] 176 | name = "colored" 177 | version = "1.8.0" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | dependencies = [ 180 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 181 | "winconsole 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 182 | ] 183 | 184 | [[package]] 185 | name = "cookie" 186 | version = "0.12.0" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | dependencies = [ 189 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 191 | ] 192 | 193 | [[package]] 194 | name = "cookie_store" 195 | version = "0.7.0" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | dependencies = [ 198 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 199 | "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 200 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 201 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 202 | "publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 203 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 207 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 208 | ] 209 | 210 | [[package]] 211 | name = "core-foundation" 212 | version = "0.6.4" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | dependencies = [ 215 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 217 | ] 218 | 219 | [[package]] 220 | name = "core-foundation-sys" 221 | version = "0.6.2" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | 224 | [[package]] 225 | name = "crc32fast" 226 | version = "1.2.0" 227 | source = "registry+https://github.com/rust-lang/crates.io-index" 228 | dependencies = [ 229 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 230 | ] 231 | 232 | [[package]] 233 | name = "crossbeam-deque" 234 | version = "0.7.1" 235 | source = "registry+https://github.com/rust-lang/crates.io-index" 236 | dependencies = [ 237 | "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 238 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 239 | ] 240 | 241 | [[package]] 242 | name = "crossbeam-epoch" 243 | version = "0.7.2" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | dependencies = [ 246 | "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 247 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 248 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 249 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 250 | "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 251 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 252 | ] 253 | 254 | [[package]] 255 | name = "crossbeam-queue" 256 | version = "0.1.2" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | dependencies = [ 259 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 260 | ] 261 | 262 | [[package]] 263 | name = "crossbeam-utils" 264 | version = "0.6.6" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | dependencies = [ 267 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 268 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 269 | ] 270 | 271 | [[package]] 272 | name = "difference" 273 | version = "2.0.0" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | 276 | [[package]] 277 | name = "dtoa" 278 | version = "0.4.4" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | 281 | [[package]] 282 | name = "either" 283 | version = "1.5.3" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | 286 | [[package]] 287 | name = "encoding_rs" 288 | version = "0.8.20" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | dependencies = [ 291 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 292 | ] 293 | 294 | [[package]] 295 | name = "error-chain" 296 | version = "0.12.1" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | dependencies = [ 299 | "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", 300 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 301 | ] 302 | 303 | [[package]] 304 | name = "failure" 305 | version = "0.1.6" 306 | source = "registry+https://github.com/rust-lang/crates.io-index" 307 | dependencies = [ 308 | "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", 309 | "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 310 | ] 311 | 312 | [[package]] 313 | name = "failure_derive" 314 | version = "0.1.6" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | dependencies = [ 317 | "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 318 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 319 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 320 | "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 321 | ] 322 | 323 | [[package]] 324 | name = "flate2" 325 | version = "1.0.12" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | dependencies = [ 328 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 329 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 330 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 331 | "miniz_oxide 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 332 | ] 333 | 334 | [[package]] 335 | name = "fnv" 336 | version = "1.0.6" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | 339 | [[package]] 340 | name = "foreign-types" 341 | version = "0.3.2" 342 | source = "registry+https://github.com/rust-lang/crates.io-index" 343 | dependencies = [ 344 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 345 | ] 346 | 347 | [[package]] 348 | name = "foreign-types-shared" 349 | version = "0.1.1" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | 352 | [[package]] 353 | name = "fuchsia-cprng" 354 | version = "0.1.1" 355 | source = "registry+https://github.com/rust-lang/crates.io-index" 356 | 357 | [[package]] 358 | name = "fuchsia-zircon" 359 | version = "0.3.3" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | dependencies = [ 362 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 364 | ] 365 | 366 | [[package]] 367 | name = "fuchsia-zircon-sys" 368 | version = "0.3.3" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | 371 | [[package]] 372 | name = "futures" 373 | version = "0.1.29" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | 376 | [[package]] 377 | name = "futures-cpupool" 378 | version = "0.1.8" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | dependencies = [ 381 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 382 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 383 | ] 384 | 385 | [[package]] 386 | name = "getrandom" 387 | version = "0.1.12" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | dependencies = [ 390 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 391 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 392 | "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 393 | ] 394 | 395 | [[package]] 396 | name = "h2" 397 | version = "0.1.26" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | dependencies = [ 400 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 401 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 402 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 403 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 404 | "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", 405 | "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 406 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 410 | ] 411 | 412 | [[package]] 413 | name = "hn" 414 | version = "0.1.0" 415 | dependencies = [ 416 | "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", 417 | "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 418 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 419 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 420 | "mockito 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", 421 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 422 | "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", 423 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 425 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 426 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 427 | "tui 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 428 | "webbrowser 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 429 | ] 430 | 431 | [[package]] 432 | name = "http" 433 | version = "0.1.19" 434 | source = "registry+https://github.com/rust-lang/crates.io-index" 435 | dependencies = [ 436 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 437 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 438 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 439 | ] 440 | 441 | [[package]] 442 | name = "http-body" 443 | version = "0.1.0" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | dependencies = [ 446 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 447 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 448 | "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", 449 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 450 | ] 451 | 452 | [[package]] 453 | name = "httparse" 454 | version = "1.3.4" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | 457 | [[package]] 458 | name = "hyper" 459 | version = "0.12.35" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | dependencies = [ 462 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 463 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 464 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 465 | "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 466 | "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 469 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 473 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 474 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 475 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 476 | "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 477 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 478 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 479 | "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 481 | "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 482 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 483 | "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 484 | ] 485 | 486 | [[package]] 487 | name = "hyper-tls" 488 | version = "0.3.2" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | dependencies = [ 491 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 492 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 493 | "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", 494 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 495 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 496 | ] 497 | 498 | [[package]] 499 | name = "idna" 500 | version = "0.1.5" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | dependencies = [ 503 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 505 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 506 | ] 507 | 508 | [[package]] 509 | name = "idna" 510 | version = "0.2.0" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | dependencies = [ 513 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 514 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "indexmap" 520 | version = "1.3.0" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | dependencies = [ 523 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 524 | ] 525 | 526 | [[package]] 527 | name = "iovec" 528 | version = "0.1.4" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | dependencies = [ 531 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 532 | ] 533 | 534 | [[package]] 535 | name = "itertools" 536 | version = "0.8.1" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | dependencies = [ 539 | "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 540 | ] 541 | 542 | [[package]] 543 | name = "itoa" 544 | version = "0.4.4" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | 547 | [[package]] 548 | name = "kernel32-sys" 549 | version = "0.2.2" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | dependencies = [ 552 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 553 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 554 | ] 555 | 556 | [[package]] 557 | name = "lazy_static" 558 | version = "1.4.0" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | 561 | [[package]] 562 | name = "libc" 563 | version = "0.2.65" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | 566 | [[package]] 567 | name = "lock_api" 568 | version = "0.3.1" 569 | source = "registry+https://github.com/rust-lang/crates.io-index" 570 | dependencies = [ 571 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 572 | ] 573 | 574 | [[package]] 575 | name = "log" 576 | version = "0.4.8" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | dependencies = [ 579 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 580 | ] 581 | 582 | [[package]] 583 | name = "matches" 584 | version = "0.1.8" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | 587 | [[package]] 588 | name = "memchr" 589 | version = "2.2.1" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | 592 | [[package]] 593 | name = "memoffset" 594 | version = "0.5.1" 595 | source = "registry+https://github.com/rust-lang/crates.io-index" 596 | dependencies = [ 597 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 598 | ] 599 | 600 | [[package]] 601 | name = "mime" 602 | version = "0.3.14" 603 | source = "registry+https://github.com/rust-lang/crates.io-index" 604 | 605 | [[package]] 606 | name = "mime_guess" 607 | version = "2.0.1" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | dependencies = [ 610 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 611 | "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 612 | ] 613 | 614 | [[package]] 615 | name = "miniz_oxide" 616 | version = "0.3.3" 617 | source = "registry+https://github.com/rust-lang/crates.io-index" 618 | dependencies = [ 619 | "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 620 | ] 621 | 622 | [[package]] 623 | name = "mio" 624 | version = "0.6.19" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | dependencies = [ 627 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 628 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 629 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 630 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 631 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 632 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 633 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 634 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 635 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 636 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 637 | ] 638 | 639 | [[package]] 640 | name = "mio-uds" 641 | version = "0.6.7" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | dependencies = [ 644 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 645 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 646 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 647 | ] 648 | 649 | [[package]] 650 | name = "miow" 651 | version = "0.2.1" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | dependencies = [ 654 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 655 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 656 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 657 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 658 | ] 659 | 660 | [[package]] 661 | name = "mockito" 662 | version = "0.21.0" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | dependencies = [ 665 | "assert-json-diff 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 666 | "colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 667 | "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 668 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 669 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 670 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 671 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 672 | "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 673 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 674 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 675 | ] 676 | 677 | [[package]] 678 | name = "native-tls" 679 | version = "0.2.3" 680 | source = "registry+https://github.com/rust-lang/crates.io-index" 681 | dependencies = [ 682 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 683 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 684 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 685 | "openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)", 686 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 687 | "openssl-sys 0.9.51 (registry+https://github.com/rust-lang/crates.io-index)", 688 | "schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 689 | "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 690 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 691 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 692 | ] 693 | 694 | [[package]] 695 | name = "net2" 696 | version = "0.2.33" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | dependencies = [ 699 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 700 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 701 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 702 | ] 703 | 704 | [[package]] 705 | name = "nodrop" 706 | version = "0.1.14" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | 709 | [[package]] 710 | name = "num-integer" 711 | version = "0.1.41" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | dependencies = [ 714 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 715 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 716 | ] 717 | 718 | [[package]] 719 | name = "num-traits" 720 | version = "0.1.43" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | dependencies = [ 723 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 724 | ] 725 | 726 | [[package]] 727 | name = "num-traits" 728 | version = "0.2.8" 729 | source = "registry+https://github.com/rust-lang/crates.io-index" 730 | dependencies = [ 731 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 732 | ] 733 | 734 | [[package]] 735 | name = "num_cpus" 736 | version = "1.10.1" 737 | source = "registry+https://github.com/rust-lang/crates.io-index" 738 | dependencies = [ 739 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 740 | ] 741 | 742 | [[package]] 743 | name = "numtoa" 744 | version = "0.1.0" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | 747 | [[package]] 748 | name = "openssl" 749 | version = "0.10.25" 750 | source = "registry+https://github.com/rust-lang/crates.io-index" 751 | dependencies = [ 752 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 753 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 754 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 755 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 756 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 757 | "openssl-sys 0.9.51 (registry+https://github.com/rust-lang/crates.io-index)", 758 | ] 759 | 760 | [[package]] 761 | name = "openssl-probe" 762 | version = "0.1.2" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | 765 | [[package]] 766 | name = "openssl-sys" 767 | version = "0.9.51" 768 | source = "registry+https://github.com/rust-lang/crates.io-index" 769 | dependencies = [ 770 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 771 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 772 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 774 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 775 | ] 776 | 777 | [[package]] 778 | name = "parking_lot" 779 | version = "0.9.0" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | dependencies = [ 782 | "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 784 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 785 | ] 786 | 787 | [[package]] 788 | name = "parking_lot_core" 789 | version = "0.6.2" 790 | source = "registry+https://github.com/rust-lang/crates.io-index" 791 | dependencies = [ 792 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 793 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 794 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 795 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 796 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 797 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 798 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 799 | ] 800 | 801 | [[package]] 802 | name = "percent-encoding" 803 | version = "1.0.1" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | 806 | [[package]] 807 | name = "percent-encoding" 808 | version = "2.1.0" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | 811 | [[package]] 812 | name = "pkg-config" 813 | version = "0.3.16" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | 816 | [[package]] 817 | name = "ppv-lite86" 818 | version = "0.2.5" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | 821 | [[package]] 822 | name = "proc-macro2" 823 | version = "1.0.5" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | dependencies = [ 826 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 827 | ] 828 | 829 | [[package]] 830 | name = "publicsuffix" 831 | version = "1.5.3" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | dependencies = [ 834 | "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 835 | "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 836 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 837 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 838 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 839 | ] 840 | 841 | [[package]] 842 | name = "quote" 843 | version = "1.0.2" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | dependencies = [ 846 | "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 847 | ] 848 | 849 | [[package]] 850 | name = "rand" 851 | version = "0.4.6" 852 | source = "registry+https://github.com/rust-lang/crates.io-index" 853 | dependencies = [ 854 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 855 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 856 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 857 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 858 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 859 | ] 860 | 861 | [[package]] 862 | name = "rand" 863 | version = "0.6.5" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | dependencies = [ 866 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 867 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 868 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 869 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 870 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 872 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 873 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 874 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 875 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 876 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 877 | ] 878 | 879 | [[package]] 880 | name = "rand" 881 | version = "0.7.2" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | dependencies = [ 884 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 885 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 886 | "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 887 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 888 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 889 | ] 890 | 891 | [[package]] 892 | name = "rand_chacha" 893 | version = "0.1.1" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | dependencies = [ 896 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 897 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 898 | ] 899 | 900 | [[package]] 901 | name = "rand_chacha" 902 | version = "0.2.1" 903 | source = "registry+https://github.com/rust-lang/crates.io-index" 904 | dependencies = [ 905 | "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 906 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 907 | ] 908 | 909 | [[package]] 910 | name = "rand_core" 911 | version = "0.3.1" 912 | source = "registry+https://github.com/rust-lang/crates.io-index" 913 | dependencies = [ 914 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 915 | ] 916 | 917 | [[package]] 918 | name = "rand_core" 919 | version = "0.4.2" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | 922 | [[package]] 923 | name = "rand_core" 924 | version = "0.5.1" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | dependencies = [ 927 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 928 | ] 929 | 930 | [[package]] 931 | name = "rand_hc" 932 | version = "0.1.0" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | dependencies = [ 935 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 936 | ] 937 | 938 | [[package]] 939 | name = "rand_hc" 940 | version = "0.2.0" 941 | source = "registry+https://github.com/rust-lang/crates.io-index" 942 | dependencies = [ 943 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 944 | ] 945 | 946 | [[package]] 947 | name = "rand_isaac" 948 | version = "0.1.1" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | dependencies = [ 951 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 952 | ] 953 | 954 | [[package]] 955 | name = "rand_jitter" 956 | version = "0.1.4" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | dependencies = [ 959 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 960 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 961 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 962 | ] 963 | 964 | [[package]] 965 | name = "rand_os" 966 | version = "0.1.3" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | dependencies = [ 969 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 970 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 971 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 972 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 973 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 974 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 975 | ] 976 | 977 | [[package]] 978 | name = "rand_pcg" 979 | version = "0.1.2" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | dependencies = [ 982 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 983 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 984 | ] 985 | 986 | [[package]] 987 | name = "rand_xorshift" 988 | version = "0.1.1" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | dependencies = [ 991 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 992 | ] 993 | 994 | [[package]] 995 | name = "rdrand" 996 | version = "0.4.0" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | dependencies = [ 999 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1000 | ] 1001 | 1002 | [[package]] 1003 | name = "redox_syscall" 1004 | version = "0.1.56" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | 1007 | [[package]] 1008 | name = "redox_termios" 1009 | version = "0.1.1" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | dependencies = [ 1012 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "regex" 1017 | version = "1.3.1" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | dependencies = [ 1020 | "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", 1021 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1022 | "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1024 | ] 1025 | 1026 | [[package]] 1027 | name = "regex-syntax" 1028 | version = "0.6.12" 1029 | source = "registry+https://github.com/rust-lang/crates.io-index" 1030 | 1031 | [[package]] 1032 | name = "remove_dir_all" 1033 | version = "0.5.2" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | dependencies = [ 1036 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1037 | ] 1038 | 1039 | [[package]] 1040 | name = "reqwest" 1041 | version = "0.9.22" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | dependencies = [ 1044 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1045 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1046 | "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", 1047 | "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1048 | "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", 1049 | "flate2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)", 1050 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1051 | "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", 1052 | "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", 1053 | "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1054 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1055 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 1056 | "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1057 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1058 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1059 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 1060 | "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1061 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 1062 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 1063 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1064 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1065 | "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 1066 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1067 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1068 | "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1069 | "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "rgb" 1074 | version = "0.8.14" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | 1077 | [[package]] 1078 | name = "rustc-demangle" 1079 | version = "0.1.16" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | 1082 | [[package]] 1083 | name = "rustc_version" 1084 | version = "0.2.3" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | dependencies = [ 1087 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "ryu" 1092 | version = "1.0.2" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | 1095 | [[package]] 1096 | name = "schannel" 1097 | version = "0.1.16" 1098 | source = "registry+https://github.com/rust-lang/crates.io-index" 1099 | dependencies = [ 1100 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1101 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1102 | ] 1103 | 1104 | [[package]] 1105 | name = "scopeguard" 1106 | version = "1.0.0" 1107 | source = "registry+https://github.com/rust-lang/crates.io-index" 1108 | 1109 | [[package]] 1110 | name = "security-framework" 1111 | version = "0.3.1" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | dependencies = [ 1114 | "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1115 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1116 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1117 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1118 | ] 1119 | 1120 | [[package]] 1121 | name = "security-framework-sys" 1122 | version = "0.3.1" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | dependencies = [ 1125 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1126 | ] 1127 | 1128 | [[package]] 1129 | name = "semver" 1130 | version = "0.9.0" 1131 | source = "registry+https://github.com/rust-lang/crates.io-index" 1132 | dependencies = [ 1133 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "semver-parser" 1138 | version = "0.7.0" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | 1141 | [[package]] 1142 | name = "serde" 1143 | version = "1.0.101" 1144 | source = "registry+https://github.com/rust-lang/crates.io-index" 1145 | dependencies = [ 1146 | "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1147 | ] 1148 | 1149 | [[package]] 1150 | name = "serde_derive" 1151 | version = "1.0.101" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | dependencies = [ 1154 | "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1155 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1156 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1157 | ] 1158 | 1159 | [[package]] 1160 | name = "serde_json" 1161 | version = "1.0.41" 1162 | source = "registry+https://github.com/rust-lang/crates.io-index" 1163 | dependencies = [ 1164 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1165 | "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1166 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1167 | ] 1168 | 1169 | [[package]] 1170 | name = "serde_urlencoded" 1171 | version = "0.5.5" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | dependencies = [ 1174 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1175 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1176 | "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1177 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | ] 1179 | 1180 | [[package]] 1181 | name = "slab" 1182 | version = "0.4.2" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | 1185 | [[package]] 1186 | name = "smallvec" 1187 | version = "0.6.10" 1188 | source = "registry+https://github.com/rust-lang/crates.io-index" 1189 | 1190 | [[package]] 1191 | name = "string" 1192 | version = "0.2.1" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | dependencies = [ 1195 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "strsim" 1200 | version = "0.8.0" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | 1203 | [[package]] 1204 | name = "syn" 1205 | version = "1.0.5" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | dependencies = [ 1208 | "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1210 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "synstructure" 1215 | version = "0.12.1" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | dependencies = [ 1218 | "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1221 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1222 | ] 1223 | 1224 | [[package]] 1225 | name = "tempfile" 1226 | version = "3.1.0" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | dependencies = [ 1229 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1231 | "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1232 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1233 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1234 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "termion" 1239 | version = "1.5.3" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | dependencies = [ 1242 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1243 | "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1244 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1245 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "textwrap" 1250 | version = "0.11.0" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | dependencies = [ 1253 | "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1254 | ] 1255 | 1256 | [[package]] 1257 | name = "thread_local" 1258 | version = "0.3.6" 1259 | source = "registry+https://github.com/rust-lang/crates.io-index" 1260 | dependencies = [ 1261 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1262 | ] 1263 | 1264 | [[package]] 1265 | name = "time" 1266 | version = "0.1.42" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | dependencies = [ 1269 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1270 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1271 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1272 | ] 1273 | 1274 | [[package]] 1275 | name = "tokio" 1276 | version = "0.1.22" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | dependencies = [ 1279 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1280 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1281 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1282 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1283 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1284 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1285 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1286 | "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1287 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1288 | "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1289 | "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1290 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1291 | "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 1292 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1293 | "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1294 | "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 1295 | ] 1296 | 1297 | [[package]] 1298 | name = "tokio-buf" 1299 | version = "0.1.1" 1300 | source = "registry+https://github.com/rust-lang/crates.io-index" 1301 | dependencies = [ 1302 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1303 | "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1304 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1305 | ] 1306 | 1307 | [[package]] 1308 | name = "tokio-codec" 1309 | version = "0.1.1" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | dependencies = [ 1312 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1313 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1314 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1315 | ] 1316 | 1317 | [[package]] 1318 | name = "tokio-current-thread" 1319 | version = "0.1.6" 1320 | source = "registry+https://github.com/rust-lang/crates.io-index" 1321 | dependencies = [ 1322 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1323 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1324 | ] 1325 | 1326 | [[package]] 1327 | name = "tokio-executor" 1328 | version = "0.1.8" 1329 | source = "registry+https://github.com/rust-lang/crates.io-index" 1330 | dependencies = [ 1331 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1332 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1333 | ] 1334 | 1335 | [[package]] 1336 | name = "tokio-fs" 1337 | version = "0.1.6" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | dependencies = [ 1340 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1341 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1342 | "tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 1343 | ] 1344 | 1345 | [[package]] 1346 | name = "tokio-io" 1347 | version = "0.1.12" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | dependencies = [ 1350 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1351 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1352 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1353 | ] 1354 | 1355 | [[package]] 1356 | name = "tokio-reactor" 1357 | version = "0.1.10" 1358 | source = "registry+https://github.com/rust-lang/crates.io-index" 1359 | dependencies = [ 1360 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1361 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1363 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1364 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1365 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1366 | "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1367 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1368 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1369 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1370 | "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1371 | ] 1372 | 1373 | [[package]] 1374 | name = "tokio-sync" 1375 | version = "0.1.7" 1376 | source = "registry+https://github.com/rust-lang/crates.io-index" 1377 | dependencies = [ 1378 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1379 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "tokio-tcp" 1384 | version = "0.1.3" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | dependencies = [ 1387 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1388 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1389 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1390 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1391 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1392 | "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1393 | ] 1394 | 1395 | [[package]] 1396 | name = "tokio-threadpool" 1397 | version = "0.1.16" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | dependencies = [ 1400 | "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1401 | "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1402 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1403 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1404 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1405 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1406 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1407 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1408 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "tokio-timer" 1413 | version = "0.2.11" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | dependencies = [ 1416 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1417 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1418 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1419 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "tokio-udp" 1424 | version = "0.1.5" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | dependencies = [ 1427 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1428 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1429 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1430 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1431 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1432 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1433 | "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1434 | ] 1435 | 1436 | [[package]] 1437 | name = "tokio-uds" 1438 | version = "0.2.5" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | dependencies = [ 1441 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1442 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1443 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1444 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1445 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1446 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1447 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1448 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1449 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1450 | "tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1451 | ] 1452 | 1453 | [[package]] 1454 | name = "try-lock" 1455 | version = "0.2.2" 1456 | source = "registry+https://github.com/rust-lang/crates.io-index" 1457 | 1458 | [[package]] 1459 | name = "try_from" 1460 | version = "0.3.2" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | dependencies = [ 1463 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "tui" 1468 | version = "0.6.2" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | dependencies = [ 1471 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1472 | "cassowary 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1473 | "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1474 | "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 1475 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1476 | "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1477 | "unicode-segmentation 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1478 | "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1479 | ] 1480 | 1481 | [[package]] 1482 | name = "unicase" 1483 | version = "2.5.1" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | dependencies = [ 1486 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "unicode-bidi" 1491 | version = "0.3.4" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | dependencies = [ 1494 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "unicode-normalization" 1499 | version = "0.1.8" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | dependencies = [ 1502 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "unicode-segmentation" 1507 | version = "1.5.0" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | 1510 | [[package]] 1511 | name = "unicode-width" 1512 | version = "0.1.6" 1513 | source = "registry+https://github.com/rust-lang/crates.io-index" 1514 | 1515 | [[package]] 1516 | name = "unicode-xid" 1517 | version = "0.2.0" 1518 | source = "registry+https://github.com/rust-lang/crates.io-index" 1519 | 1520 | [[package]] 1521 | name = "url" 1522 | version = "1.7.2" 1523 | source = "registry+https://github.com/rust-lang/crates.io-index" 1524 | dependencies = [ 1525 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1526 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1527 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1528 | ] 1529 | 1530 | [[package]] 1531 | name = "url" 1532 | version = "2.1.0" 1533 | source = "registry+https://github.com/rust-lang/crates.io-index" 1534 | dependencies = [ 1535 | "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1536 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1537 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1538 | ] 1539 | 1540 | [[package]] 1541 | name = "uuid" 1542 | version = "0.7.4" 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" 1544 | dependencies = [ 1545 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1546 | ] 1547 | 1548 | [[package]] 1549 | name = "vcpkg" 1550 | version = "0.2.7" 1551 | source = "registry+https://github.com/rust-lang/crates.io-index" 1552 | 1553 | [[package]] 1554 | name = "vec_map" 1555 | version = "0.8.1" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | 1558 | [[package]] 1559 | name = "version_check" 1560 | version = "0.1.5" 1561 | source = "registry+https://github.com/rust-lang/crates.io-index" 1562 | 1563 | [[package]] 1564 | name = "want" 1565 | version = "0.2.0" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | dependencies = [ 1568 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1569 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1570 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1571 | ] 1572 | 1573 | [[package]] 1574 | name = "wasi" 1575 | version = "0.7.0" 1576 | source = "registry+https://github.com/rust-lang/crates.io-index" 1577 | 1578 | [[package]] 1579 | name = "webbrowser" 1580 | version = "0.5.2" 1581 | source = "registry+https://github.com/rust-lang/crates.io-index" 1582 | dependencies = [ 1583 | "widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1584 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "widestring" 1589 | version = "0.4.0" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | 1592 | [[package]] 1593 | name = "winapi" 1594 | version = "0.2.8" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | 1597 | [[package]] 1598 | name = "winapi" 1599 | version = "0.3.8" 1600 | source = "registry+https://github.com/rust-lang/crates.io-index" 1601 | dependencies = [ 1602 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1603 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1604 | ] 1605 | 1606 | [[package]] 1607 | name = "winapi-build" 1608 | version = "0.1.1" 1609 | source = "registry+https://github.com/rust-lang/crates.io-index" 1610 | 1611 | [[package]] 1612 | name = "winapi-i686-pc-windows-gnu" 1613 | version = "0.4.0" 1614 | source = "registry+https://github.com/rust-lang/crates.io-index" 1615 | 1616 | [[package]] 1617 | name = "winapi-x86_64-pc-windows-gnu" 1618 | version = "0.4.0" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | 1621 | [[package]] 1622 | name = "winconsole" 1623 | version = "0.10.0" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | dependencies = [ 1626 | "cgmath 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", 1627 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1628 | "rgb 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)", 1629 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1630 | ] 1631 | 1632 | [[package]] 1633 | name = "winreg" 1634 | version = "0.6.2" 1635 | source = "registry+https://github.com/rust-lang/crates.io-index" 1636 | dependencies = [ 1637 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1638 | ] 1639 | 1640 | [[package]] 1641 | name = "ws2_32-sys" 1642 | version = "0.2.1" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | dependencies = [ 1645 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1646 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1647 | ] 1648 | 1649 | [metadata] 1650 | "checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" 1651 | "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 1652 | "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 1653 | "checksum approx 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08abcc3b4e9339e33a3d0a5ed15d84a687350c05689d825e0f6655eef9e76a94" 1654 | "checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" 1655 | "checksum assert-json-diff 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32946b6d31d50d0e35896c864907f9cb7e47b52bd875fa3c058618601cfdefb1" 1656 | "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 1657 | "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" 1658 | "checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" 1659 | "checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" 1660 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 1661 | "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 1662 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1663 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 1664 | "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 1665 | "checksum cassowary 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" 1666 | "checksum cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "0213d356d3c4ea2c18c40b037c3be23cd639825c18f25ee670ac7813beeef99c" 1667 | "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 1668 | "checksum cgmath 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "64a4b57c8f4e3a2e9ac07e0f6abc9c24b6fc9e1b54c3478cfb598f3d0023e51c" 1669 | "checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" 1670 | "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" 1671 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1672 | "checksum colored 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6cdb90b60f2927f8d76139c72dbde7e10c3a2bc47c8594c9c7a66529f2687c03" 1673 | "checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" 1674 | "checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" 1675 | "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 1676 | "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 1677 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 1678 | "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 1679 | "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" 1680 | "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" 1681 | "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" 1682 | "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" 1683 | "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 1684 | "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" 1685 | "checksum encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" 1686 | "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" 1687 | "checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" 1688 | "checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" 1689 | "checksum flate2 1.0.12 (registry+https://github.com/rust-lang/crates.io-index)" = "ad3c5233c9a940c8719031b423d7e6c16af66e031cb0420b0896f5245bf181d3" 1690 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1691 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1692 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1693 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1694 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1695 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1696 | "checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" 1697 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1698 | "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" 1699 | "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" 1700 | "checksum http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e06e336150b178206af098a055e3621e8336027e2b4d126bda0bc64824baaf" 1701 | "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" 1702 | "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 1703 | "checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" 1704 | "checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" 1705 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 1706 | "checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 1707 | "checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" 1708 | "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1709 | "checksum itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "87fa75c9dea7b07be3138c49abbb83fd4bea199b5cdc76f9804458edc5da0d6e" 1710 | "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 1711 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1712 | "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1713 | "checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" 1714 | "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" 1715 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1716 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1717 | "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" 1718 | "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" 1719 | "checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" 1720 | "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" 1721 | "checksum miniz_oxide 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "304f66c19be2afa56530fa7c39796192eef38618da8d19df725ad7c6d6b2aaae" 1722 | "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" 1723 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1724 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1725 | "checksum mockito 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aee38c301104cc75a6628a4360be706fbdf84290c15a120b7e54eca5881c3450" 1726 | "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" 1727 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1728 | "checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1729 | "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" 1730 | "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" 1731 | "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 1732 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1733 | "checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" 1734 | "checksum openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2f372b2b53ce10fb823a337aaa674e3a7d072b957c6264d0f4ff0bd86e657449" 1735 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1736 | "checksum openssl-sys 0.9.51 (registry+https://github.com/rust-lang/crates.io-index)" = "ba24190c8f0805d3bd2ce028f439fe5af1d55882bbe6261bed1dbc93b50dd6b1" 1737 | "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 1738 | "checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" 1739 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1740 | "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1741 | "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" 1742 | "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 1743 | "checksum proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90cf5f418035b98e655e9cdb225047638296b862b42411c4e45bb88d700f7fc0" 1744 | "checksum publicsuffix 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9bf259a81de2b2eb9850ec990ec78e6a25319715584fd7652b9b26f96fcb1510" 1745 | "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" 1746 | "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" 1747 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1748 | "checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" 1749 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1750 | "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" 1751 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1752 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 1753 | "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1754 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 1755 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1756 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 1757 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 1758 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1759 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 1760 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 1761 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1762 | "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1763 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 1764 | "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" 1765 | "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" 1766 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1767 | "checksum reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "2c2064233e442ce85c77231ebd67d9eca395207dec2127fe0bbedde4bd29a650" 1768 | "checksum rgb 0.8.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2089e4031214d129e201f8c3c8c2fe97cd7322478a0d1cdf78e7029b0042efdb" 1769 | "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" 1770 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1771 | "checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" 1772 | "checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" 1773 | "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 1774 | "checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2" 1775 | "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" 1776 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1777 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1778 | "checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" 1779 | "checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" 1780 | "checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" 1781 | "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" 1782 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1783 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1784 | "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" 1785 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 1786 | "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" 1787 | "checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203" 1788 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1789 | "checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" 1790 | "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 1791 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1792 | "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" 1793 | "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 1794 | "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" 1795 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 1796 | "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" 1797 | "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" 1798 | "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" 1799 | "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 1800 | "checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d" 1801 | "checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" 1802 | "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 1803 | "checksum tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c" 1804 | "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" 1805 | "checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" 1806 | "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" 1807 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1808 | "checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" 1809 | "checksum tui 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "73b422ff4986065d33272b587907654f918a3fe8702786a8110bf68dede0d8ee" 1810 | "checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" 1811 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1812 | "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 1813 | "checksum unicode-segmentation 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49f5526225fd8b77342d5986ab5f6055552e9c0776193b5b63fd53b46debfad7" 1814 | "checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" 1815 | "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" 1816 | "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 1817 | "checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" 1818 | "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 1819 | "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" 1820 | "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" 1821 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1822 | "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" 1823 | "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" 1824 | "checksum webbrowser 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "97d468a911faaaeb783693b004e1c62e0063e646b0afae5c146cd144e566e66d" 1825 | "checksum widestring 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effc0e4ff8085673ea7b9b2e3c73f6bd4d118810c9009ed8f1e16bd96c331db6" 1826 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1827 | "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" 1828 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1829 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1830 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1831 | "checksum winconsole 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ef84b96d10db72dd980056666d7f1e7663ce93d82fa33b63e71c966f4cf5032" 1832 | "checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 1833 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1834 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hn" 3 | version = "0.1.0" 4 | authors = ["yayoc "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | termion = "1.5.3" 11 | reqwest = "0.9.22" 12 | futures = "0.1.26" 13 | tokio = "0.1.16" 14 | lazy_static = "1.4.0" 15 | serde = { version = "1.0", features = ["derive"] } 16 | num_cpus = "1.10.1" 17 | mockito = "0.21.0" 18 | webbrowser = "0.5.2" 19 | clap = "2.33.0" 20 | tui = "0.6.2" 21 | time = "0.1.42" 22 | chrono = "0.4" 23 | 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HN 2 | > Yet another HackerNews viewer for terminal written in Rust. 3 | 4 |

5 | 6 |

7 | 8 | ## Key Bindings 9 | 10 | |Key|Description| 11 | |---|---| 12 | |k|Cursor up| 13 | |j|Cursor down| 14 | |CTRL+u|Scroll window upwards| 15 | |CTRL+d|Scroll window downwards| 16 | |g|Jump to top| 17 | |G|Jump to bottom| 18 | |Enter|Open the article with default browser| 19 | |c|Open comments with default browser| 20 | |CTRL+r|Reload articles| 21 | |CTRL+c|Quit| 22 | 23 | -------------------------------------------------------------------------------- /src/app.rs: -------------------------------------------------------------------------------- 1 | use crate::hn; 2 | 3 | /// The app state. 4 | pub struct App { 5 | /// Hacker News stories. 6 | pub stories: Vec, 7 | /// Current index of the focused story. 8 | pub cur_index: usize, 9 | /// If waiting for API requests or not. 10 | pub is_loading: bool, 11 | } 12 | 13 | impl Default for App { 14 | fn default() -> Self { 15 | Self { 16 | stories: Vec::new(), 17 | cur_index: 0, 18 | is_loading: false, 19 | } 20 | } 21 | } 22 | 23 | impl App { 24 | pub fn start_loading(&mut self) { 25 | self.is_loading = true; 26 | } 27 | 28 | pub fn loaded(&mut self, stories: Vec) { 29 | self.cur_index = 0; 30 | self.stories = stories; 31 | self.is_loading = false; 32 | } 33 | 34 | pub fn open_browser(&self) { 35 | let s = &self.stories[self.cur_index]; 36 | match &s.url { 37 | Some(u) => { 38 | webbrowser::open(u.as_str()).expect("Can't open your browser."); 39 | } 40 | None => {} 41 | } 42 | } 43 | 44 | pub fn open_comments(&self) { 45 | let s = &self.stories[self.cur_index]; 46 | let url = format!("https://news.ycombinator.com/item?id={}", s.id); 47 | webbrowser::open(url.as_str()).expect("Can't open your browser."); 48 | } 49 | 50 | pub fn cursor_up(&mut self) { 51 | if self.cur_index > 0 { 52 | self.cur_index -= 1; 53 | } 54 | } 55 | 56 | pub fn cursor_down(&mut self) { 57 | if self.cur_index < self.stories.len() - 1 { 58 | self.cur_index += 1; 59 | } 60 | } 61 | 62 | pub fn cursor_jump_up(&mut self) { 63 | let jump_row = 10; 64 | match self.cur_index.checked_sub(jump_row) { 65 | Some(s) => self.cur_index = s, 66 | None => self.cur_index = 0, 67 | } 68 | } 69 | 70 | pub fn cursor_jump_down(&mut self) { 71 | let jump_row = 10; 72 | if self.cur_index < self.stories.len() - jump_row { 73 | self.cur_index += jump_row; 74 | } else { 75 | self.cur_index = if !self.stories.is_empty() { 76 | self.stories.len() - 1 77 | } else { 78 | 0 79 | }; 80 | } 81 | } 82 | 83 | pub fn cursor_jump_top(&mut self) { 84 | self.cur_index = 0; 85 | } 86 | 87 | pub fn cursor_jump_bottom(&mut self) { 88 | self.cur_index = if !self.stories.is_empty() { 89 | self.stories.len() - 1 90 | } else { 91 | 0 92 | }; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/hn.rs: -------------------------------------------------------------------------------- 1 | extern crate num_cpus; 2 | extern crate reqwest; 3 | 4 | use chrono::Utc; 5 | use futures::future::join_all; 6 | use futures::Future; 7 | use futures::Stream; 8 | use reqwest::r#async::Client; 9 | use serde::Deserialize; 10 | use tokio::runtime::Runtime; 11 | use tokio::sync::mpsc::channel; 12 | 13 | use crate::time; 14 | #[cfg(test)] 15 | use mockito; 16 | 17 | lazy_static! { 18 | pub static ref CLIENT: Client = Client::new(); 19 | } 20 | 21 | #[derive(Deserialize, Debug)] 22 | pub struct Story { 23 | pub id: i64, 24 | by: String, 25 | descendants: i64, 26 | kids: Option>, 27 | score: i64, 28 | time: i64, 29 | pub title: String, 30 | r#type: String, 31 | pub url: Option, 32 | } 33 | 34 | impl Story { 35 | pub fn title_label(&self) -> String { 36 | let relative_date = time::get_relative_time(self.time, Utc::now().timestamp()); 37 | format!("{} ({})", self.title.as_str(), relative_date) 38 | } 39 | } 40 | 41 | /// Fetch top stories on Hacker News, 42 | /// Using /v0/topstories.json and /v0/item/{:id}.json endpoints. 43 | /// 44 | /// https://github.com/HackerNews/API 45 | /// 46 | /// # Examples 47 | /// ``` 48 | /// let stories = match fetch_top_stories(10) { 49 | /// Ok(res) => res, 50 | /// Err(e) => println!("{:#?}", e) 51 | /// } 52 | /// ``` 53 | pub fn fetch_top_stories(num: usize) -> Result, reqwest::Error> { 54 | #[cfg(not(test))] 55 | let hn_url = "https://hacker-news.firebaseio.com"; 56 | #[cfg(test)] 57 | let hn_url = &mockito::server_url(); 58 | 59 | let top_stories_url = format!("{}{}", hn_url, "/v0/topstories.json"); 60 | let mut vec: Vec = reqwest::get(top_stories_url.as_str())?.json()?; 61 | vec = if vec.len() <= num { 62 | vec 63 | } else { 64 | vec[0..num].to_vec() 65 | }; 66 | fetch_stories(vec) 67 | } 68 | 69 | fn fetch_stories(ids: Vec) -> Result, reqwest::Error> { 70 | if ids.is_empty() { 71 | return Ok(Vec::new()); 72 | } 73 | let mut core = Runtime::new().unwrap(); 74 | let (tx, rx) = channel(ids.len()); 75 | 76 | let num = ids.len(); 77 | let all = ids.into_iter().enumerate().map(move |(i, id)| { 78 | let mut tx = tx.clone(); 79 | fetch_story(id) 80 | .then(move |x| tx.try_send((i, x))) 81 | .map(|_| ()) 82 | .map_err(|e| println!("{:?}", e)) 83 | }); 84 | core.spawn(join_all(all).map(|_| ())); 85 | let mut stories = Vec::new(); 86 | match rx.take(num as u64).collect().wait() { 87 | Ok(mut x) => { 88 | x.sort_by(|a, b| { 89 | let (i1, _) = a; 90 | let (i2, _) = b; 91 | i1.cmp(i2) 92 | }); 93 | for s in x { 94 | let (_, story) = s; 95 | if let Ok(st) = story { 96 | stories.push(st) 97 | } 98 | } 99 | } 100 | Err(e) => eprintln!("{:?}", e), 101 | }; 102 | Ok(stories) 103 | } 104 | 105 | fn fetch_story(id: i64) -> impl Future { 106 | #[cfg(not(test))] 107 | let hn_url = "https://hacker-news.firebaseio.com"; 108 | #[cfg(test)] 109 | let hn_url = &mockito::server_url(); 110 | 111 | let url = format!("{}/v0/item/{}.json", hn_url, id); 112 | CLIENT 113 | .get(url.as_str()) 114 | .send() 115 | .and_then(move |mut res| res.json()) 116 | } 117 | 118 | #[cfg(test)] 119 | mod tests { 120 | use crate::hn::fetch_top_stories; 121 | use mockito::mock; 122 | 123 | #[test] 124 | fn test_fetch_top_stories1() { 125 | let _m1 = mock("GET", "/v0/topstories.json") 126 | .with_status(200) 127 | .with_header("content-type", "application/json") 128 | .with_body("[1]") 129 | .create(); 130 | 131 | let _m2 = mock("GET", "/v0/item/1.json") 132 | .with_status(200) 133 | .with_header("content-type", "application/json") 134 | .with_body("{\"by\":\"pg\",\"descendants\":15,\"id\":1,\"kids\":[15,234509,487171,454426,454424,454410,82729],\"score\":57,\"time\":1160418111,\"title\":\"Y Combinator\",\"type\":\"story\",\"url\":\"http://ycombinator.com\"}") 135 | .create(); 136 | 137 | assert!( 138 | fetch_top_stories(1).is_ok(), 139 | "fetch_top_stories should return top stories" 140 | ); 141 | let stories = fetch_top_stories(1); 142 | let story = &stories.unwrap()[0]; 143 | assert_eq!(story.by, String::from("pg")); 144 | assert_eq!(story.id, 1); 145 | } 146 | 147 | #[test] 148 | fn test_fetch_top_stories2() { 149 | let _m1 = mock("GET", "/v0/topstories.json").with_status(500).create(); 150 | 151 | assert!( 152 | fetch_top_stories(1).is_err(), 153 | "fetch_top_stories should return an error" 154 | ); 155 | } 156 | 157 | #[test] 158 | fn test_fetch_top_stories3() { 159 | let _m1 = mock("GET", "/v0/topstories.json") 160 | .with_status(200) 161 | .with_header("content-type", "application/json") 162 | .with_body("[1,2]") 163 | .create(); 164 | 165 | let _m2 = mock("GET", "/v0/item/1.json") 166 | .with_status(200) 167 | .with_header("content-type", "application/json") 168 | .with_body("{\"by\":\"pg\",\"descendants\":15,\"id\":1,\"kids\":[15,234509,487171,454426,454424,454410,82729],\"score\":57,\"time\":1160418111,\"title\":\"Y Combinator\",\"type\":\"story\",\"url\":\"http://ycombinator.com\"}") 169 | .create(); 170 | 171 | let _m3 = mock("GET", "/v0/item/2.json").with_status(500).create(); 172 | 173 | assert!( 174 | fetch_top_stories(5).is_ok(), 175 | "fetch_top_stories should return stories." 176 | ); 177 | let stories = fetch_top_stories(1); 178 | let story = &stories.unwrap()[0]; 179 | assert_eq!(story.by, String::from("pg")); 180 | assert_eq!(story.id, 1); 181 | } 182 | 183 | #[test] 184 | fn test_fetch_top_stories4() { 185 | let _m1 = mock("GET", "/v0/topstories.json") 186 | .with_status(200) 187 | .with_header("content-type", "application/json") 188 | .with_body("[]") 189 | .create(); 190 | assert!( 191 | fetch_top_stories(5).is_ok(), 192 | "fetch_top_stories should return stories." 193 | ); 194 | let stories = fetch_top_stories(1); 195 | assert_eq!(stories.unwrap().len(), 0); 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![allow(clippy::mutex_atomic)] 2 | #![feature(try_trait)] 3 | 4 | extern crate clap; 5 | extern crate termion; 6 | 7 | #[macro_use] 8 | extern crate lazy_static; 9 | 10 | use clap::{App as ClapApp, Arg}; 11 | use std::io::{stdin, stdout, Write}; 12 | use std::sync::mpsc::channel; 13 | use std::thread; 14 | use std::time::Duration; 15 | use termion::event::{Event, Key}; 16 | use termion::input::TermRead; 17 | use termion::raw::IntoRawMode; 18 | use termion::screen::AlternateScreen; 19 | use tui::backend::TermionBackend; 20 | use tui::Terminal; 21 | 22 | mod app; 23 | mod hn; 24 | mod time; 25 | mod ui; 26 | 27 | fn main() { 28 | let matches = ClapApp::new("hn") 29 | .version("0.0.1") 30 | .author("yayoc ") 31 | .about("CLI to browse Hacker News") 32 | .arg( 33 | Arg::with_name("number") 34 | .short("n") 35 | .long("number") 36 | .help("Sets a number of articles (defaults to 50)") 37 | .takes_value(true), 38 | ) 39 | .get_matches(); 40 | 41 | let stdin = stdin(); 42 | let mut stdout = AlternateScreen::from(stdout().into_raw_mode().unwrap()); 43 | stdout.flush().unwrap(); 44 | let backend = TermionBackend::new(stdout); 45 | let mut terminal = Terminal::new(backend).unwrap(); 46 | terminal.hide_cursor().unwrap(); 47 | 48 | let mut a = app::App::default(); 49 | a.start_loading(); 50 | ui::draw(&mut terminal, &a).unwrap(); 51 | 52 | let mut stories: Vec = Vec::new(); 53 | let num = matches 54 | .value_of("number") 55 | .unwrap_or("50") 56 | .parse() 57 | .unwrap_or(50); 58 | match hn::fetch_top_stories(num) { 59 | Ok(mut s) => stories.append(&mut s), 60 | Err(e) => println!("{:#?}", e), 61 | }; 62 | a.loaded(stories); 63 | 64 | let (tx, rx) = channel(); 65 | 66 | thread::spawn(move || { 67 | for c in stdin.events() { 68 | if let Ok(evt) = c { 69 | tx.send(evt).unwrap(); 70 | } 71 | } 72 | }); 73 | 74 | loop { 75 | ui::draw(&mut terminal, &a).unwrap(); 76 | if let Ok(evt) = rx.recv_timeout(Duration::from_millis(16)) { 77 | match evt { 78 | Event::Key(Key::Ctrl('c')) => { 79 | return; 80 | } 81 | Event::Key(Key::Up) => { 82 | a.cursor_up(); 83 | } 84 | Event::Key(Key::Char('k')) => { 85 | a.cursor_up(); 86 | } 87 | Event::Key(Key::Down) => { 88 | a.cursor_down(); 89 | } 90 | Event::Key(Key::Char('j')) => { 91 | a.cursor_down(); 92 | } 93 | Event::Key(Key::Char('\n')) => { 94 | a.open_browser(); 95 | } 96 | Event::Key(Key::Char('c')) => { 97 | a.open_comments(); 98 | } 99 | Event::Key(Key::Ctrl('d')) => { 100 | a.cursor_jump_down(); 101 | } 102 | Event::Key(Key::Ctrl('u')) => { 103 | a.cursor_jump_up(); 104 | } 105 | Event::Key(Key::Char('g')) => { 106 | a.cursor_jump_top(); 107 | } 108 | Event::Key(Key::Char('G')) => { 109 | a.cursor_jump_bottom(); 110 | } 111 | Event::Key(Key::Ctrl('r')) => { 112 | a.start_loading(); 113 | ui::draw(&mut terminal, &a).unwrap(); 114 | let mut stories: Vec = Vec::new(); 115 | match hn::fetch_top_stories(num) { 116 | Ok(mut s) => stories.append(&mut s), 117 | Err(e) => println!("{:#?}", e), 118 | }; 119 | a.loaded(stories); 120 | } 121 | _ => {} 122 | } 123 | } 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/time.rs: -------------------------------------------------------------------------------- 1 | extern crate time; 2 | 3 | use chrono::{TimeZone, Utc}; 4 | use time::Duration; 5 | 6 | /// Compare unixtime and get relative time label. 7 | /// t1 should be past time compared to t2. 8 | pub fn get_relative_time(t1: i64, t2: i64) -> String { 9 | let dt1 = Utc.timestamp(t1, 0).naive_local(); 10 | let dt2 = Utc.timestamp(t2, 0).naive_local(); 11 | let du: Duration = dt2.signed_duration_since(dt1); 12 | if du.num_weeks() > 0 { 13 | if du.num_weeks() == 1 { 14 | return String::from("a week ago"); 15 | } else { 16 | return format!("{} weeks ago", du.num_weeks()); 17 | } 18 | } else if du.num_days() > 0 { 19 | if du.num_days() == 1 { 20 | return String::from("a day ago"); 21 | } else { 22 | return format!("{} days ago", du.num_days()); 23 | } 24 | } else if du.num_hours() > 0 { 25 | if du.num_hours() == 1 { 26 | return String::from("an hour ago"); 27 | } else { 28 | return format!("{} hours ago", du.num_hours()); 29 | } 30 | } else if du.num_minutes() > 0 { 31 | if du.num_minutes() == 1 { 32 | return String::from("a minute ago"); 33 | } else { 34 | return format!("{} minutes ago", du.num_minutes()); 35 | } 36 | } 37 | if du.num_seconds() == 1 { 38 | String::from("a second ago") 39 | } else { 40 | format!("{} seconds ago", du.num_seconds()) 41 | } 42 | } 43 | 44 | #[cfg(test)] 45 | mod tests { 46 | use crate::time::get_relative_time; 47 | 48 | #[test] 49 | fn test_get_relative_time() { 50 | assert_eq!("a second ago", get_relative_time(1572737269, 1572737270)); 51 | assert_eq!("59 seconds ago", get_relative_time(1572737211, 1572737270)); 52 | assert_eq!("a minute ago", get_relative_time(1572737210, 1572737270)); 53 | assert_eq!("59 minutes ago", get_relative_time(1572733730, 1572737270)); 54 | assert_eq!("an hour ago", get_relative_time(1572733670, 1572737270)); 55 | assert_eq!("2 hours ago", get_relative_time(1572730070, 1572737270)); 56 | assert_eq!("23 hours ago", get_relative_time(1572654470, 1572737270)); 57 | assert_eq!("a day ago", get_relative_time(1572650870, 1572737270)); 58 | assert_eq!("2 days ago", get_relative_time(1572564470, 1572737270)); 59 | assert_eq!("6 days ago", get_relative_time(1572218870, 1572737270)); 60 | assert_eq!("a week ago", get_relative_time(1572132470, 1572737270)); 61 | assert_eq!("2 weeks ago", get_relative_time(1571527670, 1572737270)); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/ui.rs: -------------------------------------------------------------------------------- 1 | use std::io; 2 | 3 | use crate::app; 4 | use tui::backend::Backend; 5 | use tui::layout::{Constraint, Direction, Layout, Rect}; 6 | use tui::style::{Color, Modifier, Style}; 7 | use tui::widgets::{Block, Borders, Paragraph, SelectableList, Text, Widget}; 8 | use tui::{Frame, Terminal}; 9 | 10 | pub fn draw(terminal: &mut Terminal, app: &app::App) -> Result<(), io::Error> { 11 | terminal.draw(|mut f| { 12 | let chunks = Layout::default() 13 | .constraints([Constraint::Percentage(100)].as_ref()) 14 | .split(f.size()); 15 | if app.is_loading { 16 | draw_loading(&mut f, chunks[0]); 17 | return; 18 | } 19 | if app.stories.is_empty() { 20 | draw_empty(&mut f, chunks[0]); 21 | } else { 22 | draw_list(&mut f, app, chunks[0]); 23 | } 24 | }) 25 | } 26 | 27 | fn draw_loading(f: &mut Frame, area: Rect) 28 | where 29 | B: Backend, 30 | { 31 | let text = [Text::raw("Loading...")]; 32 | Paragraph::new(text.iter()).wrap(true).render(f, area); 33 | } 34 | 35 | fn draw_empty(f: &mut Frame, area: Rect) 36 | where 37 | B: Backend, 38 | { 39 | let text = [Text::raw( 40 | "Oops, No article. Please try to reload with CTRL+r", 41 | )]; 42 | Paragraph::new(text.iter()).wrap(true).render(f, area); 43 | } 44 | 45 | fn draw_list(f: &mut Frame, app: &app::App, area: Rect) 46 | where 47 | B: Backend, 48 | { 49 | let chunks = Layout::default() 50 | .direction(Direction::Horizontal) 51 | .constraints([Constraint::Percentage(80)].as_ref()) 52 | .split(area); 53 | let style = Style::default().fg(Color::White); 54 | let items: Vec = app.stories.iter().map(|s| s.title_label()).collect(); 55 | 56 | SelectableList::default() 57 | .block( 58 | Block::default() 59 | .borders(Borders::ALL) 60 | .title("HN Top Stories"), 61 | ) 62 | .items(&items) 63 | .select(Option::from(app.cur_index)) 64 | .style(style) 65 | .highlight_style(style.fg(Color::LightGreen).modifier(Modifier::BOLD)) 66 | .highlight_symbol(">") 67 | .render(f, chunks[0]); 68 | } 69 | --------------------------------------------------------------------------------