From 9da343fcbec08c8844b9784d8449fb9825149a1b Mon Sep 17 00:00:00 2001 From: Dotan Nahum Date: Fri, 1 Oct 2021 15:10:30 +0300 Subject: [PATCH] open sourcing keyscope :smile: --- .github/workflows/build.yml | 87 ++ .github/workflows/release.yml | 218 ++++ .gitignore | 3 + Cargo.lock | 2122 +++++++++++++++++++++++++++++++++ Cargo.toml | 24 + LICENSE.txt | 201 ++++ README.md | 303 +++++ build.rs | 6 + custom-defs.example.yaml | 22 + media/ks.png | Bin 0 -> 243789 bytes package.json | 13 + src/data.rs | 48 + src/defs.yaml | 577 +++++++++ src/main.rs | 240 ++++ tooling/sync-providers.js | 16 + yarn.lock | 13 + 16 files changed, 3893 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 build.rs create mode 100644 custom-defs.example.yaml create mode 100644 media/ks.png create mode 100644 package.json create mode 100644 src/data.rs create mode 100644 src/defs.yaml create mode 100644 src/main.rs create mode 100644 tooling/sync-providers.js create mode 100644 yarn.lock diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..27ee685 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,87 @@ +name: Build +on: + pull_request: + push: + branches: + - master + schedule: + - cron: '00 01 * * *' + +jobs: + check: + name: Check + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - uses: Swatinem/rust-cache@v1 + + - name: Run cargo check + uses: actions-rs/cargo@v1 + with: + command: check + + test: + name: Test Suite + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + rust: [stable] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.rust }} + override: true + + - uses: Swatinem/rust-cache@v1 + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + + + lints: + name: Lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + with: + submodules: true + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt, clippy + + - uses: Swatinem/rust-cache@v1 + + - name: Run cargo fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + - name: Run cargo clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: -- -D warnings diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a06aac8 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,218 @@ +name: Release +on: + # schedule: + # - cron: '0 0 * * *' # midnight UTC + + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + ## - release + +env: + BIN_NAME: keyscope + PROJECT_NAME: keyscope + REPO_NAME: spectralops/keyscope + BREW_TAP: spectralops/homebrew-tap + +jobs: + dist: + name: Dist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false # don't fail other jobs if one fails + matrix: + build: [x86_64-linux, x86_64-macos, x86_64-windows] #, x86_64-win-gnu, win32-msvc aarch64-linux, + include: + - build: x86_64-linux + os: ubuntu-20.04 + rust: stable + target: x86_64-unknown-linux-gnu + cross: false + + # - build: aarch64-linux # this fails on openssl + # os: ubuntu-20.04 + # rust: stable + # target: aarch64-unknown-linux-gnu + # cross: true + + - build: x86_64-macos + os: macos-latest + rust: stable + target: x86_64-apple-darwin + cross: false + - build: x86_64-windows + os: windows-2019 + rust: stable + target: x86_64-pc-windows-msvc + cross: false + # - build: aarch64-macos + # os: macos-latest + # rust: stable + # target: aarch64-apple-darwin + # - build: x86_64-win-gnu + # os: windows-2019 + # rust: stable-x86_64-gnu + # target: x86_64-pc-windows-gnu + # - build: win32-msvc + # os: windows-2019 + # rust: stable + # target: i686-pc-windows-msvc + + steps: + - name: Checkout sources + uses: actions/checkout@v2 + with: + submodules: true + + - name: Install ${{ matrix.rust }} toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.rust }} + target: ${{ matrix.target }} + override: true + + - name: Install OpenSSL + if: matrix.build == 'aarch64-linux' + run: sudo apt-get install libssl-dev pkg-config + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + use-cross: ${{ matrix.cross }} + command: test + args: --release --locked --target ${{ matrix.target }} + + - name: Build release binary + uses: actions-rs/cargo@v1 + with: + use-cross: ${{ matrix.cross }} + command: build + args: --release --locked --target ${{ matrix.target }} + + - name: Strip release binary (linux and macos) + if: matrix.build == 'x86_64-linux' || matrix.build == 'x86_64-macos' + run: strip "target/${{ matrix.target }}/release/$BIN_NAME" + + - name: Strip release binary (arm) + if: matrix.build == 'aarch64-linux' + run: | + docker run --rm -v \ + "$PWD/target:/target:Z" \ + rustembedded/cross:${{ matrix.target }} \ + aarch64-linux-gnu-strip \ + /target/${{ matrix.target }}/release/$BIN_NAME + + - name: Build archive + shell: bash + run: | + mkdir dist + if [ "${{ matrix.os }}" = "windows-2019" ]; then + cp "target/${{ matrix.target }}/release/$BIN_NAME.exe" "dist/" + else + cp "target/${{ matrix.target }}/release/$BIN_NAME" "dist/" + fi + + - uses: actions/upload-artifact@v2.2.4 + with: + name: bins-${{ matrix.build }} + path: dist + + publish: + name: Publish + needs: [dist] + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + with: + submodules: false + + - uses: actions/download-artifact@v2 + # with: + # path: dist + # - run: ls -al ./dist + - run: ls -al bins-* + + - name: Calculate tag name + run: | + name=dev + if [[ $GITHUB_REF == refs/tags/v* ]]; then + name=${GITHUB_REF:10} + fi + echo ::set-output name=val::$name + echo TAG=$name >> $GITHUB_ENV + id: tagname + + - name: Build archive + shell: bash + run: | + set -ex + + rm -rf tmp + mkdir tmp + mkdir dist + + for dir in bins-* ; do + platform=${dir#"bins-"} + if [[ $platform =~ "windows" ]]; then + exe=".exe" + fi + pkgname=$PROJECT_NAME-$TAG-$platform + mkdir tmp/$pkgname + # cp LICENSE README.md tmp/$pkgname + mv bins-$platform/$BIN_NAME$exe tmp/$pkgname + chmod +x tmp/$pkgname/$BIN_NAME$exe + + if [ "$exe" = "" ]; then + tar cJf dist/$pkgname.tar.xz -C tmp $pkgname + else + (cd tmp && 7z a -r ../dist/$pkgname.zip $pkgname) + fi + done + + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: dist/* + file_glob: true + tag: ${{ steps.tagname.outputs.val }} + overwrite: true + + + # update homebrew + + - name: Extract version + id: extract-version + run: | + printf "::set-output name=%s::%s\n" tag-name "${GITHUB_REF#refs/tags/}" + + - uses: mislav/bump-homebrew-formula-action@v1 + with: + formula-path: ${{env.PROJECT_NAME}}.rb + homebrew-tap: ${{ env.BREW_TAP }} + download-url: "https://github.com/${{ env.REPO_NAME }}/releases/download/${{ steps.extract-version.outputs.tag-name }}/${{env.PROJECT_NAME}}-${{ steps.extract-version.outputs.tag-name }}-x86_64-macos.tar.xz" + commit-message: updating formula for ${{ env.PROJECT_NAME }} + env: + COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }} + + + + + # + # you can use this initial file in your homebrew-tap if you don't have an initial formula: + # .rb + # + # class < Formula + # desc "A test formula" + # homepage "http://www.example.com" + # url "-----" + # version "-----" + # sha256 "-----" + + # def install + # bin.install "" + # end + # end + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f7c915c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +target/ +node_modules/ +pkg/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..d0e5e6a --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2122 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61f2b7f93d2c7d2b08263acaa4a363b3e276806c68af6134c44f523bf1aacd" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61604a8f862e1d5c3229fdd78f8b02c68dcf73a4c4b05fd636d12240aaa242c1" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "async-trait" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "backtrace" +version = "0.3.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a905d892734eea339e896738c14b9afce22b5318f64b951e70bf3844419b01" +dependencies = [ + "addr2line", + "cc", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bit-set" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "lazy_static", + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9df67f7bf9ef8498769f994239c45613ef0c5899415fb58e9add412d2c1a538" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + +[[package]] +name = "cc" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time", + "winapi", +] + +[[package]] +name = "clap" +version = "3.0.0-beta.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcd70aa5597dbc42f7217a543f9ef2768b2ef823ba29036072d30e1d88e98406" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "indexmap", + "lazy_static", + "os_str_bytes", + "strsim", + "termcolor", + "textwrap", + "vec_map", +] + +[[package]] +name = "clap_derive" +version = "3.0.0-beta.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5bb0d655624a0b8770d1c178fb8ffcb1f91cc722cb08f451e3dc72465421ac" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "console" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "regex", + "terminal_size", + "unicode-width", + "winapi", +] + +[[package]] +name = "core-foundation" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" + +[[package]] +name = "cpufeatures" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +dependencies = [ + "autocfg", + "cfg-if 0.1.10", + "lazy_static", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "csv" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +dependencies = [ + "bstr", + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "der-parser" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c61ce7e682729d218090106bf253384df68a2047122ed461ae79ec65d6b4985" +dependencies = [ + "nom", + "num-bigint", + "rusticata-macros", +] + +[[package]] +name = "derive-getters" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c5905670fd9c320154f3a4a01c9e609733cd7b753f3c58777ab7d5ce26686b3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "difference" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "enum-iterator" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eeac5c5edb79e4e39fe8439ef35207780a11f69c52cbe424ce3dfad4cb78de6" +dependencies = [ + "enum-iterator-derive", +] + +[[package]] +name = "enum-iterator-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c134c37760b27a871ba422106eedbb8247da973a09e82558bf26d619c882b159" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "error-chain" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" +dependencies = [ + "backtrace", +] + +[[package]] +name = "fancy-regex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6b8560a05112eb52f04b00e5d3790c0dd75d9d980eb8a122fb23b92a623ccf" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "futures" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" + +[[package]] +name = "futures-executor" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" + +[[package]] +name = "futures-macro" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb" +dependencies = [ + "autocfg", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11" + +[[package]] +name = "futures-task" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99" + +[[package]] +name = "futures-util" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" +dependencies = [ + "autocfg", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "typenum", + "version_check 0.9.3", +] + +[[package]] +name = "getrandom" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi", +] + +[[package]] +name = "getset" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b328c01a4d71d2d8173daa93562a73ab0fe85616876f02500f53d82948c504" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gimli" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0a01e0497841a3b2db4f8afa483cce65f7e96a3498bd6c541734792aeac8fe7" + +[[package]] +name = "git2" +version = "0.13.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c1cbbfc9a1996c6af82c2b4caf828d2c653af4fcdbb0e5674cc966eee5a4197" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "h2" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7f3675cfef6a30c8031cf9e6493ebdc3bb3272a3fea3923c4210d1830e6a472" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "histogram" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb882ccb290b8646e554b157ab0b71e64e8d5bef775cd66b6531e52d302669" + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest", +] + +[[package]] +name = "http" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "399c583b2979440c60be0821a6199eca73bc3c8dcd9d070d75ac726e2c6186e5" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" + +[[package]] +name = "httpdate" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "0.14.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15d1cfb9e4f68655fa04c01f59edb405b6074a0f7118ea881e5026e4a1cd8593" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "ipnet" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "junit-report" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bc92bb61f860b8a88189e67820acdb13fd00149dac50fa365b232d27de34a18" +dependencies = [ + "chrono", + "derive-getters", + "strip-ansi-escapes", + "thiserror", + "xml-rs", +] + +[[package]] +name = "keyscope" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "console", + "csv", + "env_logger", + "serde", + "serde_derive", + "serde_json", + "serde_yaml", + "service_policy_kit", + "vergen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.101" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cb00336871be5ed2c8ed44b60ae9959dc5b9f08539422ed43f09e34ecaeba21" + +[[package]] +name = "libgit2-sys" +version = "0.12.23+1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29730a445bae719db3107078b46808cc45a5b7a6bae3f31272923af969453356" +dependencies = [ + "cc", + "libc", + "libz-sys", + "pkg-config", +] + +[[package]] +name = "libz-sys" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "md-5" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +dependencies = [ + "block-buffer", + "digest", + "opaque-debug", +] + +[[package]] +name = "memchr" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "native-tls" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ba9f7719b5a0f42f338907614285fb5fd70e53858141f69898a1fb7203b24d" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +dependencies = [ + "memchr", + "version_check 0.1.5", +] + +[[package]] +name = "ntapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +dependencies = [ + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39f37e50073ccad23b6d09bcb5b263f4e76d3bb6038e4a3c08e52162ffa8abc2" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openapi" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739caefcf8a5f4638175df8971aba0be5f4651b58d4a217c36f5dd665f83ea00" +dependencies = [ + "error-chain", + "serde", + "serde_derive", + "serde_json", + "serde_yaml", +] + +[[package]] +name = "openssl" +version = "0.10.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d9facdb76fec0b73c406f125d44d86fdad818d66fef0531eec9233ca425ff4a" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-sys", +] + +[[package]] +name = "openssl-probe" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" + +[[package]] +name = "openssl-sys" +version = "0.9.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1996d2d305e561b70d1ee0c53f1542833f4e1ac6ce9a6708b6ff2738ca67dc82" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "os_str_bytes" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6acbef58a60fe69ab50510a55bc8cdd4d6cf2283d27ad338f54cb52747a9cf2d" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project-lite" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check 0.9.3", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check 0.9.3", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro-nested" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" + +[[package]] +name = "proc-macro2" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f5105d4fdaab20335ca9565e106a5d9b82b6219b5ba735731124ac6711d23d" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" +dependencies = [ + "rand_core", +] + +[[package]] +name = "redox_syscall" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +dependencies = [ + "getrandom", + "redox_syscall", +] + +[[package]] +name = "regex" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" + +[[package]] +name = "regex-syntax" +version = "0.6.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" +dependencies = [ + "base64 0.13.0", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "rusoto_core" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b4f000e8934c1b4f70adde180056812e7ea6b1a247952db8ee98c94cd3116cc" +dependencies = [ + "async-trait", + "base64 0.13.0", + "bytes", + "crc32fast", + "futures", + "http", + "hyper", + "hyper-tls", + "lazy_static", + "log", + "rusoto_credential", + "rusoto_signature", + "rustc_version", + "serde", + "serde_json", + "tokio", + "xml-rs", +] + +[[package]] +name = "rusoto_credential" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a46b67db7bb66f5541e44db22b0a02fed59c9603e146db3a9e633272d3bac2f" +dependencies = [ + "async-trait", + "chrono", + "dirs-next", + "futures", + "hyper", + "serde", + "serde_json", + "shlex", + "tokio", + "zeroize", +] + +[[package]] +name = "rusoto_signature" +version = "0.47.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6264e93384b90a747758bcc82079711eacf2e755c3a8b5091687b5349d870bcc" +dependencies = [ + "base64 0.13.0", + "bytes", + "chrono", + "digest", + "futures", + "hex", + "hmac", + "http", + "hyper", + "log", + "md-5", + "percent-encoding", + "pin-project-lite", + "rusoto_credential", + "rustc_version", + "serde", + "sha2", + "tokio", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe8c976e50876cb3423699b190e799ff4c8a1a4f47dc33f4036dd056c077b7bb" +dependencies = [ + "nom", +] + +[[package]] +name = "rustversion" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61b3909d758bb75c79f23d4736fac9433868679d3ad2ea7a61e3c25cfda9a088" + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "schannel" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +dependencies = [ + "lazy_static", + "winapi", +] + +[[package]] +name = "security-framework" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9dd14d83160b528b7bfd66439110573efcfbe281b17fc2ca9f39f550d619c7e" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" + +[[package]] +name = "serde" +version = "1.0.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.130" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f9e390c27c3c0ce8bc5d725f6e4d30a29d26659494aa4b17535f7522c5c950" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8099d3df28273c99a1728190c7a9f19d444c941044f64adf986bee7ec53051" +dependencies = [ + "dtoa", + "linked-hash-map", + "serde", + "yaml-rust", +] + +[[package]] +name = "service_policy_kit" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8568eec154f3120a95838ca1bac1570084786e88ba4c95e6eabe6f6db12f365" +dependencies = [ + "anyhow", + "atty", + "chrono", + "console", + "difference", + "env_logger", + "fancy-regex", + "histogram", + "junit-report", + "log", + "maplit", + "native-tls", + "openapi", + "reqwest", + "rusoto_core", + "serde", + "serde_derive", + "serde_json", + "serde_yaml", + "subprocess", + "x509-parser", +] + +[[package]] +name = "sha2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b69f9a4c9740d74c5baa3fd2e547f9525fa8088a8a958e0ca2409a514e33f5fa" +dependencies = [ + "block-buffer", + "cfg-if 1.0.0", + "cpufeatures", + "digest", + "opaque-debug", +] + +[[package]] +name = "shlex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" + +[[package]] +name = "socket2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "strip-ansi-escapes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8" +dependencies = [ + "vte", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subprocess" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68713fc0f9d941642c1e020d622e6421dfe09e8891ddd4bfa2109fda9a40431d" +dependencies = [ + "crossbeam-utils", + "libc", + "winapi", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f107db402c2c2055242dbf4d2af0e69197202e9faacbef9571bbe47f5a1b84" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "sysinfo" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7de153d0438a648bb71e06e300e54fc641685e96af96d49b843f43172d341c" +dependencies = [ + "cfg-if 1.0.0", + "core-foundation-sys", + "doc-comment", + "libc", + "ntapi", + "once_cell", + "winapi", +] + +[[package]] +name = "tempfile" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "rand", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "textwrap" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5241dd6f21443a3606b432718b166d3cedc962fd4b8bea54a8bc7f514ebda986" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2c2416fdedca8443ae44b4527de1ea633af61d8f7169ffa6e72c5b53d24efcc" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "pin-project-lite", + "signal-hook-registry", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d3725d3efa29485e87311c5b699de63cde14b00ed4d256b8318aa30ca452cd" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "log", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower-service" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" + +[[package]] +name = "tracing" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typenum" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" + +[[package]] +name = "unicode-bidi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" + +[[package]] +name = "unicode-normalization" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" + +[[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "utf8parse" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936e4b492acfd135421d8dca4b1aa80a7bfc26e702ef3af710e0752684df5372" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "vergen" +version = "5.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "265455aab08c55a1ab13f07c8d5e25c7d46900f4484dd7cbd682e77171f93f3c" +dependencies = [ + "anyhow", + "cfg-if 1.0.0", + "chrono", + "enum-iterator", + "getset", + "git2", + "rustc_version", + "rustversion", + "sysinfo", + "thiserror", +] + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" + +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + +[[package]] +name = "vte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +dependencies = [ + "arrayvec", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasm-bindgen" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" + +[[package]] +name = "web-sys" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winreg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +dependencies = [ + "winapi", +] + +[[package]] +name = "x509-parser" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d567e225454110502c91d95cbc6d65828d4ab60d813a23b4a03ebb799a85c45" +dependencies = [ + "base64 0.10.1", + "der-parser", + "nom", + "num-bigint", + "rusticata-macros", + "time", +] + +[[package]] +name = "xml-rs" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zeroize" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf68b08513768deaa790264a7fac27a58cbf2705cfcdc9448362229217d7e970" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..f19a323 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "keyscope" +version = "0.1.0" +edition = "2018" +build = "build.rs" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +clap = "3.0.0-beta.4" +service_policy_kit="0.2.0" +serde="*" +serde_json="*" +serde_derive="*" +serde_yaml="*" +env_logger="*" +anyhow="*" +console="*" +csv="*" + +[build-dependencies] +vergen = "*" +anyhow="*" \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..e1a96db --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021- Dotan Nahum + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ebc29c --- /dev/null +++ b/README.md @@ -0,0 +1,303 @@ +

+
+
+
+ +
+
+

+

+:white_check_mark: Automate your key and secret validation workflows +
+:cowboy_hat_face: Over 30 different providers +
+:robot: Export to JSON, audit via CSV +
+


+

+ +

+ + +

+ +# :key: Keyscope + +Keyscope is a key and secret workflow (validation, invalidation, etc.) tool built in Rust, powered by `service_policy_kit`. + +Current workflows supported: + +* Validation + + +# :rocket: Quick Start + +Grab a release from [releases](https://github.com/spectralops/keyscope/releases), or install via Homebrew: + +``` +brew tap spectralops/tap && brew install keyscope +``` + +## Using keyscope + +You can try out validating a key for a provider, say, Github (assuming the key is in the `GITHUB_TOKEN` environment variable): + +``` +$ keyscope validate github $GITHUB_TOKEN +``` + +You can see which other providers are supported by running: + +``` +$ keyscope validate --providers + + . + : + . + +twilio:validation +keyscope validate twilio -p p1 p2 + +twitter:validation +keyscope validate twitter -p p1 + +zendesk:validation +keyscope validate zendesk -p p1 p1 + +Total 33 providers available. +$ +``` + +And what parameters are required for a certain provider by running (say, `stripe`): + +``` +$ keyscope validate stripe --requirements + +provider stripe requires: + - param: p1 + desc: stripe key +$ +``` + +Finally the general structure of the `validate` command is: + +``` +$ keyscope validate PROVIDER -p PARAM1 PARAM2 .. PARAM_N +``` + +# :white_check_mark: Validation: key should be active + + +You can validate a specific provider like so: + +``` +$ keyscope validate twilio -p $TWILIO_KEY +``` + +With the general pattern of: + +``` +$ keyscope validate PROVIDER -p PARAM1 PARAM2 ... +``` + +The number of keys/params would change based on authentication type: + +* `Bearer` - usually just a single key (token) +* `Basic Auth` - usually 2 keys: user, password +* `OAuth` - usually 2 keys: client_id, client_secret +* And others. + +Each provider in Keyscope will tell you what it requires using `requirements`: + +``` +$ keyscope validate twilio --requirements +``` + +You'll get a report: + +``` +$ keyscope --verbose validate stripe -p $STRIPE_KEY + +✔ stripe:validation: ok 766ms + +Ran 1 interactions with 1 checks in 766ms + +Success: 1 +Failure: 0 + Error: 0 +Skipped: 0 +``` + +And an executable exit code that reflects success/failure. + +You can use the `--verbose` flag to see API responses: + +``` +$ keyscope --verbose validate stripe -p $STRIPE_KEY + +✗ stripe:validation: failed 413ms + status_code: 200 != 401 Unauthorized + +Ran 1 interactions with 1 checks in 413ms + +Success: 0 +Failure: 1 + Error: 0 +Skipped: 0 +``` + +In this case the exit code is `1` (failure). + +# :x: Validation: key should be inactive + +When you are validating keys that are supposed to be inactive, you can use the `flip` flag. In this mode, a failed API access is a good thing, and the exit code will reflect that. + +``` +$ keyscope --flip validate stripe -p $STRIPE_KEY + +✔ stripe:validation: ok 766ms + +Ran 1 interactions with 1 checks in 766ms +``` + +In this case, the key is active - _which is bad for us_. Using `--flip`, the exit code will be `1` (failure). + +# :runner: Setting up a validation job + +## Audit active keys + +You can set up a CI job (or other form of scheduled job you like) to perform an audit, by reading all parameters from a dedicated CSV file like so: + +``` +$ keyscope validate --csv-in report.csv +``` + +The format of the CSV that you need to prepare should include a header line and look like this: + +``` +provider,key1,key2,key3 +twilio,tw-key1,,, +``` + +You can specify as many key columns as you like, as long as you provide an _empty_ value for providers which don't have that many keys, and all rows contain the same amount of cells. + + + + +## Audit inactive keys + +If you have a dump of keys from your vault that are stale have expiry and should have been rotated, you want to test that they are all stale: + +``` +$ keyscope --flip validate --csv-in my-key-audit.csv +``` + + +# :link: Supported providers + +We're always adding [new providers](src/defs.yaml), keep a link to this list or watch this repo to get updated. + +We use our `service_policy_toolkit` library to specify interactions with services and their policies, if you find a service [not in this list](src/defs.yaml) feel free to open an issue or contribute back. + + + +| provider | actions | params | +| --------------------- | ---------- | ------------------------------------------------------------------------------------------------------ | +| hookbin | validation | `hookbin_1` - hookbin ID (https://hookb.in)
`hookbin_2` - fake key to put as a query param | +| covalenthq | validation | `covalenthq_1` - covalent token | +| asana | validation | `asana_1` - asana token | +| bitly | validation | `bitly_1` - bit.ly token | +| localytics | validation | `localytics_1` - localytics user
`localytics_2` - localytics key | +| algolia | validation | `algolia_1` - algolia application ID
`algolia_2` - algolia index
`algolia_3` - algolia API key | +| branchio | validation | `branchio_1` - branch.io key
`branchio_2` - branch.io secret | +| browserstack | validation | `browserstack_1` - browserstack key
`browserstack_2` - browserstack secret | +| buildkite | validation | `buildkite_1` - buildkite token | +| datadog | validation | `datadog_1` - datadog API key | +| github | validation | `github_1` - github token | +| dropbox | validation | `dropbox_1` - dropbox token | +| gitlab | validation | `gitlab_1` - gitlab token | +| heroku | validation | `heroku_1` - heroku token | +| mailchimp | validation | `mailchimp_1` - mailchimp datacenter ID
`mailchimp_2` - mailchimp key | +| mailgun | validation | `mailgun_1` - mailgun key | +| pagerduty | validation | `pagerduty_1` - pagerduty token | +| circleci | validation | `circleci_1` - circleci key | +| facebook-access-token | validation | `facebook-access-token_1` - facebook token | +| salesforce | validation | `salesforce_1` - salesforce instance name
`salesforce_2` - salesforce token | +| jumpcloud | validation | `jumpcloud_1` - jumpcloud key | +| saucelabs-us | validation | `saucelabs-us_1` - saucelabs user
`saucelabs-us_2` - saucelabs key | +| saucelabs-eu | validation | `saucelabs-eu_1` - saucelabs user
`saucelabs-eu_2` - saucelabs key | +| sendgrid | validation | `sendgrid_1` - sendgrid key | +| slack | validation | `slack_1` - slack key | +| slack-webhook | validation | `slack-webhook_1` - slack webhook | +| stripe | validation | `stripe_1` - stripe key | +| travisci | validation | `travisci_1` - travisci domain, choose 'org' or 'com'
`travisci_2` - travisci key | +| twilio | validation | `twilio_1` - twilio account sid
`twilio_2` - twilio token | +| twitter | validation | `twitter_1` - twitter API token | +| zendesk | validation | `zendesk_1` - zendesk domain
`zendesk_2` - zendesk key | +| firebase | validation | `firebase_1` - firebase API key
`firebase_2` - firebase ID token | +| aws | validation | `aws_1` - AWS ID
`aws_2` - AWS secret | + + + + + + + +# :cake: Adding your own providers + +You can specify a custom definitions file (here [is an example](custom-defs.example.yaml)): + +``` +$ keyscope -f your-definitions.yaml validate --list +``` + +Which is suitable for adding your own internal services, key issuing policies, and infrastructure. + +You can also use custom definitions to test out new providers that you'd like to contribute back to keyscope :smile: + +## Basics of a definition + +All definitions represent an interaction. A request being made, and a policy that's being checked against it. + +```yaml +providers: + hookbin: + validation: + # + # the request part + # + request: + params: + - name: hookbin_1 + desc: hookbin ID (https://hookb.in) + - name: hookbin_2 + desc: fake key to put as a query param + id: "postbin:validation" + desc: "Postbin: valid key" + # variable interpolation is good for all fields + uri: "https://hookb.in/{{hookbin_1}}?q={{hookbin_2}}" + method: post + # you can also use headers, body, form, basic_auth and more (see defs.yaml) + + # + # the policy part: all values are actually regular expressions and are matched against service response + # + response: + status_code: "200" + body: ok +``` + +When in doubt, you can check keyscope's own [defs.yaml](src/defs.yaml) for real examples of how to use this infrastructure. + + + + + +# Thanks + +To all [Contributors](https://github.com/spectralops/keyscope/graphs/contributors) - you make this happen, thanks! + + +# Copyright + +Copyright (c) 2021 [@jondot](http://twitter.com/jondot). See [LICENSE](LICENSE.txt) for further details. diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..49dbe9e --- /dev/null +++ b/build.rs @@ -0,0 +1,6 @@ +use anyhow::Result; +use vergen::{vergen, Config}; + +fn main() -> Result<()> { + vergen(Config::default()) +} diff --git a/custom-defs.example.yaml b/custom-defs.example.yaml new file mode 100644 index 0000000..23b417e --- /dev/null +++ b/custom-defs.example.yaml @@ -0,0 +1,22 @@ +providers: + hookbin: + validation: + request: + params: + - name: hookbin_1 + desc: hookbin ID (https://hookb.in) + - name: hookbin_2 + desc: fake key to put as a query param + id: "postbin:validation" + desc: "Postbin: valid key" + uri: "https://hookb.in/{{hookbin_1}}?q={{hookbin_2}}" + method: post + response: + status_code: "200" + body: ok + examples: + ok: + status_code: "201" + body: hello + err: + status_code: "500" diff --git a/media/ks.png b/media/ks.png new file mode 100644 index 0000000000000000000000000000000000000000..f8bbb002de092fcf68e12d772b740b6be8f35269 GIT binary patch literal 243789 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

}6<2caf)sQ??t+xugsMm>Vu))r9`- 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⁢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 h&d, +} +impl Definitions { + pub fn requirements_for(&self, provider: &str) -> AnyResult>> { + match self.providers.get(provider) { + Some(p) => match p.validation.as_ref() { + Some(validation) => Ok(validation.request.params.clone()), + None => Err(anyhow!("no validation for provider {}", provider)), + }, + None => Err(anyhow!("cannot find provider {}", provider)), + } + } + pub fn validation_for(&self, context: &Context, provider: &str) -> AnyResult { + match self.providers.get(provider) { + Some(p) => match p.validation.as_ref() { + Some(validation) => { + validation.ensure_requirements(context)?; + Ok(validation.clone()) + } + None => Err(anyhow!("no validation for provider {}", provider)), + }, + None => Err(anyhow!("cannot find provider {}", provider)), + } + } +} +#[derive(Debug, Serialize, Deserialize)] +pub struct ActionMapping { + pub validation: Option, +} + +pub const BANNER: &str = r#" + __ + / /_____ __ ________________ ____ ___ + / // / _ \/ / / / ___/ ___/ __ \/ __ \/ _ \ + / >\"") + .takes_value(true), + ) + .arg( + Arg::new("flip") + .long("flip") + .about("Flip the meaning of success") + .takes_value(false), + ) + .subcommand( + App::new("validate") + .about("Validate keys") + .arg( + Arg::new("provider") + .index(1) + .value_name("PROVIDER") + .about("Specify the provider to validate for") + .takes_value(true), + ) + .arg( + Arg::new("list") + .long("list") + .about("Show provider list") + .takes_value(false), + ) + .arg( + Arg::new("requirements") + .long("requirements") + .about("Show provider requirements (params)") + .takes_value(false), + ) + .arg( + Arg::new("params") + .long("params") + .short('p') + .value_name("PROVIDER") + .about("Specify the provider to validate for") + .multiple_values(true) + .takes_value(true), + ) + .arg( + Arg::new("csv_in") + .long("--csv-in") + .value_name("FILE") + .about("Read providers and params via CSV") + .takes_value(true), + ), + ); + let v = app.render_version(); + let matches = app.to_owned().get_matches(); + + if !matches.is_present("no_banner") { + println!( + "{}\n {}", + style(BANNER).magenta(), + style(v).dim() + ); + } + + if let Some(validate_matches) = matches.subcommand_matches("validate") { + match validate_command(&matches, validate_matches) { + Ok(ok) => { + exit(if ok { 0 } else { 1 }); + } + Err(err) => { + eprintln!("error: {}", err.to_string()); + } + } + } +} +fn validate_command(matches: &ArgMatches, cmd_matches: &ArgMatches) -> AnyResult { + let defs: Definitions = match matches.value_of("definitions") { + Some(defs_file) => serde_yaml::from_reader(std::fs::File::open(defs_file)?)?, + None => serde_yaml::from_str(DEFS).unwrap(), + }; + let opts = RunOptions::build( + matches.value_of("dry_run").map(|s| s.to_string()), + matches.is_present("flip"), + matches.value_of("reporter").map(|s| s.to_string()), + matches.is_present("verbose"), + )?; + if cmd_matches.is_present("list") { + let mut vec = defs.providers.iter().collect::>(); + vec.sort_by(|(p1, _), (p2, _)| p1.cmp(p2)); + vec.iter().for_each(|(provider, action)| { + if let Some(validation) = action.validation.as_ref() { + println!( + "{}\nkeyscope validate {} -p {}\n", + style(validation.request.get_id()).magenta(), + style(provider).yellow(), + style( + validation + .request + .params + .as_ref() + .map(|p| p + .iter() + .map(|p| p.name.clone()) + .collect::>() + .join(" ")) + .unwrap_or_default() + ) + .blue() + ) + } + }); + println!( + "Total {} providers available.", + vec.iter() + .filter(|(_, action)| action.validation.is_some()) + .count(), + ); + Ok(true) + } else if cmd_matches.is_present("csv_in") { + let file = cmd_matches + .value_of("csv_in") + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("missing csv file"))?; + let mut rdr = csv::Reader::from_path(file)?; + let mut interactions = vec![]; + let mut context = Context::new(); + for res in rdr.records() { + let record = res?; + let provider = record.iter().next().unwrap(); + + // push all keys as: provider_0, provider_1 .. + record.iter().skip(1).enumerate().for_each(|(i, v)| { + context + .vars_bag + .insert(format!("{}_{}", provider, i + 1), v.to_string()); + }); + let interaction = defs.validation_for(&context, provider)?; + interactions.push(interaction); + } + + let mut runner = SequenceRunner::from_opts(&opts); + + let resp = runner.run(&mut context, &interactions); + Ok(resp.ok) + } else if cmd_matches.is_present("requirements") { + let provider = cmd_matches + .value_of("provider") + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("missing provider parameter"))?; + let params = defs.requirements_for(&provider)?; + if let Some(params) = params { + println!("provider {} requires:", provider); + params.iter().for_each(|p| { + println!(" - param: {}\n desc: {}", p.name, p.desc); + }); + } else { + println!("provider {} has no requirements.", provider); + } + + Ok(true) + } else { + let provider = cmd_matches + .value_of("provider") + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("missing provider parameter"))?; + let params = cmd_matches + .values_of("params") + .map(|vs| { + vs.enumerate() + .map(|(i, s)| (format!("{}_{}", provider, i + 1), s.to_string())) + .collect::>() + }) + .ok_or_else(|| anyhow!("missing params parameter"))?; + let mut context = Context::new(); + + params.into_iter().for_each(|(k, v)| { + context.vars_bag.insert(k, v); + }); + let interaction = defs.validation_for(&context, &provider)?; + + let mut runner = SequenceRunner::from_opts(&opts); + + let resp = runner.run(&mut context, &vec![interaction]); + Ok(resp.ok) + } +} diff --git a/tooling/sync-providers.js b/tooling/sync-providers.js new file mode 100644 index 0000000..4246c06 --- /dev/null +++ b/tooling/sync-providers.js @@ -0,0 +1,16 @@ +const L = require('lodash') +const fs = require('fs') +const file = fs.readFileSync('src/defs.yaml', 'utf8') +const YAML = require('yaml') +const defs = YAML.parse(file) + + +const rows = L.map(defs.providers, (def, provider)=>{ + return [provider, 'validation', def.validation.request.params.map(p=> `\`${p.name}\` - ${p.desc}`).join("
")] +}) + +const header = `| provider | actions | params |\n|---|---|---|\n` +const table = header + L.map(rows, ([p, a, prm])=> `|${p}|${a}|${prm}|`).join("\n") +const readme = fs.readFileSync('README.md', 'utf8').toString() +const out = readme.replace(/([\S\s]*?)/g, `\n${table}\n\n`) +fs.writeFileSync("README.md", out) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..f9dac90 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,13 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==