├── .editorconfig ├── .github ├── auto-merge.yml ├── dependabot.yml ├── flowcrafter.yml ├── labels.yml └── workflows │ ├── github.yml │ ├── markdown.yml │ ├── release.yml │ ├── rust.yml │ ├── security.yml │ └── yaml.yml ├── .gitignore ├── .markdownlint.yaml ├── .pre-commit-config.yaml ├── .yamllint.yaml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── Cargo.lock ├── Cargo.toml ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── src ├── builder.rs ├── command.rs ├── command │ ├── build.rs │ ├── select.rs │ └── update.rs ├── main.rs ├── query.rs ├── repository.rs └── testing.rs └── tests ├── build.rs ├── files ├── gitignore-main.zip └── repository │ ├── apples.gitignore │ └── oranges.gitignore ├── select.rs └── update.rs /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | 9 | [*.md] 10 | max_line_length = 80 11 | trim_trailing_whitespace = false 12 | 13 | [*.rs] 14 | indent_size = 4 15 | indent_style = space 16 | max_line_length = 100 17 | 18 | [*.toml] 19 | indent_size = 2 20 | indent_style = space 21 | -------------------------------------------------------------------------------- /.github/auto-merge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | blockingLabels: 3 | - PR-block 4 | 5 | requiredLabels: 6 | - PR-merge 7 | 8 | mergeMethod: rebase 9 | reportStatus: true 10 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | 4 | updates: 5 | - package-ecosystem: "github-actions" 6 | directory: "/" 7 | schedule: 8 | interval: "daily" 9 | labels: 10 | - "C-dependency" 11 | - "PR-merge" 12 | 13 | - package-ecosystem: "cargo" 14 | directory: "/" 15 | schedule: 16 | interval: "daily" 17 | labels: 18 | - "C-dependency" 19 | - "PR-merge" 20 | -------------------------------------------------------------------------------- /.github/flowcrafter.yml: -------------------------------------------------------------------------------- 1 | library: 2 | github: 3 | instance: https://api.github.com/ 4 | owner: jdno 5 | repository: workflows 6 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: C-bug 3 | color: 1abc9c 4 | description: "Category: Bug" 5 | - name: C-dependency 6 | color: 1abc9c 7 | description: "Category: Dependency" 8 | - name: C-documentation 9 | color: 1abc9c 10 | description: "Category: Documentation" 11 | - name: C-feature-request 12 | color: 1abc9c 13 | description: "Category: Feature requests" 14 | - name: PR-block 15 | color: 3498db 16 | description: "Pull Request: Do not merge" 17 | - name: PR-merge 18 | color: 3498db 19 | description: "Pull Request: Merge when ready" 20 | -------------------------------------------------------------------------------- /.github/workflows/github.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: GitHub 3 | 4 | "on": 5 | push: 6 | branches: 7 | - main 8 | 9 | jobs: 10 | labels: 11 | name: Sync labels 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - name: Checkout code 16 | uses: actions/checkout@v4 17 | 18 | - name: Sync labels 19 | uses: micnncim/action-label-syncer@v1.3.0 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | with: 23 | manifest: .github/labels.yml 24 | -------------------------------------------------------------------------------- /.github/workflows/markdown.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Markdown 3 | 4 | "on": 5 | push: 6 | branches: 7 | - main 8 | pull_request: 9 | 10 | jobs: 11 | detect-changes: 12 | name: Detect changes 13 | runs-on: ubuntu-latest 14 | 15 | outputs: 16 | any_changed: ${{ steps.detect-changes.outputs.any_changed }} 17 | 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v4 21 | 22 | - name: Get changed files 23 | id: detect-changes 24 | uses: tj-actions/changed-files@v45 25 | with: 26 | files: | 27 | **/*.md 28 | 29 | - name: Print changed files 30 | run: | 31 | for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do 32 | echo "$file" 33 | done 34 | 35 | lint: 36 | name: Lint code 37 | runs-on: ubuntu-latest 38 | 39 | needs: detect-changes 40 | if: needs.detect-changes.outputs.any_changed == 'true' 41 | 42 | steps: 43 | - name: Checkout code 44 | uses: actions/checkout@v4 45 | 46 | - name: markdownlint-cli 47 | uses: nosborn/github-action-markdown-cli@v3.3.0 48 | with: 49 | files: "**.md" 50 | 51 | style: 52 | name: Check style 53 | runs-on: ubuntu-latest 54 | 55 | needs: detect-changes 56 | if: needs.detect-changes.outputs.any_changed == 'true' 57 | 58 | steps: 59 | - name: Checkout code 60 | uses: actions/checkout@v4 61 | 62 | - name: prettier 63 | uses: creyD/prettier_action@v4.3 64 | with: 65 | dry: true 66 | prettier_options: "--check **/*.md" 67 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Release 3 | 4 | "on": 5 | release: 6 | types: [published] 7 | 8 | jobs: 9 | publish: 10 | name: Publish crate 11 | runs-on: ubuntu-latest 12 | 13 | container: 14 | image: ghcr.io/jdno/rust:main 15 | 16 | steps: 17 | - name: Checkout code 18 | uses: actions/checkout@v4 19 | 20 | - name: Publish crate 21 | run: cargo publish -v --all-features 22 | env: 23 | CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }} 24 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Rust 3 | 4 | "on": 5 | push: 6 | branches: 7 | - main 8 | pull_request: 9 | 10 | env: 11 | CARGO_INCREMENTAL: 0 12 | CARGO_PROFILE_TEST_DEBUG: 0 13 | 14 | jobs: 15 | detect-changes: 16 | name: Detect changes 17 | runs-on: ubuntu-latest 18 | 19 | outputs: 20 | any_changed: ${{ steps.detect-changes.outputs.any_changed }} 21 | 22 | steps: 23 | - name: Checkout code 24 | uses: actions/checkout@v4 25 | 26 | - name: Get changed files 27 | id: detect-changes 28 | uses: tj-actions/changed-files@v45 29 | with: 30 | files: | 31 | **/*.rs 32 | **/*.toml 33 | 34 | - name: Print changed files 35 | run: | 36 | for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do 37 | echo "$file" 38 | done 39 | 40 | lint: 41 | name: Lint code 42 | runs-on: ubuntu-latest 43 | 44 | needs: detect-changes 45 | if: needs.detect-changes.outputs.any_changed == 'true' 46 | 47 | container: 48 | image: ghcr.io/jdno/rust:main 49 | 50 | steps: 51 | - name: Checkout code 52 | uses: actions/checkout@v4 53 | 54 | - name: Cache build artifacts 55 | uses: swatinem/rust-cache@v2.7.3 56 | 57 | - name: Run Clippy 58 | run: cargo clippy --all-targets --all-features -- -D warnings 59 | 60 | style: 61 | name: Check style 62 | runs-on: ubuntu-latest 63 | 64 | needs: detect-changes 65 | if: needs.detect-changes.outputs.any_changed == 'true' 66 | 67 | container: 68 | image: ghcr.io/jdno/rust:main 69 | 70 | steps: 71 | - name: Checkout code 72 | uses: actions/checkout@v4 73 | 74 | - name: Run Rustfmt 75 | run: cargo fmt --all -- --check 76 | 77 | test: 78 | name: Run tests 79 | runs-on: ubuntu-latest 80 | 81 | needs: detect-changes 82 | if: needs.detect-changes.outputs.any_changed == 'true' 83 | 84 | container: 85 | image: xd009642/tarpaulin:0.27.3-slim 86 | options: --security-opt seccomp=unconfined 87 | 88 | steps: 89 | - name: Install system dependencies 90 | run: | 91 | apt-get update && apt-get install -y pkg-config openssl libssl-dev 92 | 93 | - name: Checkout code 94 | uses: actions/checkout@v4 95 | 96 | - name: Cache build artifacts 97 | uses: swatinem/rust-cache@v2.7.3 98 | 99 | - name: Run tests with test coverage 100 | run: | 101 | cargo tarpaulin \ 102 | --all-features \ 103 | --engine llvm \ 104 | --out xml \ 105 | --skip-clean \ 106 | --target-dir target/tarpaulin-target/ \ 107 | --timeout 120 \ 108 | --verbose 109 | 110 | - name: Upload to codecov.io 111 | uses: codecov/codecov-action@v4 112 | continue-on-error: true 113 | with: 114 | token: ${{ secrets.CODECOV_TOKEN }} 115 | 116 | - name: Archive code coverage results 117 | uses: actions/upload-artifact@v4 118 | with: 119 | name: code-coverage-report 120 | path: cobertura.xml 121 | -------------------------------------------------------------------------------- /.github/workflows/security.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Security 3 | 4 | "on": 5 | schedule: 6 | - cron: "0 0 * * *" 7 | 8 | jobs: 9 | audit: 10 | name: Audit 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout code 15 | uses: actions/checkout@v4 16 | 17 | - name: Run security audit 18 | uses: actions-rs/audit-check@v1 19 | with: 20 | token: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /.github/workflows/yaml.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: YAML 3 | 4 | "on": 5 | push: 6 | branches: 7 | - main 8 | pull_request: 9 | 10 | jobs: 11 | detect-changes: 12 | name: Detect changes 13 | runs-on: ubuntu-latest 14 | 15 | outputs: 16 | any_changed: ${{ steps.detect-changes.outputs.any_changed }} 17 | 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v4 21 | 22 | - name: Get changed files 23 | id: detect-changes 24 | uses: tj-actions/changed-files@v45 25 | with: 26 | files: | 27 | **/*.yaml 28 | **/*.yml 29 | 30 | - name: Print changed files 31 | run: | 32 | for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do 33 | echo "$file" 34 | done 35 | 36 | lint: 37 | name: Lint code 38 | runs-on: ubuntu-latest 39 | 40 | needs: detect-changes 41 | if: needs.detect-changes.outputs.any_changed == 'true' 42 | 43 | steps: 44 | - name: Checkout code 45 | uses: actions/checkout@v4 46 | 47 | - name: Run yamllint 48 | uses: actionshub/yamllint@v1.8.2 49 | 50 | style: 51 | name: Check style 52 | runs-on: ubuntu-latest 53 | 54 | needs: detect-changes 55 | if: needs.detect-changes.outputs.any_changed == 'true' 56 | 57 | steps: 58 | - name: Checkout code 59 | uses: actions/checkout@v4 60 | 61 | - name: prettier 62 | uses: creyD/prettier_action@v4.3 63 | with: 64 | dry: true 65 | prettier_options: "--check **/*.{yml,yaml}" 66 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Rust.gitignore 2 | 3 | # Generated by Cargo, will have compiled files and executables 4 | /target/ 5 | 6 | # These are backup files generated by rustfmt 7 | **/*.rs.bk 8 | -------------------------------------------------------------------------------- /.markdownlint.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | MD024: false 3 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | # pre-commit configuration 2 | # 3 | # We use pre-commit to enforce a consistency in our repositories. By default, 4 | # YAML and Markdown files get linted, and Prettier runs to auto-format the file 5 | # types it supports. Clippy and Rustfmt do the same for Rust files. 6 | # 7 | # See https://pre-commit.com for more information 8 | # See https://pre-commit.com/hooks.html for more hooks 9 | --- 10 | repos: 11 | - repo: https://github.com/pre-commit/pre-commit-hooks 12 | rev: v4.0.1 13 | hooks: 14 | - id: check-added-large-files 15 | - id: check-case-conflict 16 | - id: end-of-file-fixer 17 | - id: trailing-whitespace 18 | - repo: https://github.com/adrienverge/yamllint 19 | rev: v1.26.3 20 | hooks: 21 | - id: yamllint 22 | - repo: https://github.com/igorshubovych/markdownlint-cli 23 | rev: v0.30.0 24 | hooks: 25 | - id: markdownlint 26 | - repo: https://github.com/pre-commit/mirrors-prettier 27 | rev: v2.5.1 28 | hooks: 29 | - id: prettier 30 | - repo: https://github.com/jdno/pre-commit-rust 31 | rev: v1.1.0 32 | hooks: 33 | - id: clippy 34 | args: [--all-targets, --all-features, --, -D, warnings] 35 | - id: fmt 36 | -------------------------------------------------------------------------------- /.yamllint.yaml: -------------------------------------------------------------------------------- 1 | extends: default 2 | 3 | rules: 4 | line-length: 5 | max: 80 6 | level: warning 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | The changelog documents all notable changes to this project. The format is based 4 | on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project 5 | adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) as defined 6 | by [Cargo](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field) 7 | and [Rust](https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md). 8 | 9 | 10 | 11 | ## [Unreleased] 12 | 13 | ## [2.1.1] - 2021-12-13 14 | 15 | ### Fixed 16 | 17 | - Update target branch for `github/gitignore` to 'main' 18 | 19 | ## [2.1.0] - 2020-08-07 20 | 21 | ### Added 22 | 23 | - Add template names as section headings to `.gitignore` file 24 | 25 | ## [2.0.1] - 2020-05-10 26 | 27 | ### Fixed 28 | 29 | - Fix `Path to repository does not exist` error for fresh installations ([#4](https://github.com/jdno/alfred-gitignore/issues/4)) 30 | 31 | ## [2.0.0] - 2020-04-26 32 | 33 | ### Changed 34 | 35 | - Rewrite workflow in [Rust](https://rust-lang.org) 36 | 37 | ### Removed 38 | 39 | - Remove dependency on `git` executable in path 40 | 41 | ## [1.1.0] - 2017-11-26 42 | 43 | ### Fixed 44 | 45 | - Update dependency to fix bug in [macOS Sierra and later](https://github.com/deanishe/alfred-workflow/issues/111) 46 | 47 | ## [1.0.0] - 2015-11-25 48 | 49 | ### Added 50 | 51 | - Release a workflow that can create `.gitignore` files from Alfred 52 | 53 | 54 | 55 | [unreleased]: https://github.com/jdno/alfred-gitignore/compare/v2.1.1...HEAD 56 | [2.1.1]: https://github.com/jdno/alfred-gitignore/compare/v2.1.0...v2.1.1 57 | [2.1.0]: https://github.com/jdno/alfred-gitignore/compare/v2.0.1...v2.1.0 58 | [2.0.1]: https://github.com/jdno/alfred-gitignore/compare/v2.0.0...v2.0.1 59 | [2.0.0]: https://github.com/jdno/alfred-gitignore/compare/v1.1.0...v2.0.0 60 | [1.1.0]: https://github.com/jdno/alfred-gitignore/compare/v1.0.0...v1.1.0 61 | [1.0.0]: https://github.com/jdno/alfred-gitignore/releases/tag/1.0.0 62 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | - Demonstrating empathy and kindness toward other people 21 | - Being respectful of differing opinions, viewpoints, and experiences 22 | - Giving and gracefully accepting constructive feedback 23 | - Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | - Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | - The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | - Trolling, insulting or derogatory comments, and personal or political attacks 33 | - Public or private harassment 34 | - Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | - Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | [jandavid+conduct@6a64.com](mailto:jandavid+conduct@6a64.com). 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | . 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | . Translations are available at 128 | . 129 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.19.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "aes" 22 | version = "0.8.3" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" 25 | dependencies = [ 26 | "cfg-if", 27 | "cipher", 28 | "cpufeatures", 29 | ] 30 | 31 | [[package]] 32 | name = "aho-corasick" 33 | version = "1.0.2" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" 36 | dependencies = [ 37 | "memchr", 38 | ] 39 | 40 | [[package]] 41 | name = "alfred" 42 | version = "4.0.2" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "55e70f873d24b2638c6641064dc884c6f5509c14e2975102e7f751a71c53700c" 45 | dependencies = [ 46 | "serde_json", 47 | ] 48 | 49 | [[package]] 50 | name = "alfred-gitignore" 51 | version = "2.1.1" 52 | dependencies = [ 53 | "alfred", 54 | "assert_cmd", 55 | "clap", 56 | "getset", 57 | "mockito", 58 | "predicates", 59 | "reqwest", 60 | "tempfile", 61 | "zip", 62 | ] 63 | 64 | [[package]] 65 | name = "ansi_term" 66 | version = "0.12.1" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" 69 | dependencies = [ 70 | "winapi", 71 | ] 72 | 73 | [[package]] 74 | name = "anstyle" 75 | version = "1.0.1" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" 78 | 79 | [[package]] 80 | name = "assert-json-diff" 81 | version = "2.0.2" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" 84 | dependencies = [ 85 | "serde", 86 | "serde_json", 87 | ] 88 | 89 | [[package]] 90 | name = "assert_cmd" 91 | version = "2.0.16" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" 94 | dependencies = [ 95 | "anstyle", 96 | "bstr", 97 | "doc-comment", 98 | "libc", 99 | "predicates", 100 | "predicates-core", 101 | "predicates-tree", 102 | "wait-timeout", 103 | ] 104 | 105 | [[package]] 106 | name = "atty" 107 | version = "0.2.14" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 110 | dependencies = [ 111 | "hermit-abi", 112 | "libc", 113 | "winapi", 114 | ] 115 | 116 | [[package]] 117 | name = "autocfg" 118 | version = "1.1.0" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 121 | 122 | [[package]] 123 | name = "backtrace" 124 | version = "0.3.67" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" 127 | dependencies = [ 128 | "addr2line", 129 | "cc", 130 | "cfg-if", 131 | "libc", 132 | "miniz_oxide 0.6.2", 133 | "object", 134 | "rustc-demangle", 135 | ] 136 | 137 | [[package]] 138 | name = "base64" 139 | version = "0.22.0" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" 142 | 143 | [[package]] 144 | name = "base64ct" 145 | version = "1.6.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 148 | 149 | [[package]] 150 | name = "bitflags" 151 | version = "1.3.2" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 154 | 155 | [[package]] 156 | name = "bitflags" 157 | version = "2.4.1" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 160 | 161 | [[package]] 162 | name = "block-buffer" 163 | version = "0.10.4" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 166 | dependencies = [ 167 | "generic-array", 168 | ] 169 | 170 | [[package]] 171 | name = "bstr" 172 | version = "1.5.0" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" 175 | dependencies = [ 176 | "memchr", 177 | "once_cell", 178 | "regex-automata", 179 | "serde", 180 | ] 181 | 182 | [[package]] 183 | name = "bumpalo" 184 | version = "3.13.0" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" 187 | 188 | [[package]] 189 | name = "byteorder" 190 | version = "1.4.3" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 193 | 194 | [[package]] 195 | name = "bytes" 196 | version = "1.4.0" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" 199 | 200 | [[package]] 201 | name = "bzip2" 202 | version = "0.4.4" 203 | source = "registry+https://github.com/rust-lang/crates.io-index" 204 | checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" 205 | dependencies = [ 206 | "bzip2-sys", 207 | "libc", 208 | ] 209 | 210 | [[package]] 211 | name = "bzip2-sys" 212 | version = "0.1.11+1.0.8" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" 215 | dependencies = [ 216 | "cc", 217 | "libc", 218 | "pkg-config", 219 | ] 220 | 221 | [[package]] 222 | name = "cc" 223 | version = "1.0.94" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | checksum = "17f6e324229dc011159fcc089755d1e2e216a90d43a7dea6853ca740b84f35e7" 226 | dependencies = [ 227 | "jobserver", 228 | "libc", 229 | ] 230 | 231 | [[package]] 232 | name = "cfg-if" 233 | version = "1.0.0" 234 | source = "registry+https://github.com/rust-lang/crates.io-index" 235 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 236 | 237 | [[package]] 238 | name = "cipher" 239 | version = "0.4.4" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" 242 | dependencies = [ 243 | "crypto-common", 244 | "inout", 245 | ] 246 | 247 | [[package]] 248 | name = "clap" 249 | version = "2.34.0" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" 252 | dependencies = [ 253 | "ansi_term", 254 | "atty", 255 | "bitflags 1.3.2", 256 | "strsim", 257 | "textwrap", 258 | "unicode-width", 259 | "vec_map", 260 | ] 261 | 262 | [[package]] 263 | name = "colored" 264 | version = "2.0.0" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" 267 | dependencies = [ 268 | "atty", 269 | "lazy_static", 270 | "winapi", 271 | ] 272 | 273 | [[package]] 274 | name = "constant_time_eq" 275 | version = "0.1.5" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 278 | 279 | [[package]] 280 | name = "core-foundation" 281 | version = "0.9.3" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 284 | dependencies = [ 285 | "core-foundation-sys", 286 | "libc", 287 | ] 288 | 289 | [[package]] 290 | name = "core-foundation-sys" 291 | version = "0.8.4" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 294 | 295 | [[package]] 296 | name = "cpufeatures" 297 | version = "0.2.8" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" 300 | dependencies = [ 301 | "libc", 302 | ] 303 | 304 | [[package]] 305 | name = "crc32fast" 306 | version = "1.3.2" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 309 | dependencies = [ 310 | "cfg-if", 311 | ] 312 | 313 | [[package]] 314 | name = "crossbeam-utils" 315 | version = "0.8.16" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" 318 | dependencies = [ 319 | "cfg-if", 320 | ] 321 | 322 | [[package]] 323 | name = "crypto-common" 324 | version = "0.1.6" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 327 | dependencies = [ 328 | "generic-array", 329 | "typenum", 330 | ] 331 | 332 | [[package]] 333 | name = "difflib" 334 | version = "0.4.0" 335 | source = "registry+https://github.com/rust-lang/crates.io-index" 336 | checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" 337 | 338 | [[package]] 339 | name = "digest" 340 | version = "0.10.7" 341 | source = "registry+https://github.com/rust-lang/crates.io-index" 342 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 343 | dependencies = [ 344 | "block-buffer", 345 | "crypto-common", 346 | "subtle", 347 | ] 348 | 349 | [[package]] 350 | name = "doc-comment" 351 | version = "0.3.3" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" 354 | 355 | [[package]] 356 | name = "encoding_rs" 357 | version = "0.8.32" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" 360 | dependencies = [ 361 | "cfg-if", 362 | ] 363 | 364 | [[package]] 365 | name = "equivalent" 366 | version = "1.0.1" 367 | source = "registry+https://github.com/rust-lang/crates.io-index" 368 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 369 | 370 | [[package]] 371 | name = "errno" 372 | version = "0.3.8" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 375 | dependencies = [ 376 | "libc", 377 | "windows-sys 0.52.0", 378 | ] 379 | 380 | [[package]] 381 | name = "fastrand" 382 | version = "2.0.1" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 385 | 386 | [[package]] 387 | name = "flate2" 388 | version = "1.0.26" 389 | source = "registry+https://github.com/rust-lang/crates.io-index" 390 | checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" 391 | dependencies = [ 392 | "crc32fast", 393 | "miniz_oxide 0.7.1", 394 | ] 395 | 396 | [[package]] 397 | name = "float-cmp" 398 | version = "0.9.0" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" 401 | dependencies = [ 402 | "num-traits", 403 | ] 404 | 405 | [[package]] 406 | name = "fnv" 407 | version = "1.0.7" 408 | source = "registry+https://github.com/rust-lang/crates.io-index" 409 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 410 | 411 | [[package]] 412 | name = "foreign-types" 413 | version = "0.3.2" 414 | source = "registry+https://github.com/rust-lang/crates.io-index" 415 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 416 | dependencies = [ 417 | "foreign-types-shared", 418 | ] 419 | 420 | [[package]] 421 | name = "foreign-types-shared" 422 | version = "0.1.1" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 425 | 426 | [[package]] 427 | name = "form_urlencoded" 428 | version = "1.2.0" 429 | source = "registry+https://github.com/rust-lang/crates.io-index" 430 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 431 | dependencies = [ 432 | "percent-encoding", 433 | ] 434 | 435 | [[package]] 436 | name = "futures-channel" 437 | version = "0.3.28" 438 | source = "registry+https://github.com/rust-lang/crates.io-index" 439 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" 440 | dependencies = [ 441 | "futures-core", 442 | "futures-sink", 443 | ] 444 | 445 | [[package]] 446 | name = "futures-core" 447 | version = "0.3.28" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" 450 | 451 | [[package]] 452 | name = "futures-io" 453 | version = "0.3.28" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" 456 | 457 | [[package]] 458 | name = "futures-sink" 459 | version = "0.3.28" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" 462 | 463 | [[package]] 464 | name = "futures-task" 465 | version = "0.3.28" 466 | source = "registry+https://github.com/rust-lang/crates.io-index" 467 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" 468 | 469 | [[package]] 470 | name = "futures-util" 471 | version = "0.3.28" 472 | source = "registry+https://github.com/rust-lang/crates.io-index" 473 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" 474 | dependencies = [ 475 | "futures-core", 476 | "futures-io", 477 | "futures-sink", 478 | "futures-task", 479 | "memchr", 480 | "pin-project-lite", 481 | "pin-utils", 482 | "slab", 483 | ] 484 | 485 | [[package]] 486 | name = "generic-array" 487 | version = "0.14.7" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 490 | dependencies = [ 491 | "typenum", 492 | "version_check", 493 | ] 494 | 495 | [[package]] 496 | name = "getrandom" 497 | version = "0.2.10" 498 | source = "registry+https://github.com/rust-lang/crates.io-index" 499 | checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" 500 | dependencies = [ 501 | "cfg-if", 502 | "libc", 503 | "wasi", 504 | ] 505 | 506 | [[package]] 507 | name = "getset" 508 | version = "0.1.2" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" 511 | dependencies = [ 512 | "proc-macro-error", 513 | "proc-macro2", 514 | "quote", 515 | "syn 1.0.109", 516 | ] 517 | 518 | [[package]] 519 | name = "gimli" 520 | version = "0.27.3" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" 523 | 524 | [[package]] 525 | name = "h2" 526 | version = "0.4.4" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" 529 | dependencies = [ 530 | "bytes", 531 | "fnv", 532 | "futures-core", 533 | "futures-sink", 534 | "futures-util", 535 | "http", 536 | "indexmap", 537 | "slab", 538 | "tokio", 539 | "tokio-util", 540 | "tracing", 541 | ] 542 | 543 | [[package]] 544 | name = "hashbrown" 545 | version = "0.14.3" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 548 | 549 | [[package]] 550 | name = "hermit-abi" 551 | version = "0.1.19" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 554 | dependencies = [ 555 | "libc", 556 | ] 557 | 558 | [[package]] 559 | name = "hmac" 560 | version = "0.12.1" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 563 | dependencies = [ 564 | "digest", 565 | ] 566 | 567 | [[package]] 568 | name = "http" 569 | version = "1.1.0" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" 572 | dependencies = [ 573 | "bytes", 574 | "fnv", 575 | "itoa", 576 | ] 577 | 578 | [[package]] 579 | name = "http-body" 580 | version = "1.0.0" 581 | source = "registry+https://github.com/rust-lang/crates.io-index" 582 | checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" 583 | dependencies = [ 584 | "bytes", 585 | "http", 586 | ] 587 | 588 | [[package]] 589 | name = "http-body-util" 590 | version = "0.1.1" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" 593 | dependencies = [ 594 | "bytes", 595 | "futures-core", 596 | "http", 597 | "http-body", 598 | "pin-project-lite", 599 | ] 600 | 601 | [[package]] 602 | name = "httparse" 603 | version = "1.8.0" 604 | source = "registry+https://github.com/rust-lang/crates.io-index" 605 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 606 | 607 | [[package]] 608 | name = "httpdate" 609 | version = "1.0.2" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 612 | 613 | [[package]] 614 | name = "hyper" 615 | version = "1.3.1" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" 618 | dependencies = [ 619 | "bytes", 620 | "futures-channel", 621 | "futures-util", 622 | "h2", 623 | "http", 624 | "http-body", 625 | "httparse", 626 | "httpdate", 627 | "itoa", 628 | "pin-project-lite", 629 | "smallvec", 630 | "tokio", 631 | "want", 632 | ] 633 | 634 | [[package]] 635 | name = "hyper-rustls" 636 | version = "0.27.2" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" 639 | dependencies = [ 640 | "futures-util", 641 | "http", 642 | "hyper", 643 | "hyper-util", 644 | "rustls", 645 | "rustls-pki-types", 646 | "tokio", 647 | "tokio-rustls", 648 | "tower-service", 649 | ] 650 | 651 | [[package]] 652 | name = "hyper-tls" 653 | version = "0.6.0" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 656 | dependencies = [ 657 | "bytes", 658 | "http-body-util", 659 | "hyper", 660 | "hyper-util", 661 | "native-tls", 662 | "tokio", 663 | "tokio-native-tls", 664 | "tower-service", 665 | ] 666 | 667 | [[package]] 668 | name = "hyper-util" 669 | version = "0.1.3" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" 672 | dependencies = [ 673 | "bytes", 674 | "futures-channel", 675 | "futures-util", 676 | "http", 677 | "http-body", 678 | "hyper", 679 | "pin-project-lite", 680 | "socket2 0.5.6", 681 | "tokio", 682 | "tower", 683 | "tower-service", 684 | "tracing", 685 | ] 686 | 687 | [[package]] 688 | name = "idna" 689 | version = "0.4.0" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 692 | dependencies = [ 693 | "unicode-bidi", 694 | "unicode-normalization", 695 | ] 696 | 697 | [[package]] 698 | name = "indexmap" 699 | version = "2.1.0" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 702 | dependencies = [ 703 | "equivalent", 704 | "hashbrown", 705 | ] 706 | 707 | [[package]] 708 | name = "inout" 709 | version = "0.1.3" 710 | source = "registry+https://github.com/rust-lang/crates.io-index" 711 | checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" 712 | dependencies = [ 713 | "generic-array", 714 | ] 715 | 716 | [[package]] 717 | name = "ipnet" 718 | version = "2.8.0" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" 721 | 722 | [[package]] 723 | name = "itoa" 724 | version = "1.0.6" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" 727 | 728 | [[package]] 729 | name = "jobserver" 730 | version = "0.1.26" 731 | source = "registry+https://github.com/rust-lang/crates.io-index" 732 | checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" 733 | dependencies = [ 734 | "libc", 735 | ] 736 | 737 | [[package]] 738 | name = "js-sys" 739 | version = "0.3.64" 740 | source = "registry+https://github.com/rust-lang/crates.io-index" 741 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 742 | dependencies = [ 743 | "wasm-bindgen", 744 | ] 745 | 746 | [[package]] 747 | name = "lazy_static" 748 | version = "1.4.0" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 751 | 752 | [[package]] 753 | name = "libc" 754 | version = "0.2.153" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" 757 | 758 | [[package]] 759 | name = "linux-raw-sys" 760 | version = "0.4.12" 761 | source = "registry+https://github.com/rust-lang/crates.io-index" 762 | checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" 763 | 764 | [[package]] 765 | name = "lock_api" 766 | version = "0.4.10" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" 769 | dependencies = [ 770 | "autocfg", 771 | "scopeguard", 772 | ] 773 | 774 | [[package]] 775 | name = "log" 776 | version = "0.4.19" 777 | source = "registry+https://github.com/rust-lang/crates.io-index" 778 | checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" 779 | 780 | [[package]] 781 | name = "memchr" 782 | version = "2.5.0" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 785 | 786 | [[package]] 787 | name = "mime" 788 | version = "0.3.17" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 791 | 792 | [[package]] 793 | name = "miniz_oxide" 794 | version = "0.6.2" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" 797 | dependencies = [ 798 | "adler", 799 | ] 800 | 801 | [[package]] 802 | name = "miniz_oxide" 803 | version = "0.7.1" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 806 | dependencies = [ 807 | "adler", 808 | ] 809 | 810 | [[package]] 811 | name = "mio" 812 | version = "0.8.11" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 815 | dependencies = [ 816 | "libc", 817 | "wasi", 818 | "windows-sys 0.48.0", 819 | ] 820 | 821 | [[package]] 822 | name = "mockito" 823 | version = "1.5.0" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" 826 | dependencies = [ 827 | "assert-json-diff", 828 | "bytes", 829 | "colored", 830 | "futures-util", 831 | "http", 832 | "http-body", 833 | "http-body-util", 834 | "hyper", 835 | "hyper-util", 836 | "log", 837 | "rand", 838 | "regex", 839 | "serde_json", 840 | "serde_urlencoded", 841 | "similar", 842 | "tokio", 843 | ] 844 | 845 | [[package]] 846 | name = "native-tls" 847 | version = "0.2.11" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" 850 | dependencies = [ 851 | "lazy_static", 852 | "libc", 853 | "log", 854 | "openssl", 855 | "openssl-probe", 856 | "openssl-sys", 857 | "schannel", 858 | "security-framework", 859 | "security-framework-sys", 860 | "tempfile", 861 | ] 862 | 863 | [[package]] 864 | name = "normalize-line-endings" 865 | version = "0.3.0" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" 868 | 869 | [[package]] 870 | name = "num-traits" 871 | version = "0.2.15" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 874 | dependencies = [ 875 | "autocfg", 876 | ] 877 | 878 | [[package]] 879 | name = "object" 880 | version = "0.30.4" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" 883 | dependencies = [ 884 | "memchr", 885 | ] 886 | 887 | [[package]] 888 | name = "once_cell" 889 | version = "1.18.0" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 892 | 893 | [[package]] 894 | name = "openssl" 895 | version = "0.10.66" 896 | source = "registry+https://github.com/rust-lang/crates.io-index" 897 | checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" 898 | dependencies = [ 899 | "bitflags 2.4.1", 900 | "cfg-if", 901 | "foreign-types", 902 | "libc", 903 | "once_cell", 904 | "openssl-macros", 905 | "openssl-sys", 906 | ] 907 | 908 | [[package]] 909 | name = "openssl-macros" 910 | version = "0.1.1" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 913 | dependencies = [ 914 | "proc-macro2", 915 | "quote", 916 | "syn 2.0.22", 917 | ] 918 | 919 | [[package]] 920 | name = "openssl-probe" 921 | version = "0.1.5" 922 | source = "registry+https://github.com/rust-lang/crates.io-index" 923 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 924 | 925 | [[package]] 926 | name = "openssl-sys" 927 | version = "0.9.103" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" 930 | dependencies = [ 931 | "cc", 932 | "libc", 933 | "pkg-config", 934 | "vcpkg", 935 | ] 936 | 937 | [[package]] 938 | name = "parking_lot" 939 | version = "0.12.1" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 942 | dependencies = [ 943 | "lock_api", 944 | "parking_lot_core", 945 | ] 946 | 947 | [[package]] 948 | name = "parking_lot_core" 949 | version = "0.9.8" 950 | source = "registry+https://github.com/rust-lang/crates.io-index" 951 | checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" 952 | dependencies = [ 953 | "cfg-if", 954 | "libc", 955 | "redox_syscall", 956 | "smallvec", 957 | "windows-targets 0.48.0", 958 | ] 959 | 960 | [[package]] 961 | name = "password-hash" 962 | version = "0.4.2" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 965 | dependencies = [ 966 | "base64ct", 967 | "rand_core", 968 | "subtle", 969 | ] 970 | 971 | [[package]] 972 | name = "pbkdf2" 973 | version = "0.11.0" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" 976 | dependencies = [ 977 | "digest", 978 | "hmac", 979 | "password-hash", 980 | "sha2", 981 | ] 982 | 983 | [[package]] 984 | name = "percent-encoding" 985 | version = "2.3.0" 986 | source = "registry+https://github.com/rust-lang/crates.io-index" 987 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 988 | 989 | [[package]] 990 | name = "pin-project" 991 | version = "1.1.5" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" 994 | dependencies = [ 995 | "pin-project-internal", 996 | ] 997 | 998 | [[package]] 999 | name = "pin-project-internal" 1000 | version = "1.1.5" 1001 | source = "registry+https://github.com/rust-lang/crates.io-index" 1002 | checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" 1003 | dependencies = [ 1004 | "proc-macro2", 1005 | "quote", 1006 | "syn 2.0.22", 1007 | ] 1008 | 1009 | [[package]] 1010 | name = "pin-project-lite" 1011 | version = "0.2.14" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 1014 | 1015 | [[package]] 1016 | name = "pin-utils" 1017 | version = "0.1.0" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1020 | 1021 | [[package]] 1022 | name = "pkg-config" 1023 | version = "0.3.27" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 1026 | 1027 | [[package]] 1028 | name = "ppv-lite86" 1029 | version = "0.2.17" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1032 | 1033 | [[package]] 1034 | name = "predicates" 1035 | version = "3.1.2" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" 1038 | dependencies = [ 1039 | "anstyle", 1040 | "difflib", 1041 | "float-cmp", 1042 | "normalize-line-endings", 1043 | "predicates-core", 1044 | "regex", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "predicates-core" 1049 | version = "1.0.6" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" 1052 | 1053 | [[package]] 1054 | name = "predicates-tree" 1055 | version = "1.0.9" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" 1058 | dependencies = [ 1059 | "predicates-core", 1060 | "termtree", 1061 | ] 1062 | 1063 | [[package]] 1064 | name = "proc-macro-error" 1065 | version = "1.0.4" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 1068 | dependencies = [ 1069 | "proc-macro-error-attr", 1070 | "proc-macro2", 1071 | "quote", 1072 | "syn 1.0.109", 1073 | "version_check", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "proc-macro-error-attr" 1078 | version = "1.0.4" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 1081 | dependencies = [ 1082 | "proc-macro2", 1083 | "quote", 1084 | "version_check", 1085 | ] 1086 | 1087 | [[package]] 1088 | name = "proc-macro2" 1089 | version = "1.0.63" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" 1092 | dependencies = [ 1093 | "unicode-ident", 1094 | ] 1095 | 1096 | [[package]] 1097 | name = "quote" 1098 | version = "1.0.28" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" 1101 | dependencies = [ 1102 | "proc-macro2", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "rand" 1107 | version = "0.8.5" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1110 | dependencies = [ 1111 | "libc", 1112 | "rand_chacha", 1113 | "rand_core", 1114 | ] 1115 | 1116 | [[package]] 1117 | name = "rand_chacha" 1118 | version = "0.3.1" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1121 | dependencies = [ 1122 | "ppv-lite86", 1123 | "rand_core", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "rand_core" 1128 | version = "0.6.4" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1131 | dependencies = [ 1132 | "getrandom", 1133 | ] 1134 | 1135 | [[package]] 1136 | name = "redox_syscall" 1137 | version = "0.3.5" 1138 | source = "registry+https://github.com/rust-lang/crates.io-index" 1139 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1140 | dependencies = [ 1141 | "bitflags 1.3.2", 1142 | ] 1143 | 1144 | [[package]] 1145 | name = "regex" 1146 | version = "1.8.4" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" 1149 | dependencies = [ 1150 | "aho-corasick", 1151 | "memchr", 1152 | "regex-syntax", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "regex-automata" 1157 | version = "0.1.10" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 1160 | 1161 | [[package]] 1162 | name = "regex-syntax" 1163 | version = "0.7.2" 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" 1165 | checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" 1166 | 1167 | [[package]] 1168 | name = "reqwest" 1169 | version = "0.12.9" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" 1172 | dependencies = [ 1173 | "base64", 1174 | "bytes", 1175 | "encoding_rs", 1176 | "futures-channel", 1177 | "futures-core", 1178 | "futures-util", 1179 | "h2", 1180 | "http", 1181 | "http-body", 1182 | "http-body-util", 1183 | "hyper", 1184 | "hyper-rustls", 1185 | "hyper-tls", 1186 | "hyper-util", 1187 | "ipnet", 1188 | "js-sys", 1189 | "log", 1190 | "mime", 1191 | "native-tls", 1192 | "once_cell", 1193 | "percent-encoding", 1194 | "pin-project-lite", 1195 | "rustls-pemfile", 1196 | "serde", 1197 | "serde_json", 1198 | "serde_urlencoded", 1199 | "sync_wrapper", 1200 | "system-configuration", 1201 | "tokio", 1202 | "tokio-native-tls", 1203 | "tower-service", 1204 | "url", 1205 | "wasm-bindgen", 1206 | "wasm-bindgen-futures", 1207 | "web-sys", 1208 | "windows-registry", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "ring" 1213 | version = "0.17.8" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" 1216 | dependencies = [ 1217 | "cc", 1218 | "cfg-if", 1219 | "getrandom", 1220 | "libc", 1221 | "spin", 1222 | "untrusted", 1223 | "windows-sys 0.52.0", 1224 | ] 1225 | 1226 | [[package]] 1227 | name = "rustc-demangle" 1228 | version = "0.1.23" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 1231 | 1232 | [[package]] 1233 | name = "rustix" 1234 | version = "0.38.31" 1235 | source = "registry+https://github.com/rust-lang/crates.io-index" 1236 | checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" 1237 | dependencies = [ 1238 | "bitflags 2.4.1", 1239 | "errno", 1240 | "libc", 1241 | "linux-raw-sys", 1242 | "windows-sys 0.52.0", 1243 | ] 1244 | 1245 | [[package]] 1246 | name = "rustls" 1247 | version = "0.23.7" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "ebbbdb961df0ad3f2652da8f3fdc4b36122f568f968f45ad3316f26c025c677b" 1250 | dependencies = [ 1251 | "once_cell", 1252 | "rustls-pki-types", 1253 | "rustls-webpki", 1254 | "subtle", 1255 | "zeroize", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "rustls-pemfile" 1260 | version = "2.1.2" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" 1263 | dependencies = [ 1264 | "base64", 1265 | "rustls-pki-types", 1266 | ] 1267 | 1268 | [[package]] 1269 | name = "rustls-pki-types" 1270 | version = "1.4.1" 1271 | source = "registry+https://github.com/rust-lang/crates.io-index" 1272 | checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" 1273 | 1274 | [[package]] 1275 | name = "rustls-webpki" 1276 | version = "0.102.3" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" 1279 | dependencies = [ 1280 | "ring", 1281 | "rustls-pki-types", 1282 | "untrusted", 1283 | ] 1284 | 1285 | [[package]] 1286 | name = "ryu" 1287 | version = "1.0.13" 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" 1289 | checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" 1290 | 1291 | [[package]] 1292 | name = "schannel" 1293 | version = "0.1.21" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" 1296 | dependencies = [ 1297 | "windows-sys 0.42.0", 1298 | ] 1299 | 1300 | [[package]] 1301 | name = "scopeguard" 1302 | version = "1.1.0" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1305 | 1306 | [[package]] 1307 | name = "security-framework" 1308 | version = "2.9.1" 1309 | source = "registry+https://github.com/rust-lang/crates.io-index" 1310 | checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" 1311 | dependencies = [ 1312 | "bitflags 1.3.2", 1313 | "core-foundation", 1314 | "core-foundation-sys", 1315 | "libc", 1316 | "security-framework-sys", 1317 | ] 1318 | 1319 | [[package]] 1320 | name = "security-framework-sys" 1321 | version = "2.9.0" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" 1324 | dependencies = [ 1325 | "core-foundation-sys", 1326 | "libc", 1327 | ] 1328 | 1329 | [[package]] 1330 | name = "serde" 1331 | version = "1.0.164" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" 1334 | 1335 | [[package]] 1336 | name = "serde_json" 1337 | version = "1.0.99" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" 1340 | dependencies = [ 1341 | "itoa", 1342 | "ryu", 1343 | "serde", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "serde_urlencoded" 1348 | version = "0.7.1" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1351 | dependencies = [ 1352 | "form_urlencoded", 1353 | "itoa", 1354 | "ryu", 1355 | "serde", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "sha1" 1360 | version = "0.10.5" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" 1363 | dependencies = [ 1364 | "cfg-if", 1365 | "cpufeatures", 1366 | "digest", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "sha2" 1371 | version = "0.10.7" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" 1374 | dependencies = [ 1375 | "cfg-if", 1376 | "cpufeatures", 1377 | "digest", 1378 | ] 1379 | 1380 | [[package]] 1381 | name = "similar" 1382 | version = "2.2.1" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" 1385 | 1386 | [[package]] 1387 | name = "slab" 1388 | version = "0.4.8" 1389 | source = "registry+https://github.com/rust-lang/crates.io-index" 1390 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" 1391 | dependencies = [ 1392 | "autocfg", 1393 | ] 1394 | 1395 | [[package]] 1396 | name = "smallvec" 1397 | version = "1.13.2" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 1400 | 1401 | [[package]] 1402 | name = "socket2" 1403 | version = "0.4.9" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" 1406 | dependencies = [ 1407 | "libc", 1408 | "winapi", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "socket2" 1413 | version = "0.5.6" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" 1416 | dependencies = [ 1417 | "libc", 1418 | "windows-sys 0.52.0", 1419 | ] 1420 | 1421 | [[package]] 1422 | name = "spin" 1423 | version = "0.9.8" 1424 | source = "registry+https://github.com/rust-lang/crates.io-index" 1425 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1426 | 1427 | [[package]] 1428 | name = "strsim" 1429 | version = "0.8.0" 1430 | source = "registry+https://github.com/rust-lang/crates.io-index" 1431 | checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" 1432 | 1433 | [[package]] 1434 | name = "subtle" 1435 | version = "2.5.0" 1436 | source = "registry+https://github.com/rust-lang/crates.io-index" 1437 | checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 1438 | 1439 | [[package]] 1440 | name = "syn" 1441 | version = "1.0.109" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1444 | dependencies = [ 1445 | "proc-macro2", 1446 | "quote", 1447 | "unicode-ident", 1448 | ] 1449 | 1450 | [[package]] 1451 | name = "syn" 1452 | version = "2.0.22" 1453 | source = "registry+https://github.com/rust-lang/crates.io-index" 1454 | checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" 1455 | dependencies = [ 1456 | "proc-macro2", 1457 | "quote", 1458 | "unicode-ident", 1459 | ] 1460 | 1461 | [[package]] 1462 | name = "sync_wrapper" 1463 | version = "1.0.1" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" 1466 | dependencies = [ 1467 | "futures-core", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "system-configuration" 1472 | version = "0.6.1" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 1475 | dependencies = [ 1476 | "bitflags 2.4.1", 1477 | "core-foundation", 1478 | "system-configuration-sys", 1479 | ] 1480 | 1481 | [[package]] 1482 | name = "system-configuration-sys" 1483 | version = "0.6.0" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 1486 | dependencies = [ 1487 | "core-foundation-sys", 1488 | "libc", 1489 | ] 1490 | 1491 | [[package]] 1492 | name = "tempfile" 1493 | version = "3.10.1" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 1496 | dependencies = [ 1497 | "cfg-if", 1498 | "fastrand", 1499 | "rustix", 1500 | "windows-sys 0.52.0", 1501 | ] 1502 | 1503 | [[package]] 1504 | name = "termtree" 1505 | version = "0.4.1" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" 1508 | 1509 | [[package]] 1510 | name = "textwrap" 1511 | version = "0.11.0" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" 1514 | dependencies = [ 1515 | "unicode-width", 1516 | ] 1517 | 1518 | [[package]] 1519 | name = "time" 1520 | version = "0.3.22" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" 1523 | dependencies = [ 1524 | "serde", 1525 | "time-core", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "time-core" 1530 | version = "0.1.1" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" 1533 | 1534 | [[package]] 1535 | name = "tinyvec" 1536 | version = "1.6.0" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1539 | dependencies = [ 1540 | "tinyvec_macros", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "tinyvec_macros" 1545 | version = "0.1.1" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1548 | 1549 | [[package]] 1550 | name = "tokio" 1551 | version = "1.29.0" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "374442f06ee49c3a28a8fc9f01a2596fed7559c6b99b31279c3261778e77d84f" 1554 | dependencies = [ 1555 | "autocfg", 1556 | "backtrace", 1557 | "bytes", 1558 | "libc", 1559 | "mio", 1560 | "parking_lot", 1561 | "pin-project-lite", 1562 | "socket2 0.4.9", 1563 | "windows-sys 0.48.0", 1564 | ] 1565 | 1566 | [[package]] 1567 | name = "tokio-native-tls" 1568 | version = "0.3.1" 1569 | source = "registry+https://github.com/rust-lang/crates.io-index" 1570 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 1571 | dependencies = [ 1572 | "native-tls", 1573 | "tokio", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "tokio-rustls" 1578 | version = "0.26.0" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" 1581 | dependencies = [ 1582 | "rustls", 1583 | "rustls-pki-types", 1584 | "tokio", 1585 | ] 1586 | 1587 | [[package]] 1588 | name = "tokio-util" 1589 | version = "0.7.8" 1590 | source = "registry+https://github.com/rust-lang/crates.io-index" 1591 | checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" 1592 | dependencies = [ 1593 | "bytes", 1594 | "futures-core", 1595 | "futures-sink", 1596 | "pin-project-lite", 1597 | "tokio", 1598 | "tracing", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "tower" 1603 | version = "0.4.13" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 1606 | dependencies = [ 1607 | "futures-core", 1608 | "futures-util", 1609 | "pin-project", 1610 | "pin-project-lite", 1611 | "tokio", 1612 | "tower-layer", 1613 | "tower-service", 1614 | "tracing", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "tower-layer" 1619 | version = "0.3.2" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 1622 | 1623 | [[package]] 1624 | name = "tower-service" 1625 | version = "0.3.2" 1626 | source = "registry+https://github.com/rust-lang/crates.io-index" 1627 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 1628 | 1629 | [[package]] 1630 | name = "tracing" 1631 | version = "0.1.37" 1632 | source = "registry+https://github.com/rust-lang/crates.io-index" 1633 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 1634 | dependencies = [ 1635 | "cfg-if", 1636 | "log", 1637 | "pin-project-lite", 1638 | "tracing-core", 1639 | ] 1640 | 1641 | [[package]] 1642 | name = "tracing-core" 1643 | version = "0.1.31" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" 1646 | dependencies = [ 1647 | "once_cell", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "try-lock" 1652 | version = "0.2.4" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" 1655 | 1656 | [[package]] 1657 | name = "typenum" 1658 | version = "1.16.0" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 1661 | 1662 | [[package]] 1663 | name = "unicode-bidi" 1664 | version = "0.3.13" 1665 | source = "registry+https://github.com/rust-lang/crates.io-index" 1666 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 1667 | 1668 | [[package]] 1669 | name = "unicode-ident" 1670 | version = "1.0.9" 1671 | source = "registry+https://github.com/rust-lang/crates.io-index" 1672 | checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" 1673 | 1674 | [[package]] 1675 | name = "unicode-normalization" 1676 | version = "0.1.22" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1679 | dependencies = [ 1680 | "tinyvec", 1681 | ] 1682 | 1683 | [[package]] 1684 | name = "unicode-width" 1685 | version = "0.1.10" 1686 | source = "registry+https://github.com/rust-lang/crates.io-index" 1687 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 1688 | 1689 | [[package]] 1690 | name = "untrusted" 1691 | version = "0.9.0" 1692 | source = "registry+https://github.com/rust-lang/crates.io-index" 1693 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 1694 | 1695 | [[package]] 1696 | name = "url" 1697 | version = "2.4.0" 1698 | source = "registry+https://github.com/rust-lang/crates.io-index" 1699 | checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" 1700 | dependencies = [ 1701 | "form_urlencoded", 1702 | "idna", 1703 | "percent-encoding", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "vcpkg" 1708 | version = "0.2.15" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1711 | 1712 | [[package]] 1713 | name = "vec_map" 1714 | version = "0.8.2" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" 1717 | 1718 | [[package]] 1719 | name = "version_check" 1720 | version = "0.9.4" 1721 | source = "registry+https://github.com/rust-lang/crates.io-index" 1722 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1723 | 1724 | [[package]] 1725 | name = "wait-timeout" 1726 | version = "0.2.0" 1727 | source = "registry+https://github.com/rust-lang/crates.io-index" 1728 | checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" 1729 | dependencies = [ 1730 | "libc", 1731 | ] 1732 | 1733 | [[package]] 1734 | name = "want" 1735 | version = "0.3.1" 1736 | source = "registry+https://github.com/rust-lang/crates.io-index" 1737 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1738 | dependencies = [ 1739 | "try-lock", 1740 | ] 1741 | 1742 | [[package]] 1743 | name = "wasi" 1744 | version = "0.11.0+wasi-snapshot-preview1" 1745 | source = "registry+https://github.com/rust-lang/crates.io-index" 1746 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1747 | 1748 | [[package]] 1749 | name = "wasm-bindgen" 1750 | version = "0.2.95" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" 1753 | dependencies = [ 1754 | "cfg-if", 1755 | "once_cell", 1756 | "wasm-bindgen-macro", 1757 | ] 1758 | 1759 | [[package]] 1760 | name = "wasm-bindgen-backend" 1761 | version = "0.2.95" 1762 | source = "registry+https://github.com/rust-lang/crates.io-index" 1763 | checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" 1764 | dependencies = [ 1765 | "bumpalo", 1766 | "log", 1767 | "once_cell", 1768 | "proc-macro2", 1769 | "quote", 1770 | "syn 2.0.22", 1771 | "wasm-bindgen-shared", 1772 | ] 1773 | 1774 | [[package]] 1775 | name = "wasm-bindgen-futures" 1776 | version = "0.4.37" 1777 | source = "registry+https://github.com/rust-lang/crates.io-index" 1778 | checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" 1779 | dependencies = [ 1780 | "cfg-if", 1781 | "js-sys", 1782 | "wasm-bindgen", 1783 | "web-sys", 1784 | ] 1785 | 1786 | [[package]] 1787 | name = "wasm-bindgen-macro" 1788 | version = "0.2.95" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" 1791 | dependencies = [ 1792 | "quote", 1793 | "wasm-bindgen-macro-support", 1794 | ] 1795 | 1796 | [[package]] 1797 | name = "wasm-bindgen-macro-support" 1798 | version = "0.2.95" 1799 | source = "registry+https://github.com/rust-lang/crates.io-index" 1800 | checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" 1801 | dependencies = [ 1802 | "proc-macro2", 1803 | "quote", 1804 | "syn 2.0.22", 1805 | "wasm-bindgen-backend", 1806 | "wasm-bindgen-shared", 1807 | ] 1808 | 1809 | [[package]] 1810 | name = "wasm-bindgen-shared" 1811 | version = "0.2.95" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" 1814 | 1815 | [[package]] 1816 | name = "web-sys" 1817 | version = "0.3.64" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" 1820 | dependencies = [ 1821 | "js-sys", 1822 | "wasm-bindgen", 1823 | ] 1824 | 1825 | [[package]] 1826 | name = "winapi" 1827 | version = "0.3.9" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1830 | dependencies = [ 1831 | "winapi-i686-pc-windows-gnu", 1832 | "winapi-x86_64-pc-windows-gnu", 1833 | ] 1834 | 1835 | [[package]] 1836 | name = "winapi-i686-pc-windows-gnu" 1837 | version = "0.4.0" 1838 | source = "registry+https://github.com/rust-lang/crates.io-index" 1839 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1840 | 1841 | [[package]] 1842 | name = "winapi-x86_64-pc-windows-gnu" 1843 | version = "0.4.0" 1844 | source = "registry+https://github.com/rust-lang/crates.io-index" 1845 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1846 | 1847 | [[package]] 1848 | name = "windows-registry" 1849 | version = "0.2.0" 1850 | source = "registry+https://github.com/rust-lang/crates.io-index" 1851 | checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" 1852 | dependencies = [ 1853 | "windows-result", 1854 | "windows-strings", 1855 | "windows-targets 0.52.6", 1856 | ] 1857 | 1858 | [[package]] 1859 | name = "windows-result" 1860 | version = "0.2.0" 1861 | source = "registry+https://github.com/rust-lang/crates.io-index" 1862 | checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" 1863 | dependencies = [ 1864 | "windows-targets 0.52.6", 1865 | ] 1866 | 1867 | [[package]] 1868 | name = "windows-strings" 1869 | version = "0.1.0" 1870 | source = "registry+https://github.com/rust-lang/crates.io-index" 1871 | checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" 1872 | dependencies = [ 1873 | "windows-result", 1874 | "windows-targets 0.52.6", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "windows-sys" 1879 | version = "0.42.0" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 1882 | dependencies = [ 1883 | "windows_aarch64_gnullvm 0.42.2", 1884 | "windows_aarch64_msvc 0.42.2", 1885 | "windows_i686_gnu 0.42.2", 1886 | "windows_i686_msvc 0.42.2", 1887 | "windows_x86_64_gnu 0.42.2", 1888 | "windows_x86_64_gnullvm 0.42.2", 1889 | "windows_x86_64_msvc 0.42.2", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "windows-sys" 1894 | version = "0.48.0" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1897 | dependencies = [ 1898 | "windows-targets 0.48.0", 1899 | ] 1900 | 1901 | [[package]] 1902 | name = "windows-sys" 1903 | version = "0.52.0" 1904 | source = "registry+https://github.com/rust-lang/crates.io-index" 1905 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1906 | dependencies = [ 1907 | "windows-targets 0.52.6", 1908 | ] 1909 | 1910 | [[package]] 1911 | name = "windows-targets" 1912 | version = "0.48.0" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" 1915 | dependencies = [ 1916 | "windows_aarch64_gnullvm 0.48.0", 1917 | "windows_aarch64_msvc 0.48.0", 1918 | "windows_i686_gnu 0.48.0", 1919 | "windows_i686_msvc 0.48.0", 1920 | "windows_x86_64_gnu 0.48.0", 1921 | "windows_x86_64_gnullvm 0.48.0", 1922 | "windows_x86_64_msvc 0.48.0", 1923 | ] 1924 | 1925 | [[package]] 1926 | name = "windows-targets" 1927 | version = "0.52.6" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 1930 | dependencies = [ 1931 | "windows_aarch64_gnullvm 0.52.6", 1932 | "windows_aarch64_msvc 0.52.6", 1933 | "windows_i686_gnu 0.52.6", 1934 | "windows_i686_gnullvm", 1935 | "windows_i686_msvc 0.52.6", 1936 | "windows_x86_64_gnu 0.52.6", 1937 | "windows_x86_64_gnullvm 0.52.6", 1938 | "windows_x86_64_msvc 0.52.6", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "windows_aarch64_gnullvm" 1943 | version = "0.42.2" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 1946 | 1947 | [[package]] 1948 | name = "windows_aarch64_gnullvm" 1949 | version = "0.48.0" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" 1952 | 1953 | [[package]] 1954 | name = "windows_aarch64_gnullvm" 1955 | version = "0.52.6" 1956 | source = "registry+https://github.com/rust-lang/crates.io-index" 1957 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 1958 | 1959 | [[package]] 1960 | name = "windows_aarch64_msvc" 1961 | version = "0.42.2" 1962 | source = "registry+https://github.com/rust-lang/crates.io-index" 1963 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 1964 | 1965 | [[package]] 1966 | name = "windows_aarch64_msvc" 1967 | version = "0.48.0" 1968 | source = "registry+https://github.com/rust-lang/crates.io-index" 1969 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" 1970 | 1971 | [[package]] 1972 | name = "windows_aarch64_msvc" 1973 | version = "0.52.6" 1974 | source = "registry+https://github.com/rust-lang/crates.io-index" 1975 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 1976 | 1977 | [[package]] 1978 | name = "windows_i686_gnu" 1979 | version = "0.42.2" 1980 | source = "registry+https://github.com/rust-lang/crates.io-index" 1981 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 1982 | 1983 | [[package]] 1984 | name = "windows_i686_gnu" 1985 | version = "0.48.0" 1986 | source = "registry+https://github.com/rust-lang/crates.io-index" 1987 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" 1988 | 1989 | [[package]] 1990 | name = "windows_i686_gnu" 1991 | version = "0.52.6" 1992 | source = "registry+https://github.com/rust-lang/crates.io-index" 1993 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 1994 | 1995 | [[package]] 1996 | name = "windows_i686_gnullvm" 1997 | version = "0.52.6" 1998 | source = "registry+https://github.com/rust-lang/crates.io-index" 1999 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 2000 | 2001 | [[package]] 2002 | name = "windows_i686_msvc" 2003 | version = "0.42.2" 2004 | source = "registry+https://github.com/rust-lang/crates.io-index" 2005 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 2006 | 2007 | [[package]] 2008 | name = "windows_i686_msvc" 2009 | version = "0.48.0" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" 2012 | 2013 | [[package]] 2014 | name = "windows_i686_msvc" 2015 | version = "0.52.6" 2016 | source = "registry+https://github.com/rust-lang/crates.io-index" 2017 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 2018 | 2019 | [[package]] 2020 | name = "windows_x86_64_gnu" 2021 | version = "0.42.2" 2022 | source = "registry+https://github.com/rust-lang/crates.io-index" 2023 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 2024 | 2025 | [[package]] 2026 | name = "windows_x86_64_gnu" 2027 | version = "0.48.0" 2028 | source = "registry+https://github.com/rust-lang/crates.io-index" 2029 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" 2030 | 2031 | [[package]] 2032 | name = "windows_x86_64_gnu" 2033 | version = "0.52.6" 2034 | source = "registry+https://github.com/rust-lang/crates.io-index" 2035 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 2036 | 2037 | [[package]] 2038 | name = "windows_x86_64_gnullvm" 2039 | version = "0.42.2" 2040 | source = "registry+https://github.com/rust-lang/crates.io-index" 2041 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 2042 | 2043 | [[package]] 2044 | name = "windows_x86_64_gnullvm" 2045 | version = "0.48.0" 2046 | source = "registry+https://github.com/rust-lang/crates.io-index" 2047 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" 2048 | 2049 | [[package]] 2050 | name = "windows_x86_64_gnullvm" 2051 | version = "0.52.6" 2052 | source = "registry+https://github.com/rust-lang/crates.io-index" 2053 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 2054 | 2055 | [[package]] 2056 | name = "windows_x86_64_msvc" 2057 | version = "0.42.2" 2058 | source = "registry+https://github.com/rust-lang/crates.io-index" 2059 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 2060 | 2061 | [[package]] 2062 | name = "windows_x86_64_msvc" 2063 | version = "0.48.0" 2064 | source = "registry+https://github.com/rust-lang/crates.io-index" 2065 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" 2066 | 2067 | [[package]] 2068 | name = "windows_x86_64_msvc" 2069 | version = "0.52.6" 2070 | source = "registry+https://github.com/rust-lang/crates.io-index" 2071 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 2072 | 2073 | [[package]] 2074 | name = "zeroize" 2075 | version = "1.8.1" 2076 | source = "registry+https://github.com/rust-lang/crates.io-index" 2077 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 2078 | 2079 | [[package]] 2080 | name = "zip" 2081 | version = "0.6.6" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 2084 | dependencies = [ 2085 | "aes", 2086 | "byteorder", 2087 | "bzip2", 2088 | "constant_time_eq", 2089 | "crc32fast", 2090 | "crossbeam-utils", 2091 | "flate2", 2092 | "hmac", 2093 | "pbkdf2", 2094 | "sha1", 2095 | "time", 2096 | "zstd", 2097 | ] 2098 | 2099 | [[package]] 2100 | name = "zstd" 2101 | version = "0.11.2+zstd.1.5.2" 2102 | source = "registry+https://github.com/rust-lang/crates.io-index" 2103 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 2104 | dependencies = [ 2105 | "zstd-safe", 2106 | ] 2107 | 2108 | [[package]] 2109 | name = "zstd-safe" 2110 | version = "5.0.2+zstd.1.5.2" 2111 | source = "registry+https://github.com/rust-lang/crates.io-index" 2112 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 2113 | dependencies = [ 2114 | "libc", 2115 | "zstd-sys", 2116 | ] 2117 | 2118 | [[package]] 2119 | name = "zstd-sys" 2120 | version = "2.0.8+zstd.1.5.5" 2121 | source = "registry+https://github.com/rust-lang/crates.io-index" 2122 | checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" 2123 | dependencies = [ 2124 | "cc", 2125 | "libc", 2126 | "pkg-config", 2127 | ] 2128 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "alfred-gitignore" 3 | version = "2.1.1" 4 | license = "MIT" 5 | authors = ["Jan David "] 6 | edition = "2018" 7 | 8 | description = "An Alfred workflow that creates .gitignore files" 9 | readme = "README.md" 10 | 11 | repository = "https://github.com/jdno/alfred-gitignore" 12 | 13 | categories = ["command-line-utilities"] 14 | keywords = ["cli", "git", "gitignore", "alfred", "workflow"] 15 | 16 | [package.metadata.release] 17 | disable-publish = true 18 | disable-push = true 19 | disable-tag = true 20 | no-dev-version = true 21 | pre-release-commit-message = "Release {{version}}" 22 | pre-release-replacements = [ 23 | {file="CHANGELOG.md", search="## \\[Unreleased\\]", replace="## [{{version}}] - {{date}}"}, 24 | {file="CHANGELOG.md", search="\\.\\.\\.HEAD", replace="...v{{version}}", exactly=1}, 25 | {file="CHANGELOG.md", search="", replace="\n\n## [Unreleased]", exactly=1}, 26 | {file="CHANGELOG.md", search="\\[unreleased\\]", replace="[{{version}}]"}, 27 | {file="CHANGELOG.md", search="\n", replace="\n\n[unreleased]: https://github.com/jdno/alfred-gitignore/compare/v{{version}}...HEAD", exactly=1}, 28 | ] 29 | 30 | [dependencies] 31 | alfred = "4.0.2" 32 | clap = "2.34.0" 33 | getset = "0.1.2" 34 | reqwest = { version = "0.12.9", features = ["blocking"] } 35 | zip = "0.6.4" 36 | 37 | [dev-dependencies] 38 | assert_cmd = "2.0.16" 39 | mockito = "1.5.0" 40 | predicates = "3.1.2" 41 | tempfile = "3.10.1" 42 | -------------------------------------------------------------------------------- /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 [yyyy] [name of copyright owner] 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. 203 | -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 Jan David Nose 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 | # gitignore 2 | 3 | [![GitHub release (latest by date)](https://img.shields.io/github/v/release/jdno/alfred-gitignore)](https://github.com/jdno/alfred-gitignore/releases) 4 | 5 | > [!WARNING] 6 | > This project is no longer actively maintained. 7 | 8 | _An [Alfred] workflow to quickly create a `.gitignore` file from templates._ 9 | 10 | This is an [Alfred] workflow that lets users quickly combine multiple 11 | `.gitignore` [templates] into a single file. It works offline, has suggestions 12 | and autocomplete, and works with [Alfred] 3 and 4. 13 | 14 | _Built with_ ❤️ _and_ 🦀 _by [jdno]._ 15 | 16 | ## Getting Started 17 | 18 | The latest version of the workflow can be downloaded from [Packal] or from the 19 | [releases] on GitHub. Open the workflow with [Alfred], and follow its 20 | instructions to set it up. 21 | 22 | The workflow can be started by typing the following keyword into [Alfred]: 23 | 24 | gitignore 25 | 26 | **Important!** `alfred-gitignore` is shipped as an unsigned binary, which in 27 | recent versions of macOS this will prompt a warning. Go to `System Preferences` 28 | in macOS, click on `Security & Privacy`, and allow `alfred-gitignore` to run. 29 | 30 | When running the workflow for the first time, only an action to update the 31 | templates will be shown. Run this action to download the [latest templates from 32 | GitHub][templates]. When the download is done, press `Enter` to start building a 33 | `.gitignore` file. 34 | 35 | The worflow shows a list of the currently installed workflows. Select one, and 36 | press `Enter` to add it to the list. Do this for all templates you want to 37 | combine. Then select the `Build` action at the top of the list, and wait for the 38 | file to be created. 39 | 40 | Once ready, the workflow prompts you to either open the file or copy it to the 41 | clipboard. Select your preferred option and hit `Enter` to finish the workflow. 42 | 43 | ## Contributing 44 | 45 | ✨ Thanks for your interest in making this workflow better! 👋 46 | 47 | ### Report a bugs 48 | 49 | Found an bug? Please check the [issues] to see if a similar problem has already 50 | been reported. If so, feel free to add a comment. This helps me understand if 51 | the issue is limited to a single user or more widely spread. If there isn't an 52 | issue yet, create one and describe the bug in as much detail as possible. Some 53 | are really difficult to reproduce, and the more information you add the more 54 | likely it is that I can reproduce and fix the problem. 55 | 56 | ### Request a feature 57 | 58 | Have an idea you'd like to see in `alfred-gitignore`? Open an [issue][issues] 59 | and propose it! Be precise, but don't invest too much time yet. As the 60 | maintainer of the workflow, I have to decide whether I can support your feature 61 | in the future, and might have to decline it because it'll be too complex or too 62 | much work. 63 | 64 | ### Contribute code 65 | 66 | Interested in working on `alfred-gitignore`? Help fixing bugs is always welcome. 67 | If you want to implement a new feature, please reach out to me first and 68 | [request the feature](#request-a-feature) to make sure it is a good fit for the 69 | workflow. 70 | 71 | #### Install dependencies 72 | 73 | `alfred-gitignore` is written in [Rust], and working on the project requires a 74 | working [Rust] environment. Check the official documentation to learn how to 75 | install [Rust] on your local machine. 76 | 77 | The project uses [pre-commit] to configure a wide range of Git pre-commit-hooks. 78 | These hooks enforce a clean and consistent code style. The hooks are also run 79 | during CI, so it is not absolutely necessary to install them locally. But it is 80 | strongly recommended if you plan to do more than just change a few lines. 81 | 82 | #### Set up project 83 | 84 | Clone the repository, open a terminal, and install the [pre-commit] hooks. These 85 | hooks are run when committing code, and enforce a consistent code style. 86 | 87 | pre-commit install 88 | 89 | Then test that Rust is working correctly by building the project: 90 | 91 | cargo build 92 | 93 | #### Write code 94 | 95 | Implement your changes to `alfred-gitignore`, and make sure to write tests for 96 | them as well. Run [Rustfmt](https://github.com/rust-lang/rustfmt) and 97 | [Clippy](https://github.com/rust-lang/rust-clippy) and fix any issues they bring 98 | up. When you're done, push your work in a new branch and open a 99 | [pull request][pull-requests]. 100 | 101 | Please follow a few guidelines when working on `alfred-gitignore`. As the 102 | maintainer, I am responsible for your code once it is merged, and that is only 103 | possible when it is clean code. 104 | 105 | - Write tests for your code. 106 | - Document public interfaces. 107 | - Follow the coding style (`rustfmt` and `clippy`). 108 | 109 | ## License 110 | 111 | Licensed under either of 112 | 113 | - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) 114 | or ) 115 | - MIT license ([LICENSE-MIT](LICENSE-MIT) 116 | or ) 117 | 118 | at your option. 119 | 120 | ## Contribution 121 | 122 | Unless you explicitly state otherwise, any contribution intentionally submitted 123 | for inclusion in the work by you, as defined in the Apache-2.0 license, shall be 124 | dual licensed as above, without any additional terms or conditions. 125 | 126 | [alfred]: https://www.alfredapp.com 127 | 128 | [issues]: https://github.com/jdno/alfred-gitignore/issues 129 | 130 | [jdno]: https://github.com/jdno 131 | 132 | [packal]: https://www.packal.org/workflow/gitignore-0 133 | 134 | [pre-commit]: https://pre-commit.com/ 135 | 136 | [pull-requests]: https://github.com/jdno/alfred-gitignore/pulls 137 | 138 | [releases]: https://github.com/jdno/alfred-gitignore/releases 139 | 140 | [rust]: https://rust-lang.org 141 | 142 | [templates]: https://github.com/github/gitignore 143 | -------------------------------------------------------------------------------- /src/builder.rs: -------------------------------------------------------------------------------- 1 | use crate::query::Query; 2 | use crate::repository::{Repository, Template}; 3 | use std::collections::hash_map::DefaultHasher; 4 | use std::env::temp_dir; 5 | use std::fs::{read_to_string, File}; 6 | use std::hash::{Hash, Hasher}; 7 | use std::io::{Error, Write}; 8 | use std::path::PathBuf; 9 | 10 | const FILE_NAME_PREFIX: &str = "alfred-gitignore-"; 11 | 12 | /// Constructs a `.gitignore` file from a query. 13 | /// 14 | /// The builder combines the `*.gitignore` templates in a query into a single `.gitignore` file. 15 | pub struct Builder { 16 | repository: Repository, 17 | templates: Vec