├── .editorconfig ├── .github └── workflows │ └── rust.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── bors.toml ├── sample-graph.png └── src ├── add.rs ├── error.rs ├── graph.rs ├── main.rs ├── manifest.rs ├── metadata.rs ├── registry.rs └── runtime.rs /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | charset = utf-8 6 | trim_trailing_whitespace = true 7 | insert_final_newline = true 8 | indent_style = space 9 | indent_size = 4 10 | 11 | [*.rs] 12 | indent_style = space 13 | indent_size = 4 14 | 15 | [*.toml] 16 | indent_style = space 17 | indent_size = 4 18 | 19 | [*.md] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: rust 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ${{ matrix.os }} 8 | strategy: 9 | matrix: 10 | os: [ubuntu-latest, windows-latest, macOS-latest] 11 | rust: [stable, nightly] 12 | 13 | steps: 14 | - uses: hecrj/setup-rust-action@v1 15 | with: 16 | rust-version: ${{ matrix.rust }} 17 | components: rustfmt, clippy 18 | - uses: actions/checkout@master 19 | - name: Check Formatting 20 | run: cargo fmt -- --check 21 | #- name: Lint 22 | # run: cargo clippy -- -D warnings 23 | - name: Build 24 | run: cargo build --verbose 25 | - name: Run tests 26 | run: cargo test --verbose 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | Cargo.lock 4 | .DS_Store 5 | graph.png 6 | .vscode 7 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "Inflector" 5 | version = "0.11.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | dependencies = [ 8 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 9 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 10 | ] 11 | 12 | [[package]] 13 | name = "aho-corasick" 14 | version = "0.7.6" 15 | source = "registry+https://github.com/rust-lang/crates.io-index" 16 | dependencies = [ 17 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 18 | ] 19 | 20 | [[package]] 21 | name = "ansi_term" 22 | version = "0.11.0" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | dependencies = [ 25 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 26 | ] 27 | 28 | [[package]] 29 | name = "anyhow" 30 | version = "1.0.26" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | 33 | [[package]] 34 | name = "arrayref" 35 | version = "0.3.5" 36 | source = "registry+https://github.com/rust-lang/crates.io-index" 37 | 38 | [[package]] 39 | name = "arrayvec" 40 | version = "0.4.12" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | dependencies = [ 43 | "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 44 | ] 45 | 46 | [[package]] 47 | name = "ascii" 48 | version = "0.9.3" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | 51 | [[package]] 52 | name = "atty" 53 | version = "0.2.13" 54 | source = "registry+https://github.com/rust-lang/crates.io-index" 55 | dependencies = [ 56 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 57 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 58 | ] 59 | 60 | [[package]] 61 | name = "autocfg" 62 | version = "0.1.6" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | 65 | [[package]] 66 | name = "backtrace" 67 | version = "0.3.40" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | dependencies = [ 70 | "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 71 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 72 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 74 | ] 75 | 76 | [[package]] 77 | name = "backtrace-sys" 78 | version = "0.1.32" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | dependencies = [ 81 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 83 | ] 84 | 85 | [[package]] 86 | name = "base64" 87 | version = "0.10.1" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | dependencies = [ 90 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 91 | ] 92 | 93 | [[package]] 94 | name = "base64" 95 | version = "0.11.0" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | 98 | [[package]] 99 | name = "bitflags" 100 | version = "1.2.1" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | 103 | [[package]] 104 | name = "blake2b_simd" 105 | version = "0.5.8" 106 | source = "registry+https://github.com/rust-lang/crates.io-index" 107 | dependencies = [ 108 | "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 109 | "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 110 | "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 111 | ] 112 | 113 | [[package]] 114 | name = "bumpalo" 115 | version = "3.2.0" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | 118 | [[package]] 119 | name = "byteorder" 120 | version = "1.3.2" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | 123 | [[package]] 124 | name = "bytes" 125 | version = "0.5.4" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | 128 | [[package]] 129 | name = "c2-chacha" 130 | version = "0.2.2" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | dependencies = [ 133 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 134 | "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 135 | ] 136 | 137 | [[package]] 138 | name = "cargo-deps" 139 | version = "1.4.1" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | dependencies = [ 142 | "structopt 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 143 | "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 144 | ] 145 | 146 | [[package]] 147 | name = "cargo-edit" 148 | version = "0.5.0" 149 | source = "registry+https://github.com/rust-lang/crates.io-index" 150 | dependencies = [ 151 | "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 152 | "cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 153 | "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 154 | "env_proxy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 155 | "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 156 | "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 157 | "git2 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 158 | "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 159 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 160 | "reqwest 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", 161 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 162 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 163 | "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 164 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 165 | "structopt 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 166 | "subprocess 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 168 | "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 169 | "toml_edit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 170 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 171 | ] 172 | 173 | [[package]] 174 | name = "cargo_metadata" 175 | version = "0.9.0" 176 | source = "registry+https://github.com/rust-lang/crates.io-index" 177 | dependencies = [ 178 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 179 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 181 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 182 | ] 183 | 184 | [[package]] 185 | name = "cc" 186 | version = "1.0.46" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | dependencies = [ 189 | "jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 191 | ] 192 | 193 | [[package]] 194 | name = "cfg-if" 195 | version = "0.1.10" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | 198 | [[package]] 199 | name = "chrono" 200 | version = "0.4.9" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | dependencies = [ 203 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 207 | ] 208 | 209 | [[package]] 210 | name = "clap" 211 | version = "2.33.0" 212 | source = "registry+https://github.com/rust-lang/crates.io-index" 213 | dependencies = [ 214 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 215 | "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 221 | ] 222 | 223 | [[package]] 224 | name = "cloudabi" 225 | version = "0.0.3" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | dependencies = [ 228 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 229 | ] 230 | 231 | [[package]] 232 | name = "combine" 233 | version = "3.8.1" 234 | source = "registry+https://github.com/rust-lang/crates.io-index" 235 | dependencies = [ 236 | "ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 237 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 238 | "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 239 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 240 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 241 | ] 242 | 243 | [[package]] 244 | name = "constant_time_eq" 245 | version = "0.1.4" 246 | source = "registry+https://github.com/rust-lang/crates.io-index" 247 | 248 | [[package]] 249 | name = "core-foundation" 250 | version = "0.6.4" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | dependencies = [ 253 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 254 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 255 | ] 256 | 257 | [[package]] 258 | name = "core-foundation-sys" 259 | version = "0.6.2" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | 262 | [[package]] 263 | name = "crossbeam-utils" 264 | version = "0.5.0" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | 267 | [[package]] 268 | name = "crossbeam-utils" 269 | version = "0.6.6" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | dependencies = [ 272 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 273 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 274 | ] 275 | 276 | [[package]] 277 | name = "dirs" 278 | version = "2.0.2" 279 | source = "registry+https://github.com/rust-lang/crates.io-index" 280 | dependencies = [ 281 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 282 | "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 283 | ] 284 | 285 | [[package]] 286 | name = "dirs-sys" 287 | version = "0.3.4" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | dependencies = [ 290 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 291 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 292 | "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 293 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 294 | ] 295 | 296 | [[package]] 297 | name = "dtoa" 298 | version = "0.4.4" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | 301 | [[package]] 302 | name = "either" 303 | version = "1.5.3" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | 306 | [[package]] 307 | name = "encoding_rs" 308 | version = "0.8.20" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | dependencies = [ 311 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 312 | ] 313 | 314 | [[package]] 315 | name = "env_logger" 316 | version = "0.7.1" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | dependencies = [ 319 | "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 320 | "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 321 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 322 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 323 | "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 324 | ] 325 | 326 | [[package]] 327 | name = "env_proxy" 328 | version = "0.4.0" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | dependencies = [ 331 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 332 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 333 | ] 334 | 335 | [[package]] 336 | name = "error-chain" 337 | version = "0.12.1" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | dependencies = [ 340 | "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", 341 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 342 | ] 343 | 344 | [[package]] 345 | name = "failure" 346 | version = "0.1.6" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | dependencies = [ 349 | "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", 350 | "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 351 | ] 352 | 353 | [[package]] 354 | name = "failure_derive" 355 | version = "0.1.6" 356 | source = "registry+https://github.com/rust-lang/crates.io-index" 357 | dependencies = [ 358 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 359 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 360 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 362 | ] 363 | 364 | [[package]] 365 | name = "fnv" 366 | version = "1.0.6" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | 369 | [[package]] 370 | name = "foreign-types" 371 | version = "0.3.2" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | dependencies = [ 374 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 375 | ] 376 | 377 | [[package]] 378 | name = "foreign-types-shared" 379 | version = "0.1.1" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | 382 | [[package]] 383 | name = "fuchsia-cprng" 384 | version = "0.1.1" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | 387 | [[package]] 388 | name = "fuchsia-zircon" 389 | version = "0.3.3" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | dependencies = [ 392 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 393 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 394 | ] 395 | 396 | [[package]] 397 | name = "fuchsia-zircon-sys" 398 | version = "0.3.3" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | 401 | [[package]] 402 | name = "futures-channel" 403 | version = "0.3.4" 404 | source = "registry+https://github.com/rust-lang/crates.io-index" 405 | dependencies = [ 406 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 407 | ] 408 | 409 | [[package]] 410 | name = "futures-core" 411 | version = "0.3.4" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | 414 | [[package]] 415 | name = "futures-io" 416 | version = "0.3.4" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | 419 | [[package]] 420 | name = "futures-sink" 421 | version = "0.3.4" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | 424 | [[package]] 425 | name = "futures-task" 426 | version = "0.3.4" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | 429 | [[package]] 430 | name = "futures-util" 431 | version = "0.3.4" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | dependencies = [ 434 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 435 | "futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 436 | "futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 437 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 438 | "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", 439 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 440 | ] 441 | 442 | [[package]] 443 | name = "getrandom" 444 | version = "0.1.12" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | dependencies = [ 447 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 448 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 449 | "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 450 | ] 451 | 452 | [[package]] 453 | name = "git2" 454 | version = "0.11.0" 455 | source = "registry+https://github.com/rust-lang/crates.io-index" 456 | dependencies = [ 457 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 458 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 459 | "libgit2-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 460 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 461 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 462 | "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", 463 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 464 | ] 465 | 466 | [[package]] 467 | name = "h2" 468 | version = "0.2.1" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | dependencies = [ 471 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 473 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 474 | "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 475 | "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 476 | "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 477 | "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 478 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 479 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 480 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 481 | "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 482 | ] 483 | 484 | [[package]] 485 | name = "heck" 486 | version = "0.3.1" 487 | source = "registry+https://github.com/rust-lang/crates.io-index" 488 | dependencies = [ 489 | "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 490 | ] 491 | 492 | [[package]] 493 | name = "hex" 494 | version = "0.4.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | 497 | [[package]] 498 | name = "http" 499 | version = "0.2.0" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | dependencies = [ 502 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 503 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 505 | ] 506 | 507 | [[package]] 508 | name = "http-body" 509 | version = "0.3.1" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | dependencies = [ 512 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 514 | ] 515 | 516 | [[package]] 517 | name = "httparse" 518 | version = "1.3.4" 519 | source = "registry+https://github.com/rust-lang/crates.io-index" 520 | 521 | [[package]] 522 | name = "humantime" 523 | version = "1.3.0" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | dependencies = [ 526 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 527 | ] 528 | 529 | [[package]] 530 | name = "hyper" 531 | version = "0.13.2" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | dependencies = [ 534 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 536 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 537 | "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 538 | "h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 539 | "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 541 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 542 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 543 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 545 | "pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 546 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 547 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 548 | "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 549 | "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 550 | ] 551 | 552 | [[package]] 553 | name = "hyper-tls" 554 | version = "0.4.1" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | dependencies = [ 557 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 558 | "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", 559 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 560 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 561 | "tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 562 | ] 563 | 564 | [[package]] 565 | name = "idna" 566 | version = "0.2.0" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | dependencies = [ 569 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 570 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 571 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 572 | ] 573 | 574 | [[package]] 575 | name = "indexmap" 576 | version = "1.3.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | dependencies = [ 579 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 580 | ] 581 | 582 | [[package]] 583 | name = "iovec" 584 | version = "0.1.4" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | dependencies = [ 587 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 588 | ] 589 | 590 | [[package]] 591 | name = "itoa" 592 | version = "0.4.4" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | 595 | [[package]] 596 | name = "jobserver" 597 | version = "0.1.17" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | dependencies = [ 600 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 602 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 603 | ] 604 | 605 | [[package]] 606 | name = "js-sys" 607 | version = "0.3.35" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | dependencies = [ 610 | "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 611 | ] 612 | 613 | [[package]] 614 | name = "kernel32-sys" 615 | version = "0.2.2" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | dependencies = [ 618 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 619 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 620 | ] 621 | 622 | [[package]] 623 | name = "lazy_static" 624 | version = "1.4.0" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | 627 | [[package]] 628 | name = "libc" 629 | version = "0.2.65" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | 632 | [[package]] 633 | name = "libgit2-sys" 634 | version = "0.10.0" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | dependencies = [ 637 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 638 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 639 | "libssh2-sys 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 640 | "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", 642 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 643 | ] 644 | 645 | [[package]] 646 | name = "libssh2-sys" 647 | version = "0.2.13" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | dependencies = [ 650 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 651 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 652 | "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", 653 | "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", 654 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 655 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 656 | ] 657 | 658 | [[package]] 659 | name = "libz-sys" 660 | version = "1.0.25" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | dependencies = [ 663 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 664 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 665 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 666 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 667 | ] 668 | 669 | [[package]] 670 | name = "linked-hash-map" 671 | version = "0.5.2" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | 674 | [[package]] 675 | name = "log" 676 | version = "0.4.8" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | dependencies = [ 679 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 680 | ] 681 | 682 | [[package]] 683 | name = "matches" 684 | version = "0.1.8" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | 687 | [[package]] 688 | name = "memchr" 689 | version = "2.2.1" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | 692 | [[package]] 693 | name = "mime" 694 | version = "0.3.14" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | 697 | [[package]] 698 | name = "mime_guess" 699 | version = "2.0.1" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | dependencies = [ 702 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 703 | "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 704 | ] 705 | 706 | [[package]] 707 | name = "mio" 708 | version = "0.6.21" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | dependencies = [ 711 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 712 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 713 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 714 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 715 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 716 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 717 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 718 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 719 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 720 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 721 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 722 | ] 723 | 724 | [[package]] 725 | name = "miow" 726 | version = "0.2.1" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | dependencies = [ 729 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 730 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 731 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 732 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 733 | ] 734 | 735 | [[package]] 736 | name = "native-tls" 737 | version = "0.2.3" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | dependencies = [ 740 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 741 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 742 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 743 | "openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)", 744 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 745 | "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", 746 | "schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 747 | "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 748 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 749 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 750 | ] 751 | 752 | [[package]] 753 | name = "net2" 754 | version = "0.2.33" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | dependencies = [ 757 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 758 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 759 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 760 | ] 761 | 762 | [[package]] 763 | name = "nodrop" 764 | version = "0.1.14" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | 767 | [[package]] 768 | name = "nom" 769 | version = "4.2.3" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | dependencies = [ 772 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 774 | ] 775 | 776 | [[package]] 777 | name = "num-integer" 778 | version = "0.1.41" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | dependencies = [ 781 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 782 | "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 783 | ] 784 | 785 | [[package]] 786 | name = "num-traits" 787 | version = "0.2.8" 788 | source = "registry+https://github.com/rust-lang/crates.io-index" 789 | dependencies = [ 790 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 791 | ] 792 | 793 | [[package]] 794 | name = "num_cpus" 795 | version = "1.10.1" 796 | source = "registry+https://github.com/rust-lang/crates.io-index" 797 | dependencies = [ 798 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 799 | ] 800 | 801 | [[package]] 802 | name = "openssl" 803 | version = "0.10.25" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | dependencies = [ 806 | "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 807 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 808 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 809 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 810 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 811 | "openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)", 812 | ] 813 | 814 | [[package]] 815 | name = "openssl-probe" 816 | version = "0.1.2" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | 819 | [[package]] 820 | name = "openssl-sys" 821 | version = "0.9.52" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | dependencies = [ 824 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 825 | "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)", 826 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 827 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 828 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 829 | ] 830 | 831 | [[package]] 832 | name = "percent-encoding" 833 | version = "2.1.0" 834 | source = "registry+https://github.com/rust-lang/crates.io-index" 835 | 836 | [[package]] 837 | name = "pin-project" 838 | version = "0.4.8" 839 | source = "registry+https://github.com/rust-lang/crates.io-index" 840 | dependencies = [ 841 | "pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 842 | ] 843 | 844 | [[package]] 845 | name = "pin-project-internal" 846 | version = "0.4.8" 847 | source = "registry+https://github.com/rust-lang/crates.io-index" 848 | dependencies = [ 849 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 850 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 852 | ] 853 | 854 | [[package]] 855 | name = "pin-project-lite" 856 | version = "0.1.4" 857 | source = "registry+https://github.com/rust-lang/crates.io-index" 858 | 859 | [[package]] 860 | name = "pin-utils" 861 | version = "0.1.0-alpha.4" 862 | source = "registry+https://github.com/rust-lang/crates.io-index" 863 | 864 | [[package]] 865 | name = "pkg-config" 866 | version = "0.3.16" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | 869 | [[package]] 870 | name = "ppv-lite86" 871 | version = "0.2.5" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | 874 | [[package]] 875 | name = "proc-macro-error" 876 | version = "0.2.6" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | dependencies = [ 879 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 880 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 881 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 882 | ] 883 | 884 | [[package]] 885 | name = "proc-macro2" 886 | version = "1.0.6" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | dependencies = [ 889 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 890 | ] 891 | 892 | [[package]] 893 | name = "quick-error" 894 | version = "1.2.2" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | 897 | [[package]] 898 | name = "quote" 899 | version = "1.0.2" 900 | source = "registry+https://github.com/rust-lang/crates.io-index" 901 | dependencies = [ 902 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 903 | ] 904 | 905 | [[package]] 906 | name = "rand" 907 | version = "0.7.2" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | dependencies = [ 910 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 911 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 912 | "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 913 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 914 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 915 | ] 916 | 917 | [[package]] 918 | name = "rand_chacha" 919 | version = "0.2.1" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | dependencies = [ 922 | "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 923 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 924 | ] 925 | 926 | [[package]] 927 | name = "rand_core" 928 | version = "0.3.1" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | dependencies = [ 931 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 932 | ] 933 | 934 | [[package]] 935 | name = "rand_core" 936 | version = "0.4.2" 937 | source = "registry+https://github.com/rust-lang/crates.io-index" 938 | 939 | [[package]] 940 | name = "rand_core" 941 | version = "0.5.1" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | dependencies = [ 944 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 945 | ] 946 | 947 | [[package]] 948 | name = "rand_hc" 949 | version = "0.2.0" 950 | source = "registry+https://github.com/rust-lang/crates.io-index" 951 | dependencies = [ 952 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 953 | ] 954 | 955 | [[package]] 956 | name = "rand_os" 957 | version = "0.1.3" 958 | source = "registry+https://github.com/rust-lang/crates.io-index" 959 | dependencies = [ 960 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 961 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 962 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 963 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 964 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 965 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 966 | ] 967 | 968 | [[package]] 969 | name = "rdrand" 970 | version = "0.4.0" 971 | source = "registry+https://github.com/rust-lang/crates.io-index" 972 | dependencies = [ 973 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 974 | ] 975 | 976 | [[package]] 977 | name = "redox_syscall" 978 | version = "0.1.56" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | 981 | [[package]] 982 | name = "redox_users" 983 | version = "0.3.1" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | dependencies = [ 986 | "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 987 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 988 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 989 | "rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 990 | ] 991 | 992 | [[package]] 993 | name = "regex" 994 | version = "1.3.1" 995 | source = "registry+https://github.com/rust-lang/crates.io-index" 996 | dependencies = [ 997 | "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", 998 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 999 | "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1000 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "regex-syntax" 1005 | version = "0.6.12" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | 1008 | [[package]] 1009 | name = "remove_dir_all" 1010 | version = "0.5.2" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | dependencies = [ 1013 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "reqwest" 1018 | version = "0.10.3" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | dependencies = [ 1021 | "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 1022 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | "encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", 1024 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1025 | "futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | "http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | "hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", 1029 | "hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1030 | "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", 1031 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1032 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1033 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 1034 | "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1035 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1036 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1037 | "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1038 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1039 | "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 1040 | "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 1041 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 1042 | "tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 1043 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1044 | "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1045 | "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1046 | "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", 1047 | "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1048 | ] 1049 | 1050 | [[package]] 1051 | name = "rust-argon2" 1052 | version = "0.5.1" 1053 | source = "registry+https://github.com/rust-lang/crates.io-index" 1054 | dependencies = [ 1055 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1056 | "blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", 1057 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "rustc-demangle" 1062 | version = "0.1.16" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | 1065 | [[package]] 1066 | name = "ryu" 1067 | version = "1.0.2" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | 1070 | [[package]] 1071 | name = "schannel" 1072 | version = "0.1.16" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | dependencies = [ 1075 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1076 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1077 | ] 1078 | 1079 | [[package]] 1080 | name = "security-framework" 1081 | version = "0.3.1" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | dependencies = [ 1084 | "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1085 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1087 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "security-framework-sys" 1092 | version = "0.3.1" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | dependencies = [ 1095 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1096 | ] 1097 | 1098 | [[package]] 1099 | name = "semver" 1100 | version = "0.9.0" 1101 | source = "registry+https://github.com/rust-lang/crates.io-index" 1102 | dependencies = [ 1103 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1104 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1105 | ] 1106 | 1107 | [[package]] 1108 | name = "semver-parser" 1109 | version = "0.7.0" 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" 1111 | 1112 | [[package]] 1113 | name = "serde" 1114 | version = "1.0.102" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | dependencies = [ 1117 | "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1118 | ] 1119 | 1120 | [[package]] 1121 | name = "serde_derive" 1122 | version = "1.0.102" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | dependencies = [ 1125 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1126 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1127 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1128 | ] 1129 | 1130 | [[package]] 1131 | name = "serde_json" 1132 | version = "1.0.41" 1133 | source = "registry+https://github.com/rust-lang/crates.io-index" 1134 | dependencies = [ 1135 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1136 | "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1137 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1138 | ] 1139 | 1140 | [[package]] 1141 | name = "serde_urlencoded" 1142 | version = "0.6.1" 1143 | source = "registry+https://github.com/rust-lang/crates.io-index" 1144 | dependencies = [ 1145 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1146 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1147 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1148 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1149 | ] 1150 | 1151 | [[package]] 1152 | name = "slab" 1153 | version = "0.4.2" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | 1156 | [[package]] 1157 | name = "smallvec" 1158 | version = "0.6.10" 1159 | source = "registry+https://github.com/rust-lang/crates.io-index" 1160 | 1161 | [[package]] 1162 | name = "sourcefile" 1163 | version = "0.1.4" 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" 1165 | 1166 | [[package]] 1167 | name = "strsim" 1168 | version = "0.8.0" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | 1171 | [[package]] 1172 | name = "structopt" 1173 | version = "0.3.3" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | dependencies = [ 1176 | "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 1177 | "structopt-derive 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1178 | ] 1179 | 1180 | [[package]] 1181 | name = "structopt-derive" 1182 | version = "0.3.3" 1183 | source = "registry+https://github.com/rust-lang/crates.io-index" 1184 | dependencies = [ 1185 | "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1186 | "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 1187 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1188 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1189 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "subprocess" 1194 | version = "0.1.18" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | dependencies = [ 1197 | "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1198 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1199 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1200 | ] 1201 | 1202 | [[package]] 1203 | name = "substrate-deps" 1204 | version = "0.2.0" 1205 | dependencies = [ 1206 | "Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)", 1207 | "cargo-deps 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1208 | "cargo-edit 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", 1210 | "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1211 | "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1212 | "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1213 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1214 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1215 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1216 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1217 | "toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1218 | "toml_edit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | ] 1221 | 1222 | [[package]] 1223 | name = "syn" 1224 | version = "1.0.5" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | dependencies = [ 1227 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1228 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1229 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1230 | ] 1231 | 1232 | [[package]] 1233 | name = "synstructure" 1234 | version = "0.12.1" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | dependencies = [ 1237 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1238 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1239 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1240 | "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "tempfile" 1245 | version = "3.1.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | dependencies = [ 1248 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1249 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1250 | "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1251 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1252 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1253 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1254 | ] 1255 | 1256 | [[package]] 1257 | name = "termcolor" 1258 | version = "1.1.0" 1259 | source = "registry+https://github.com/rust-lang/crates.io-index" 1260 | dependencies = [ 1261 | "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1262 | ] 1263 | 1264 | [[package]] 1265 | name = "textwrap" 1266 | version = "0.11.0" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | dependencies = [ 1269 | "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1270 | ] 1271 | 1272 | [[package]] 1273 | name = "thread_local" 1274 | version = "0.3.6" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | dependencies = [ 1277 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1278 | ] 1279 | 1280 | [[package]] 1281 | name = "time" 1282 | version = "0.1.42" 1283 | source = "registry+https://github.com/rust-lang/crates.io-index" 1284 | dependencies = [ 1285 | "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", 1286 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1287 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1288 | ] 1289 | 1290 | [[package]] 1291 | name = "tokio" 1292 | version = "0.2.13" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | dependencies = [ 1295 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 1296 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1297 | "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1298 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1299 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1300 | "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", 1301 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1302 | "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1303 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1304 | ] 1305 | 1306 | [[package]] 1307 | name = "tokio-tls" 1308 | version = "0.3.0" 1309 | source = "registry+https://github.com/rust-lang/crates.io-index" 1310 | dependencies = [ 1311 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1312 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 1313 | ] 1314 | 1315 | [[package]] 1316 | name = "tokio-util" 1317 | version = "0.2.0" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | dependencies = [ 1320 | "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 1321 | "futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1322 | "futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1323 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1324 | "pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1325 | "tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 1326 | ] 1327 | 1328 | [[package]] 1329 | name = "toml" 1330 | version = "0.5.3" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | dependencies = [ 1333 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "toml_edit" 1338 | version = "0.1.5" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | dependencies = [ 1341 | "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", 1342 | "combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 1343 | "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "tower-service" 1348 | version = "0.3.0" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | 1351 | [[package]] 1352 | name = "try-lock" 1353 | version = "0.2.2" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | 1356 | [[package]] 1357 | name = "unicase" 1358 | version = "2.5.1" 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" 1360 | dependencies = [ 1361 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "unicode-bidi" 1366 | version = "0.3.4" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | dependencies = [ 1369 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "unicode-normalization" 1374 | version = "0.1.8" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | dependencies = [ 1377 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1378 | ] 1379 | 1380 | [[package]] 1381 | name = "unicode-segmentation" 1382 | version = "1.3.0" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | 1385 | [[package]] 1386 | name = "unicode-width" 1387 | version = "0.1.6" 1388 | source = "registry+https://github.com/rust-lang/crates.io-index" 1389 | 1390 | [[package]] 1391 | name = "unicode-xid" 1392 | version = "0.2.0" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | 1395 | [[package]] 1396 | name = "unreachable" 1397 | version = "1.0.0" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | dependencies = [ 1400 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "url" 1405 | version = "2.1.0" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | dependencies = [ 1408 | "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1409 | "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1410 | "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1411 | ] 1412 | 1413 | [[package]] 1414 | name = "vcpkg" 1415 | version = "0.2.7" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | 1418 | [[package]] 1419 | name = "vec_map" 1420 | version = "0.8.1" 1421 | source = "registry+https://github.com/rust-lang/crates.io-index" 1422 | 1423 | [[package]] 1424 | name = "version_check" 1425 | version = "0.1.5" 1426 | source = "registry+https://github.com/rust-lang/crates.io-index" 1427 | 1428 | [[package]] 1429 | name = "void" 1430 | version = "1.0.2" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | 1433 | [[package]] 1434 | name = "want" 1435 | version = "0.3.0" 1436 | source = "registry+https://github.com/rust-lang/crates.io-index" 1437 | dependencies = [ 1438 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1439 | "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1440 | ] 1441 | 1442 | [[package]] 1443 | name = "wasi" 1444 | version = "0.7.0" 1445 | source = "registry+https://github.com/rust-lang/crates.io-index" 1446 | 1447 | [[package]] 1448 | name = "wasm-bindgen" 1449 | version = "0.2.58" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | dependencies = [ 1452 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1453 | "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", 1454 | "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", 1455 | "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1456 | ] 1457 | 1458 | [[package]] 1459 | name = "wasm-bindgen-backend" 1460 | version = "0.2.58" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | dependencies = [ 1463 | "bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1464 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1465 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1466 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1467 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1468 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1469 | "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "wasm-bindgen-futures" 1474 | version = "0.4.8" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | dependencies = [ 1477 | "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1478 | "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", 1479 | "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1480 | "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "wasm-bindgen-macro" 1485 | version = "0.2.58" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | dependencies = [ 1488 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1489 | "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "wasm-bindgen-macro-support" 1494 | version = "0.2.58" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | dependencies = [ 1497 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1498 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1499 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1500 | "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1501 | "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1502 | ] 1503 | 1504 | [[package]] 1505 | name = "wasm-bindgen-shared" 1506 | version = "0.2.58" 1507 | source = "registry+https://github.com/rust-lang/crates.io-index" 1508 | 1509 | [[package]] 1510 | name = "wasm-bindgen-webidl" 1511 | version = "0.2.58" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | dependencies = [ 1514 | "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", 1515 | "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1516 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1517 | "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1518 | "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1519 | "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1520 | "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1521 | "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", 1522 | ] 1523 | 1524 | [[package]] 1525 | name = "web-sys" 1526 | version = "0.3.35" 1527 | source = "registry+https://github.com/rust-lang/crates.io-index" 1528 | dependencies = [ 1529 | "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", 1530 | "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", 1531 | "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1532 | "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1533 | "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", 1534 | ] 1535 | 1536 | [[package]] 1537 | name = "weedle" 1538 | version = "0.10.0" 1539 | source = "registry+https://github.com/rust-lang/crates.io-index" 1540 | dependencies = [ 1541 | "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1542 | ] 1543 | 1544 | [[package]] 1545 | name = "winapi" 1546 | version = "0.2.8" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | 1549 | [[package]] 1550 | name = "winapi" 1551 | version = "0.3.8" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | dependencies = [ 1554 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1555 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1556 | ] 1557 | 1558 | [[package]] 1559 | name = "winapi-build" 1560 | version = "0.1.1" 1561 | source = "registry+https://github.com/rust-lang/crates.io-index" 1562 | 1563 | [[package]] 1564 | name = "winapi-i686-pc-windows-gnu" 1565 | version = "0.4.0" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | 1568 | [[package]] 1569 | name = "winapi-util" 1570 | version = "0.1.3" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | dependencies = [ 1573 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "winapi-x86_64-pc-windows-gnu" 1578 | version = "0.4.0" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | 1581 | [[package]] 1582 | name = "winreg" 1583 | version = "0.6.2" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | dependencies = [ 1586 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1587 | ] 1588 | 1589 | [[package]] 1590 | name = "ws2_32-sys" 1591 | version = "0.2.1" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | dependencies = [ 1594 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1595 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1596 | ] 1597 | 1598 | [metadata] 1599 | "checksum Inflector 0.11.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 1600 | "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 1601 | "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 1602 | "checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" 1603 | "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" 1604 | "checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" 1605 | "checksum ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" 1606 | "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 1607 | "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" 1608 | "checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" 1609 | "checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" 1610 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 1611 | "checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" 1612 | "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 1613 | "checksum blake2b_simd 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "5850aeee1552f495dd0250014cf64b82b7c8879a89d83b33bbdace2cc4f63182" 1614 | "checksum bumpalo 3.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f359dc14ff8911330a51ef78022d376f25ed00248912803b58f00cb1c27f742" 1615 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1616 | "checksum bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" 1617 | "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 1618 | "checksum cargo-deps 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "85c3bb633b5569c40a712c1ef88d8025b3bb53ac90946ff80ebbfc5a1d324dc4" 1619 | "checksum cargo-edit 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a494f4c79d34de5652a6385e8e207832bcb00e4a499e1c5183396bf3d71f5c7f" 1620 | "checksum cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d2d1617e838936c0d2323a65cc151e03ae19a7678dd24f72bccf27119b90a5d" 1621 | "checksum cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "0213d356d3c4ea2c18c40b037c3be23cd639825c18f25ee670ac7813beeef99c" 1622 | "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 1623 | "checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" 1624 | "checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" 1625 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1626 | "checksum combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" 1627 | "checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" 1628 | "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 1629 | "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 1630 | "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" 1631 | "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" 1632 | "checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" 1633 | "checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" 1634 | "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 1635 | "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" 1636 | "checksum encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" 1637 | "checksum env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" 1638 | "checksum env_proxy 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8731da06ff3731a69115a2910345ae5ee8d1fe09c846a9eca101b444a30ad454" 1639 | "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" 1640 | "checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" 1641 | "checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" 1642 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1643 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1644 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1645 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1646 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1647 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1648 | "checksum futures-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8" 1649 | "checksum futures-core 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" 1650 | "checksum futures-io 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6" 1651 | "checksum futures-sink 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6" 1652 | "checksum futures-task 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" 1653 | "checksum futures-util 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" 1654 | "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" 1655 | "checksum git2 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "77519ef7c5beee314d0804d4534f01e0f9e8d9acdee2b7a48627e590b27e0ec4" 1656 | "checksum h2 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9433d71e471c1736fd5a61b671fc0b148d7a2992f666c958d03cd8feb3b88d1" 1657 | "checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" 1658 | "checksum hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "023b39be39e3a2da62a94feb433e91e8bcd37676fbc8bea371daf52b7a769a3e" 1659 | "checksum http 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b708cc7f06493459026f53b9a61a7a121a5d1ec6238dee58ea4941132b30156b" 1660 | "checksum http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" 1661 | "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 1662 | "checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" 1663 | "checksum hyper 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fa1c527bbc634be72aa7ba31e4e4def9bbb020f5416916279b7c705cd838893e" 1664 | "checksum hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa" 1665 | "checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 1666 | "checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" 1667 | "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1668 | "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 1669 | "checksum jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160" 1670 | "checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" 1671 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1672 | "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1673 | "checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" 1674 | "checksum libgit2-sys 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9ec6bca50549d34a392611dde775123086acbd994e3fff64954777ce2dc2e51" 1675 | "checksum libssh2-sys 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "5fcd5a428a31cbbfe059812d74f4b6cd3b9b7426c2bdaec56993c5365da1c328" 1676 | "checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" 1677 | "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" 1678 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1679 | "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1680 | "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" 1681 | "checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" 1682 | "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" 1683 | "checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" 1684 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1685 | "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" 1686 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1687 | "checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1688 | "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" 1689 | "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" 1690 | "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 1691 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1692 | "checksum openssl 0.10.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2f372b2b53ce10fb823a337aaa674e3a7d072b957c6264d0f4ff0bd86e657449" 1693 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 1694 | "checksum openssl-sys 0.9.52 (registry+https://github.com/rust-lang/crates.io-index)" = "c977d08e1312e2f7e4b86f9ebaa0ed3b19d1daff75fae88bbb88108afbd801fc" 1695 | "checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1696 | "checksum pin-project 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7804a463a8d9572f13453c516a5faea534a2403d7ced2f0c7e100eeff072772c" 1697 | "checksum pin-project-internal 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "385322a45f2ecf3410c68d2a549a4a2685e8051d0f278e39743ff4e451cb9b3f" 1698 | "checksum pin-project-lite 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" 1699 | "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" 1700 | "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" 1701 | "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 1702 | "checksum proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097" 1703 | "checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" 1704 | "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 1705 | "checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" 1706 | "checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" 1707 | "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" 1708 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1709 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 1710 | "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1711 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1712 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1713 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1714 | "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1715 | "checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" 1716 | "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" 1717 | "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" 1718 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1719 | "checksum reqwest 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a9f62f24514117d09a8fc74b803d3d65faa27cea1c7378fb12b0d002913f3831" 1720 | "checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" 1721 | "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" 1722 | "checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" 1723 | "checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" 1724 | "checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2" 1725 | "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" 1726 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1727 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1728 | "checksum serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b39bd9b0b087684013a792c59e3e07a46a01d2322518d8a1104641a0b1be0" 1729 | "checksum serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "ca13fc1a832f793322228923fbb3aba9f3f44444898f835d31ad1b74fa0a2bf8" 1730 | "checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" 1731 | "checksum serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec5d77e2d4c73717816afac02670d5c4f534ea95ed430442cad02e7a6e32c97" 1732 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1733 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1734 | "checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" 1735 | "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 1736 | "checksum structopt 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4f66a4c0ddf7aee4677995697366de0749b0139057342eccbb609b12d0affc" 1737 | "checksum structopt-derive 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8fe0c13e476b4e21ff7f5c4ace3818b6d7bdc16897c31c73862471bc1663acae" 1738 | "checksum subprocess 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "28fc0f40f0c0da73339d347aa7d6d2b90341a95683a47722bc4eebed71ff3c00" 1739 | "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" 1740 | "checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203" 1741 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1742 | "checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" 1743 | "checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 1744 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 1745 | "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" 1746 | "checksum tokio 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "0fa5e81d6bc4e67fe889d5783bd2a128ab2e0cfa487e0be16b6a8d177b101616" 1747 | "checksum tokio-tls 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bde02a3a5291395f59b06ec6945a3077602fac2b07eeeaf0dee2122f3619828" 1748 | "checksum tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "571da51182ec208780505a32528fc5512a8fe1443ab960b3f2f3ef093cd16930" 1749 | "checksum toml 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7aabe75941d914b72bf3e5d3932ed92ce0664d49d8432305a8b547c37227724" 1750 | "checksum toml_edit 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87f53b1aca7d5fe2e17498a38cac0e1f5a33234d5b980fb36b9402bb93b98ae4" 1751 | "checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" 1752 | "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" 1753 | "checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" 1754 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1755 | "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 1756 | "checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" 1757 | "checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" 1758 | "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" 1759 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1760 | "checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" 1761 | "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" 1762 | "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" 1763 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 1764 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1765 | "checksum want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 1766 | "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" 1767 | "checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" 1768 | "checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" 1769 | "checksum wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8bbdd49e3e28b40dec6a9ba8d17798245ce32b019513a845369c641b275135d9" 1770 | "checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" 1771 | "checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" 1772 | "checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" 1773 | "checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" 1774 | "checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" 1775 | "checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" 1776 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1777 | "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" 1778 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1779 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1780 | "checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" 1781 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1782 | "checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" 1783 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1784 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "substrate-deps" 3 | version = "0.2.0" 4 | authors = ["Steve Degosserie "] 5 | edition = "2018" 6 | license = "MIT/Apache-2.0" 7 | readme = "README.md" 8 | homepage = "https://github.com/paritytech/substrate-deps" 9 | repository = "https://github.com/paritytech/substrate-deps" 10 | documentation = "https://github.com/paritytech/substrate-deps/blob/master/README.md" 11 | description = """ 12 | Substrate-deps, a command line tool for managing Parity Substrate runtime pallet dependencies. 13 | """ 14 | 15 | [dependencies] 16 | clap = "2.33" 17 | cargo-deps = "1.4.1" 18 | cargo-edit = "0.5.0" 19 | dirs = "2.0" 20 | env_logger = "0.7" 21 | hex = "0.4" 22 | Inflector = "0.11" 23 | log = "0.4" 24 | toml = "0.5" 25 | toml_edit = "0.1" 26 | url = "2.1" 27 | regex = "1.3" 28 | serde = { version = "1.0", features = ["derive"] } 29 | lazy_static = "1.4" 30 | -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright 2019 Steve Degosserie 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2019-2020 Parity Technologies (UK) Ltd. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | substrate-deps 2 | ============== 3 | 4 | [![rust build](https://github.com/paritytech/substrate-deps/workflows/rust/badge.svg)](https://github.com/paritytech/substrate-deps/actions) 5 | [![dependency status](https://deps.rs/repo/github/paritytech/substrate-deps/status.svg)](https://deps.rs/repo/github/paritytech/substrate-deps) 6 | 7 | `substrate-deps` is a command line tool for managing [Parity Substrate](http://substrate.dev) pallet dependencies. 8 | 9 | The following commands are available: 10 | 11 | - [`substrate-deps add`](#substrate-deps-add) 12 | - [`substrate-deps graph`](#substrate-deps-graph) 13 | 14 | ## How to install 15 | 16 | Install `substrate-deps` locally with: 17 | ```bash 18 | cargo install substrate-deps 19 | ``` 20 | 21 | ## Commands 22 | 23 | ### `substrate-deps add` 24 | 25 | Add a new pallet dependency to your Substrate runtime's `Cargo.toml`. 26 | 27 | #### Examples 28 | 29 | To add the Substrate Contracts `pallet-contracts` pallet: 30 | ```sh 31 | $ # Add the pallet pallet-contracts to the runtime whose manifest is specified as argument. 32 | $ substrate-deps add pallet-contracts --alias contracts --manifest-path ../substrate-package/substrate-node-template/runtime/Cargo.toml 33 | 34 | Added pallet pallet-contracts v2.0.0-alpha.3 configuration in your node runtime manifest. 35 | Added pallet pallet-contracts v2.0.0-alpha.3 configuration in your node runtime. 36 | ``` 37 | 38 | #### Usage 39 | 40 | ```plain 41 | $ substrate-deps add --help 42 | USAGE: 43 | substrate-deps add [FLAGS] [OPTIONS] 44 | 45 | FLAGS: 46 | -h, --help Prints help information 47 | -q, --quiet No output printed to stdout 48 | -v, --verbose Use verbose output 49 | -V, --version Prints version information 50 | 51 | OPTIONS: 52 | -a, --alias Alias to be used in code & config e.g. staking instead of pallet-staking 53 | --manifest-path Path to the manifest of the runtime. [default: Cargo.toml] 54 | --registry Registry to use. [default: crates-io] 55 | 56 | ARGS: 57 | Pallet to be added e.g. pallet-staking 58 | ``` 59 | 60 | This command allows you to add a new pallet dependency to your Substrate runtime's Cargo.toml manifest file. `substrate-deps add` will fetch the pallet from crates.io (or the give alternate registry), and add it to your runtime's `Cargo.toml` and `libs.rs` files. 61 | 62 | ### `substrate-deps graph` 63 | 64 | Generates a dependency graph of the pallets used by your Substrate runtime e.g. 65 | 66 | ![sample graph](sample-graph.png) 67 | 68 | #### Examples 69 | 70 | This command output a dependency graph for [graphviz](https://graphviz.gitlab.io/download/), please make sure your have it install to be able to generate an image file with the instruction below. 71 | 72 | ```sh 73 | $ # Generate a dependency graph of the pallets used by the runtime whose manifest is specified as argument and pipe it to the dot command to generate an image file. 74 | $ substrate-deps graph --manifest-path ../substrate-package/substrate-node-template/runtime/Cargo.toml | dot -Tpng > graph.png 75 | ``` 76 | 77 | #### Usage 78 | ```plain 79 | $ substrate-deps graph --help 80 | substrate-deps-graph 81 | Generate a graph of the Substrate runtime pallet dependencies. 82 | 83 | USAGE: 84 | substrate-deps graph [FLAGS] [OPTIONS] 85 | 86 | FLAGS: 87 | -h, --help Prints help information 88 | -I, --include-versions Include the dependency version on nodes 89 | -q, --quiet No output printed to stdout 90 | -v, --verbose Use verbose output 91 | -V, --version Prints version information 92 | 93 | OPTIONS: 94 | --manifest-path Path to the manifest of the runtime. [default: Cargo.toml] 95 | ``` 96 | 97 | ### License 98 | 99 | This project is licensed under either of 100 | 101 | * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or 102 | http://www.apache.org/licenses/LICENSE-2.0) 103 | * MIT license ([LICENSE-MIT](LICENSE-MIT) or 104 | http://opensource.org/licenses/MIT) 105 | 106 | at your option. 107 | -------------------------------------------------------------------------------- /bors.toml: -------------------------------------------------------------------------------- 1 | status = [ 2 | "build (ubuntu-latest, stable)", 3 | "build (ubuntu-latest, nightly)", 4 | "build (windows-latest, stable)", 5 | "build (windows-latest, nightly)", 6 | "build (macOS-latest, stable)", 7 | "build (macOS-latest, nightly)", 8 | ] 9 | delete-merged-branches = true 10 | -------------------------------------------------------------------------------- /sample-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/paritytech/substrate-deps/7c65f5011b501ea2399cdc7633a132be2d74bd38/sample-graph.png -------------------------------------------------------------------------------- /src/add.rs: -------------------------------------------------------------------------------- 1 | use crate::error::*; 2 | use crate::manifest::add_pallet_to_manifest; 3 | use crate::registry::registry_path; 4 | use crate::runtime::add_pallet_to_runtime; 5 | 6 | use cargo_edit::{get_latest_dependency, registry_url, update_registry_index}; 7 | use log::{debug, info}; 8 | use std::path::PathBuf; 9 | use url::Url; 10 | 11 | pub fn execute_add( 12 | manifest_path: &PathBuf, 13 | pallet: &str, 14 | alias: Option<&str>, 15 | registry: Option<&str>, 16 | ) -> CliResult<()> { 17 | debug!("Manifest path: {:?}", manifest_path); 18 | debug!("Pallet: {}", pallet); 19 | debug!("Alias: {:?}", alias); 20 | debug!("Registry: {:?}", registry); 21 | 22 | // Lookup registry URL 23 | let reg_url = registry_url(manifest_path.as_ref(), registry) 24 | .map_err(|e| CliError::Registry(e.to_string()))?; 25 | debug!("Registry URL: {}", reg_url); 26 | 27 | // Lookup registry path 28 | let reg_path = registry_path(manifest_path.as_ref(), registry) 29 | .map_err(|e| CliError::Registry(e.to_string()))?; 30 | debug!("Registry path: {:?}", reg_path); 31 | 32 | info!( 33 | "Using registry '{}' at: {}", 34 | registry.unwrap_or("crates-io"), 35 | reg_url 36 | ); 37 | 38 | // Update registry index 39 | //TODO: add offline flag and skip update if set 40 | update_registry_index(®_url).map_err(|e| CliError::Registry(e.to_string()))?; 41 | 42 | // Add pallet dependency (and related dependencies, recursively) 43 | add_pallet_dependency( 44 | manifest_path, 45 | pallet, 46 | alias, 47 | (registry, ®_url, ®_path), 48 | )?; 49 | 50 | Ok(()) 51 | } 52 | 53 | fn add_pallet_dependency( 54 | manifest_path: &PathBuf, 55 | pallet: &str, 56 | alias: Option<&str>, 57 | (registry, reg_url, _reg_path): (Option<&str>, &Url, &PathBuf), 58 | ) -> CliResult<()> { 59 | // Lookup pallet latest version 60 | let dependency = 61 | get_latest_dependency(pallet, true, manifest_path.as_ref(), &Some(reg_url.clone())) 62 | .map_err(|e| CliError::Dependency(e.to_string()))?; 63 | 64 | let name = &dependency.name; 65 | let version = &dependency.version().unwrap(); 66 | debug!("Pallet found: {} v{}", name, version); 67 | 68 | // Add pallet default config to runtime's lib.rs 69 | add_pallet_to_runtime(manifest_path.as_ref(), &dependency, &alias)?; 70 | 71 | info!( 72 | "Added pallet {} v{} as dependency in your node runtime manifest.", 73 | name, version 74 | ); 75 | 76 | // Add pallet to runtime manifest 77 | add_pallet_to_manifest(manifest_path.as_ref(), &dependency, &alias, registry)?; 78 | 79 | info!( 80 | "Added metadata {} v{} configuration in your node runtime.", 81 | name, version 82 | ); 83 | 84 | Ok(()) 85 | } 86 | -------------------------------------------------------------------------------- /src/error.rs: -------------------------------------------------------------------------------- 1 | use std::{ 2 | fmt::{Display, Formatter, Result as FmtResult}, 3 | io, 4 | }; 5 | 6 | pub type CliResult = Result; 7 | 8 | #[derive(Debug)] 9 | pub enum CliError { 10 | Dependency(String), 11 | Generic(String), 12 | Graph(String), 13 | Io(io::Error), 14 | Manifest(String), 15 | Metadata(String), 16 | Registry(String), 17 | Toml(String), 18 | } 19 | 20 | impl Display for CliError { 21 | fn fmt(&self, f: &mut Formatter) -> FmtResult { 22 | match *self { 23 | Self::Dependency(ref e) => write!(f, "{}", e), 24 | Self::Generic(ref e) => write!(f, "{}", e), 25 | Self::Graph(ref e) => write!(f, "{}", e), 26 | Self::Io(ref e) => write!(f, "{}", e), 27 | Self::Manifest(ref e) => write!(f, "{}", e), 28 | Self::Metadata(ref e) => write!(f, "{}", e), 29 | Self::Registry(ref e) => write!(f, "{}", e), 30 | Self::Toml(ref e) => write!(f, "Could not parse toml file: {}", e), 31 | } 32 | } 33 | } 34 | 35 | impl CliError { 36 | #[allow(dead_code)] 37 | /// Print this error and immediately exit the program. 38 | pub fn exit(&self) -> ! { 39 | eprintln!("error: {}", self); 40 | ::std::process::exit(1) 41 | } 42 | } 43 | 44 | impl From for CliError { 45 | fn from(err: cargo_deps::Error) -> Self { 46 | Self::Graph(format!("{}", err)) 47 | } 48 | } 49 | 50 | impl From for CliError { 51 | fn from(err: io::Error) -> Self { 52 | Self::Io(err) 53 | } 54 | } 55 | 56 | impl From for CliError { 57 | fn from(err: std::string::FromUtf8Error) -> Self { 58 | Self::Metadata(format!("Error reading pallet metadata: {}", err)) 59 | } 60 | } 61 | 62 | impl From for CliError { 63 | fn from(err: regex::Error) -> Self { 64 | Self::Generic(format!("Invalid regex definition: {}", err)) 65 | } 66 | } 67 | 68 | impl From for CliError { 69 | fn from(err: toml::de::Error) -> Self { 70 | Self::Toml(format!("Could not parse input as TOML: {}", err)) 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/graph.rs: -------------------------------------------------------------------------------- 1 | use crate::error::*; 2 | use crate::metadata::Manifest; 3 | 4 | use cargo_deps::{get_dep_graph, render_dep_graph, Config}; 5 | use clap::ArgMatches; 6 | use std::{ 7 | fs, 8 | io::{self, Write}, 9 | }; 10 | 11 | lazy_static! { 12 | static ref FRAME: [String; 35] = [ 13 | "pallet-assets".to_owned(), 14 | "pallet-aura".to_owned(), 15 | "pallet-authority-discovery".to_owned(), 16 | "pallet-authorship".to_owned(), 17 | "pallet-babe".to_owned(), 18 | "pallet-balances".to_owned(), 19 | "pallet-collective".to_owned(), 20 | "pallet-contracts".to_owned(), 21 | "pallet-democracy".to_owned(), 22 | "pallet-elections".to_owned(), 23 | "pallet-elections-phragmen".to_owned(), 24 | "pallet-evm".to_owned(), 25 | "pallet-example".to_owned(), 26 | "pallet-example-offchain-worker".to_owned(), 27 | "pallet-finality-tracker".to_owned(), 28 | "pallet-generic-asset".to_owned(), 29 | "pallet-grandpa".to_owned(), 30 | "pallet-identity".to_owned(), 31 | "pallet-im-online".to_owned(), 32 | "pallet-indices".to_owned(), 33 | "pallet-membership".to_owned(), 34 | "pallet-nicks".to_owned(), 35 | "pallet-offences".to_owned(), 36 | "pallet-randomness-collective-flip".to_owned(), 37 | "pallet-randomness-recovery".to_owned(), 38 | "pallet-scored-pool".to_owned(), 39 | "pallet-session".to_owned(), 40 | "pallet-society".to_owned(), 41 | "pallet-staking".to_owned(), 42 | "pallet-sudo".to_owned(), 43 | "pallet-timestamp".to_owned(), 44 | "pallet-transaction-payment".to_owned(), 45 | "pallet-treasury".to_owned(), 46 | "pallet-utility".to_owned(), 47 | "pallet-vesting".to_owned(), 48 | ]; 49 | } 50 | 51 | pub fn execute_graph(m: &ArgMatches) -> CliResult<()> { 52 | // debug!("Manifest path: {:?}", manifest_path); 53 | 54 | let mut cfg = Config::default(); 55 | cfg.manifest_path = m.value_of("manifest-path").unwrap_or("Cargo.toml").into(); 56 | cfg.include_versions = m.is_present("include-versions"); 57 | let manifest = read_manifest(&cfg.manifest_path)?; 58 | 59 | let mut filter = vec![manifest.package().as_ref().unwrap().name().to_owned()]; 60 | filter.append(&mut FRAME.to_vec()); 61 | cfg.filter = Some(filter); 62 | cfg.transitive_deps = false; 63 | 64 | // Get dependency graph & render it 65 | let o = get_dep_graph(cfg).and_then(render_dep_graph)?; 66 | io::stdout() 67 | .write_all(&o.into_bytes()) 68 | .expect("Unable to write graph"); 69 | 70 | Ok(()) 71 | } 72 | 73 | fn read_manifest(manifest: &str) -> CliResult { 74 | let s = fs::read_to_string(manifest)?; 75 | let manifest: Manifest = toml::from_str(&s).map_err(|_| { 76 | CliError::Metadata( 77 | "Error reading pallet metadata: could parse crate manifest as TOML.".to_owned(), 78 | ) 79 | })?; 80 | Ok(manifest) 81 | } 82 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![warn(clippy::all)] 2 | 3 | mod add; 4 | mod error; 5 | mod graph; 6 | mod manifest; 7 | mod metadata; 8 | mod registry; 9 | mod runtime; 10 | 11 | #[macro_use] 12 | extern crate lazy_static; 13 | 14 | use crate::manifest::find_manifest_file; 15 | use clap::{crate_description, crate_name, crate_version, App, Arg, ArgMatches, SubCommand}; 16 | use log::{warn, LevelFilter}; 17 | use std::env; 18 | 19 | fn parse_cli<'a>() -> ArgMatches<'a> { 20 | App::new(crate_name!()) 21 | .version(crate_version!()) 22 | .about(crate_description!()) 23 | .arg( 24 | Arg::with_name("manifest-path") 25 | .long("manifest-path") 26 | .value_name("path") 27 | .help("Path to the manifest of the runtime.") 28 | .takes_value(true) 29 | .global(true) 30 | .default_value("Cargo.toml"), 31 | ) 32 | .arg( 33 | Arg::with_name("quiet") 34 | .long("quiet") 35 | .short("q") 36 | .global(true) 37 | .help("No output printed to stdout"), 38 | ) 39 | .arg( 40 | Arg::with_name("v") 41 | .long("verbose") 42 | .short("v") 43 | .multiple(true) 44 | .global(true) 45 | .help("Use verbose output"), 46 | ) 47 | //TODO: add support for (pallet) version, 48 | // offline, locked, no-default-features, etc 49 | .subcommand( 50 | SubCommand::with_name("add") 51 | .about("Adds a pallet to the Substrate runtime.") 52 | .arg( 53 | Arg::with_name("pallet") 54 | .help("Pallet to be added e.g. pallet-staking") 55 | .required(true) 56 | .index(1), 57 | ) 58 | .arg( 59 | Arg::with_name("alias") 60 | .long("alias") 61 | .short("a") 62 | .help("Alias to be used in code & config e.g. staking instead of pallet-staking") 63 | .takes_value(true) 64 | ) 65 | .arg( 66 | Arg::with_name("registry") 67 | .long("registry") 68 | .value_name("registry") 69 | .help("Registry to use") 70 | .takes_value(true) 71 | .global(true) 72 | ) 73 | ) 74 | .subcommand( 75 | SubCommand::with_name("graph") 76 | .about("Generate a graph of the Substrate runtime pallet dependencies.") 77 | .arg( 78 | Arg::with_name("include-versions") 79 | .long("include-versions") 80 | .short("I") 81 | .help("Include the dependency version on nodes") 82 | ) 83 | ) 84 | .get_matches() 85 | } 86 | 87 | fn config_log(m: &ArgMatches) { 88 | let log_level = if m.is_present("quiet") { 89 | LevelFilter::Error 90 | } else { 91 | match m.occurrences_of("v") { 92 | 0 => LevelFilter::Info, 93 | 1 => LevelFilter::Debug, 94 | 2 | _ => LevelFilter::Trace, 95 | } 96 | }; 97 | env_logger::from_env(env_logger::Env::default().default_filter_or(format!( 98 | "{}={}", 99 | crate_name!().replace("-", "_"), 100 | log_level 101 | ))) 102 | .format_timestamp(None) 103 | .format_level(false) 104 | .format_module_path(false) 105 | .init(); 106 | } 107 | 108 | fn main() { 109 | let m = parse_cli(); 110 | config_log(&m); 111 | 112 | let manifest = m.value_of("manifest-path").unwrap(); // manifest-path has a default value so we can safely unwrap 113 | let manifest_path = find_manifest_file(manifest).unwrap(); // -> Stop on error, if any 114 | 115 | if let Err(err) = match m.subcommand() { 116 | ("add", Some(m)) => { 117 | //TODO: move to config.rs 118 | let pallet = m.value_of("pallet").unwrap(); // pallet arg is required so we can safely unwrap 119 | let alias = m.value_of("alias"); 120 | let registry = m.value_of("registry"); 121 | //TODO: should get (local registry path, registry uri) 122 | add::execute_add(&manifest_path, pallet, alias, registry) 123 | } 124 | ("graph", Some(m)) => graph::execute_graph(&m), 125 | _ => Ok(()), 126 | } { 127 | eprintln!("{}", err); 128 | std::process::exit(1); 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /src/manifest.rs: -------------------------------------------------------------------------------- 1 | use crate::error::{CliError, CliResult}; 2 | 3 | use std::{ 4 | env, 5 | fs::{self}, 6 | path::{Path, PathBuf}, 7 | }; 8 | 9 | use cargo_edit::{Dependency, Manifest}; 10 | 11 | pub fn find_manifest_file(file: &str) -> CliResult { 12 | let pwd = env::current_dir()?; 13 | let manifest = pwd.join(file); 14 | let file_name = manifest.file_name().unwrap(); 15 | let mut dir = manifest.parent().unwrap().to_path_buf(); 16 | let mut first_try = true; 17 | 18 | loop { 19 | let try_manifest = dir.join(file_name); 20 | 21 | if let Ok(metadata) = fs::metadata(&try_manifest) { 22 | if metadata.is_file() { 23 | if !first_try { 24 | eprintln!("Found {:?} in {:?}.", file_name, dir.display()); 25 | } 26 | 27 | return Ok(try_manifest); 28 | } 29 | } 30 | 31 | if first_try { 32 | eprintln!( 33 | "Could not find {:?} in {:?}, searching parent directories.", 34 | file_name, 35 | dir.display() 36 | ); 37 | first_try = false; 38 | } 39 | 40 | dir = match dir.parent() { 41 | None => { 42 | return Err(CliError::Generic(format!( 43 | "Could not find {:?} in {:?} or any parent directory", 44 | file, 45 | manifest.parent().unwrap() 46 | ))); 47 | } 48 | Some(ref dir) => dir.to_path_buf(), 49 | }; 50 | } 51 | } 52 | 53 | pub fn add_pallet_to_manifest( 54 | manifest_path: &Path, 55 | dependency: &Dependency, 56 | alias: &Option<&str>, 57 | registry: Option<&str>, 58 | ) -> CliResult<()> { 59 | // Open TOML manifest 60 | let mut manifest = Manifest::open(&Some(manifest_path.to_path_buf())) 61 | .map_err(|e| CliError::Manifest(e.to_string()))?; 62 | 63 | let name = &inflector::cases::camelcase::to_camel_case(pallet_alias(dependency, alias)); 64 | 65 | // Generate TOML table for pallet dependency 66 | let dep_toml = pallet_dependency_to_toml( 67 | name, 68 | dependency.version().unwrap(), 69 | &dependency.name, 70 | registry, 71 | ); 72 | 73 | // Add pallet TOML table to dependencies table 74 | insert_into_table(&mut manifest, &["dependencies".to_owned()], dep_toml)?; 75 | 76 | // Add pallet/std to features table 77 | let feature = format!("{}/std", name); 78 | insert_into_array(&mut manifest, &["features".to_owned()], "std", feature)?; 79 | 80 | // Write modified TOML manifest 81 | Manifest::find_file(&Some(manifest_path.to_path_buf())) 82 | .and_then(|mut file| manifest.write_to_file(&mut file)) 83 | .map_err(|e| CliError::Manifest(e.to_string()))?; 84 | 85 | Ok(()) 86 | } 87 | 88 | fn insert_into_table( 89 | manifest: &mut Manifest, 90 | table_path: &[String], 91 | table_entry: (String, toml_edit::Table), 92 | ) -> CliResult<()> { 93 | let (entry_name, entry_table) = table_entry; 94 | let table = manifest 95 | .get_table(table_path) 96 | .map_err(|e| CliError::Manifest(e.to_string()))?; 97 | 98 | if table[&entry_name].is_none() { 99 | let entries = table.as_table_mut().ok_or_else(|| { 100 | CliError::Manifest(format!( 101 | "Error updating '{}' runtime manifest.", 102 | table_path.first().unwrap() 103 | )) 104 | })?; 105 | 106 | let _ = entries 107 | .entry(&entry_name) 108 | .or_insert(toml_edit::Item::Table(entry_table)); 109 | entries.sort_values(); 110 | } /*else { 111 | // update an existing entry 112 | merge_dependencies(&mut table[&dep.name], dep); 113 | if let Some(t) = table.as_inline_table_mut() { 114 | t.fmt() 115 | } 116 | }*/ 117 | 118 | Ok(()) 119 | } 120 | 121 | fn insert_into_array( 122 | manifest: &mut Manifest, 123 | table_path: &[String], 124 | table_entry: &str, 125 | array_entry: String, 126 | ) -> CliResult<()> { 127 | let table = manifest 128 | .get_table(table_path) 129 | .map_err(|e| CliError::Manifest(e.to_string()))?; 130 | 131 | let array = table 132 | .as_table_mut() 133 | .and_then(|tm| tm.entry(table_entry).as_array_mut()) 134 | .ok_or_else(|| { 135 | CliError::Manifest(format!( 136 | "Error updating '{}' in runtime manifest.", 137 | table_path.first().unwrap() 138 | )) 139 | })?; 140 | 141 | if !array.iter().any(|v| v.as_str() == Some(&array_entry)) { 142 | array.push(format!("'{}'", array_entry)); 143 | } 144 | 145 | Ok(()) 146 | } 147 | 148 | pub fn pallet_alias<'a>(dependency: &'a Dependency, alias: &Option<&'a str>) -> &'a str { 149 | match alias { 150 | Some(alias) => alias, 151 | None => &dependency.name, 152 | } 153 | } 154 | 155 | fn pallet_dependency_to_toml( 156 | name: &str, 157 | version: &str, 158 | package: &str, 159 | registry: Option<&str>, 160 | ) -> (String, toml_edit::Table) { 161 | let mut data = toml_edit::Table::new(); 162 | data["package"] = toml_edit::value(format!("'{}'", package)); 163 | data["version"] = toml_edit::value(format!("'{}'", version)); 164 | data["default-features"] = toml_edit::value(false); 165 | if let Some(registry) = registry { 166 | data["registry"] = toml_edit::value(format!("'{}'", registry)); 167 | } 168 | (name.to_string(), data) 169 | } 170 | -------------------------------------------------------------------------------- /src/metadata.rs: -------------------------------------------------------------------------------- 1 | use regex::Regex; 2 | use serde::Deserialize; 3 | 4 | lazy_static! { 5 | static ref PALLET_DEPS_REGEX: Regex = Regex::new(r"([\w\d_-]+):([\w\d_-]+)").unwrap(); 6 | static ref TRAIT_DEPS_REGEX: Regex = Regex::new(r"([\w\d_-]+)=([\w\d_-]+)").unwrap(); 7 | } 8 | 9 | #[derive(Clone, Debug, Deserialize)] 10 | pub struct Manifest { 11 | package: Option, 12 | } 13 | 14 | impl Manifest { 15 | pub fn package(&self) -> &Option { 16 | &self.package 17 | } 18 | } 19 | 20 | #[derive(Clone, Debug, Deserialize)] 21 | pub struct Package { 22 | name: String, 23 | version: String, 24 | } 25 | 26 | impl Package { 27 | pub fn name(&self) -> &str { 28 | &self.name 29 | } 30 | 31 | #[allow(dead_code)] 32 | pub fn version(&self) -> &str { 33 | &self.version 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/registry.rs: -------------------------------------------------------------------------------- 1 | use self::code_from_cargo::Kind; 2 | use crate::error::*; 3 | 4 | use std::path::{Path, PathBuf}; 5 | 6 | use cargo_edit::registry_url; 7 | use url::Url; 8 | 9 | // From https://github.com/tofay/cargo-edit/blob/alt-registries/src/registry.rs 10 | 11 | fn cargo_home() -> CliResult { 12 | let default_cargo_home = dirs::home_dir() 13 | .map(|x| x.join(".cargo")) 14 | .ok_or_else(|| CliError::Generic("Error reading cargo home dir.".to_owned()))?; 15 | // .chain_err(|| ErrorKind::ReadHomeDirFailure)?; 16 | let cargo_home = std::env::var("CARGO_HOME") 17 | .map(PathBuf::from) 18 | .unwrap_or(default_cargo_home); 19 | Ok(cargo_home) 20 | } 21 | 22 | pub fn registry_path(manifest_path: &Path, registry: Option<&str>) -> CliResult { 23 | registry_path_from_url( 24 | ®istry_url(manifest_path, registry).map_err(|e| CliError::Registry(e.to_string()))?, 25 | ) 26 | } 27 | 28 | pub fn registry_path_from_url(registry: &Url) -> CliResult { 29 | Ok(cargo_home()? 30 | .join("registry") 31 | .join("index") 32 | .join(short_name(registry))) 33 | } 34 | 35 | fn short_name(registry: &Url) -> String { 36 | // ref: https://github.com/rust-lang/cargo/blob/4c1fa54d10f58d69ac9ff55be68e1b1c25ecb816/src/cargo/sources/registry/mod.rs#L386-L390 37 | #![allow(deprecated)] 38 | use std::hash::{Hash, Hasher, SipHasher}; 39 | 40 | let mut hasher = SipHasher::new_with_keys(0, 0); 41 | Kind::Registry.hash(&mut hasher); 42 | registry.as_str().hash(&mut hasher); 43 | let hash = hex::encode(hasher.finish().to_le_bytes()); 44 | 45 | let ident = registry.host_str().unwrap_or("").to_string(); 46 | 47 | format!("{}-{}", ident, hash) 48 | } 49 | 50 | mod code_from_cargo { 51 | #![allow(dead_code)] 52 | 53 | #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] 54 | pub enum Kind { 55 | Git(GitReference), 56 | Path, 57 | Registry, 58 | LocalRegistry, 59 | Directory, 60 | } 61 | 62 | #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] 63 | pub enum GitReference { 64 | Tag(String), 65 | Branch(String), 66 | Rev(String), 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/runtime.rs: -------------------------------------------------------------------------------- 1 | use crate::error::{CliError, CliResult}; 2 | use crate::manifest::pallet_alias; 3 | 4 | use std::fs; 5 | use std::path::Path; 6 | 7 | use cargo_edit::Dependency; 8 | use inflector; 9 | use regex::Regex; 10 | 11 | pub fn add_pallet_to_runtime( 12 | manifest_path: &Path, 13 | dependency: &Dependency, 14 | alias: &Option<&str>, 15 | ) -> CliResult<()> { 16 | let runtime_lib_path = manifest_path.parent().unwrap().join("src").join("lib.rs"); 17 | let mod_name = &inflector::cases::camelcase::to_camel_case(pallet_alias(dependency, alias)); 18 | 19 | let pallet_trait_existing = Regex::new( 20 | format!( 21 | r"(?xm) 22 | ^impl\s+{}::Trait\s+for\s+Runtime\s+\{{ 23 | [^\}}]+ 24 | \}} 25 | ", 26 | mod_name 27 | ) 28 | .as_ref(), 29 | )?; 30 | 31 | let construct_runtime = Regex::new( 32 | r"construct_runtime!\(\s+pub\s+enum\s+Runtime[^{]+\{(?P[\s\S]+)\}\s+\);", 33 | )?; 34 | 35 | let mut pallet_trait_impl = format!("impl {}::Trait for Runtime {{ \n", mod_name); 36 | pallet_trait_impl.push_str(&format!( 37 | " /* {} Trait config goes here */ \n", 38 | dependency.name 39 | )); 40 | pallet_trait_impl.push_str("}"); 41 | 42 | let mut pallet_config = format!( 43 | r" 44 | {}: {}::{{", 45 | inflector::cases::pascalcase::to_pascal_case(&mod_name), 46 | mod_name 47 | ); 48 | pallet_config.push_str(&format!( 49 | " /* {} runtime config goes here */ \n", 50 | dependency.name 51 | )); 52 | pallet_config.push_str("},"); 53 | 54 | let original = fs::read_to_string(&runtime_lib_path)?; 55 | let mut buffer = original.clone(); 56 | buffer = if pallet_trait_existing.is_match(&original) { 57 | let result = 58 | pallet_trait_existing.replace(&original, |_caps: ®ex::Captures| &pallet_trait_impl); 59 | result.into() 60 | } else { 61 | let mat = construct_runtime 62 | .find(&original) 63 | .ok_or_else(|| CliError::Generic("couldn't find construct_runtime call".to_owned()))?; 64 | buffer.insert_str(mat.start(), format!("{}\n\n", pallet_trait_impl).as_str()); 65 | buffer 66 | }; 67 | 68 | let modified = buffer.clone(); 69 | let caps = construct_runtime 70 | .captures(&modified) 71 | .ok_or_else(|| CliError::Generic("couldn't find construct_runtime call".to_owned()))?; 72 | let pallets = caps.name("pallets").ok_or_else(|| { 73 | CliError::Generic( 74 | "couldn't find runtime pallets config inside construct_runtime".to_owned(), 75 | ) 76 | })?; 77 | 78 | buffer.insert_str(pallets.end() - 2, &pallet_config); 79 | fs::write(runtime_lib_path, buffer)?; 80 | 81 | Ok(()) 82 | } 83 | --------------------------------------------------------------------------------