diff --git a/.codespellignore b/.codespellignore
new file mode 100644
index 0000000..f08a521
--- /dev/null
+++ b/.codespellignore
@@ -0,0 +1,3 @@
+lqth
+Lqth
+crate
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..cf19c96
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,8 @@
+# See https://help.github.com/articles/about-codeowners/
+# for more info about CODEOWNERS file
+
+# It uses the same pattern rule for gitignore file
+# https://git-scm.com/docs/gitignore#_pattern_format
+
+# Core
+* @0x61nas
diff --git a/.github/DOCS.md b/.github/DOCS.md
new file mode 100644
index 0000000..e932784
--- /dev/null
+++ b/.github/DOCS.md
@@ -0,0 +1,23 @@
+# Github config and workflows
+
+In this folder there is configuration for codecoverage, dependabot, and ci
+workflows that check the library more deeply than the default configurations.
+
+This folder can be or was merged using a --allow-unrelated-histories merge
+strategy from which provides a
+reasonably sensible base for writing your own ci on. By using this strategy
+the history of the CI repo is included in your repo, and future updates to
+the CI can be merged later.
+
+To perform this merge run:
+
+```shell
+git remote add ci https://github.com/jonhoo/rust-ci-conf.git
+git fetch ci
+git merge --allow-unrelated-histories ci/main
+```
+
+An overview of the files in this project is available at:
+, which contains some
+rationale for decisions and runs through an example of solving minimal version
+and OpenSSL issues.
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..f75715a
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,3 @@
+#github: 0x61nas
+custom: ["https://www.buymeacoffee.com/0x61nas"]
+ko_fi: 0x61nas
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..c66d48c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,41 @@
+---
+name: Bug report 🐛
+about: Report a bug to help us improve
+title: ""
+labels: "bug"
+assignees: "0x61nas"
+---
+
+**Describe the bug**
+
+
+
+**To reproduce**
+
+
+
+**Expected behavior**
+
+
+
+**Screenshots / Logs**
+
+
+
+**Software information**
+
+
+
+- Operating system:
+- Rust version:
+- Project version:
+
+**Additional context**
+
+
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..dbe5152
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,23 @@
+---
+name: Feature request
+about: Make a suggestion for the project
+title: ""
+labels: "enhancement"
+assignees: "0x61nas"
+---
+
+**Is your feature request related to a problem? Please describe.**
+
+
+
+**Describe the solution you'd like**
+
+
+
+**Describe alternatives you've considered**
+
+
+
+**Additional context**
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..e944691
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,40 @@
+
+
+## Description
+
+
+
+## Motivation and Context
+
+
+
+
+## How Has This Been Tested?
+
+
+
+
+
+## Screenshots / Logs (if applicable)
+
+## Types of Changes
+
+
+
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to change)
+- [ ] Documentation (no code change)
+- [ ] Refactor (refactoring production code)
+- [ ] Other
+
+## Checklist:
+
+
+
+- [ ] My code follows the code style of this project.
+- [ ] I have updated the documentation accordingly.
+- [ ] I have formatted the code with [rustfmt](https://github.com/rust-lang/rustfmt).
+- [ ] I checked the lints with [clippy](https://github.com/rust-lang/rust-clippy).
+- [ ] I have added tests to cover my changes.
+- [ ] All new and existing tests passed.
diff --git a/.github/codecov.yml b/.github/codecov.yml
new file mode 100644
index 0000000..cd5ce8f
--- /dev/null
+++ b/.github/codecov.yml
@@ -0,0 +1,21 @@
+# ref: https://docs.codecov.com/docs/codecovyml-reference
+coverage:
+ # Hold ourselves to a high bar
+ range: 85..100
+ round: down
+ precision: 1
+ status:
+ # ref: https://docs.codecov.com/docs/commit-status
+ project:
+ default:
+ # Avoid false negatives
+ threshold: 1%
+
+# Test files aren't important for coverage
+ignore:
+ - "tests"
+
+# Make comments less noisy
+comment:
+ layout: "files"
+ require_changes: true
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..d0f091e
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,19 @@
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: daily
+ - package-ecosystem: cargo
+ directory: /
+ schedule:
+ interval: daily
+ ignore:
+ - dependency-name: "*"
+ # patch and minor updates don't matter for libraries as consumers of this library build
+ # with their own lockfile, rather than the version specified in this library's lockfile
+ # remove this ignore rule if your package has binaries to ensure that the binaries are
+ # built with the exact set of dependencies and those are up to date.
+ update-types:
+ - "version-update:semver-patch"
+ - "version-update:semver-minor"
diff --git a/.github/mergify.yml b/.github/mergify.yml
new file mode 100644
index 0000000..f51dc96
--- /dev/null
+++ b/.github/mergify.yml
@@ -0,0 +1,23 @@
+pull_request_rules:
+ # - name: Automatic merge for Dependabot pull requests
+ # conditions:
+ # - "author=dependabot[bot]"
+ # - "check-success=ci"
+ # actions:
+ # merge:
+ # method: squash
+
+ - name: Automatic update to the aurora branch for pull requests
+ conditions:
+ - -conflict # skip PRs with conflicts
+ - -draft # skip GH draft PRs
+ - -author=dependabot[bot] # skip dependabot PRs
+ actions:
+ update:
+
+ - name: Automatic merge on approval
+ conditions:
+ - "#approved-reviews-by>=1"
+ actions:
+ merge:
+ method: squash
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
new file mode 100644
index 0000000..3e3d82f
--- /dev/null
+++ b/.github/workflows/check.yml
@@ -0,0 +1,167 @@
+# This workflow runs whenever a PR is opened or updated, or a commit is pushed to aurora. It runs
+# several checks:
+# - fmt: checks that the code is formatted according to rustfmt
+# - clippy: checks that the code does not contain any clippy warnings
+# - doc: checks that the code can be documented without errors
+# - hack: check combinations of feature flags
+# - msrv: check that the msrv specified in the crate is correct
+permissions:
+ contents: read
+# This configuration allows auroratainers of this repo to create a branch and pull request based on
+# the new branch. Restricting the push trigger to the aurora branch ensures that the PR only gets
+# built once.
+on:
+ push:
+ branches: [aurora]
+ pull_request:
+# If new code is pushed to a PR branch, then cancel in progress workflows for that PR. Ensures that
+# we don't waste CI time, and returns results quicker https://github.com/jonhoo/rust-ci-conf/pull/5
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+name: check
+jobs:
+ fmt:
+ runs-on: ubuntu-latest
+ name: stable / fmt
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install stable
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: rustfmt
+ - name: cargo fmt --check
+ run: cargo fmt --check
+ clippy:
+ runs-on: ubuntu-latest
+ name: ${{ matrix.toolchain }} / clippy
+ permissions:
+ contents: read
+ checks: write
+ strategy:
+ fail-fast: false
+ matrix:
+ # Get early warning of new lints which are regularly introduced in beta channels.
+ toolchain: [stable, beta]
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install ${{ matrix.toolchain }}
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: ${{ matrix.toolchain }}
+ components: clippy
+ - name: cargo clippy
+ uses: actions-rs/clippy-check@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ doc:
+ # run docs generation on nightly rather than stable. This enables features like
+ # https://doc.rust-lang.org/beta/unstable-book/language-features/doc-cfg.html which allows an
+ # API be documented as only available in some specific platforms.
+ runs-on: ubuntu-latest
+ name: nightly / doc
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install nightly
+ uses: dtolnay/rust-toolchain@nightly
+ - name: cargo doc
+ run: cargo doc --no-deps --all-features
+ env:
+ RUSTDOCFLAGS: --cfg docsrs
+ hack:
+ # cargo-hack checks combinations of feature flags to ensure that features are all additive
+ # which is required for feature unification
+ runs-on: ubuntu-latest
+ name: ubuntu / stable / features
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install stable
+ uses: dtolnay/rust-toolchain@stable
+ - name: cargo install cargo-hack
+ uses: taiki-e/install-action@cargo-hack
+ # intentionally no target specifier; see https://github.com/jonhoo/rust-ci-conf/pull/4
+ # --feature-powerset runs for every combination of features
+ - name: cargo hack
+ run: cargo hack --feature-powerset check
+ msrv:
+ # check that we can build using the minimal rust version that is specified by this crate
+ runs-on: ubuntu-latest
+ # we use a matrix here just because env can't be used in job names
+ # https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
+ strategy:
+ matrix:
+ msrv: ["1.65.0"] # 2021 edition requires 1.56
+ name: ubuntu / ${{ matrix.msrv }}
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install ${{ matrix.msrv }}
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: ${{ matrix.msrv }}
+ - name: cargo +${{ matrix.msrv }} check
+ run: cargo check
+
+ lint:
+ name: Lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the repository
+ if: github.event_name != 'pull_request'
+ uses: actions/checkout@v4
+ - name: Checkout the repository
+ if: github.event_name == 'pull_request'
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+
+ - name: Install Rust
+ uses: actions-rs/toolchain@v1
+ with:
+ profile: minimal
+ toolchain: stable
+ override: true
+ components: rustfmt, clippy
+
+ - name: Cache Cargo dependencies
+ uses: Swatinem/rust-cache@v2
+
+ - name: Run cargo-deny
+ uses: EmbarkStudios/cargo-deny-action@v1
+ with:
+ command: check licenses sources
+
+ - name: Run cargo-audit
+ uses: actions-rs/audit-check@v1
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Run committed
+ uses: crate-ci/committed@master
+ with:
+ args: "-vv"
+ commits: "HEAD"
+
+ - name: Run lychee
+ uses: lycheeverse/lychee-action@v1
+ with:
+ args: -v *.md
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Run codespell
+ uses: codespell-project/actions-codespell@master
+ with:
+ check_filenames: true
+ check_hidden: true
+ ignore_words_file: .codespellignore
+ skip: target,.git,_typos.toml
diff --git a/.github/workflows/safety.yml b/.github/workflows/safety.yml
new file mode 100644
index 0000000..27b974e
--- /dev/null
+++ b/.github/workflows/safety.yml
@@ -0,0 +1,84 @@
+# This workflow runs checks for unsafe code. In crates that don't have any unsafe code, this can be
+# removed. Runs:
+# - miri - detects undefined behavior and memory leaks
+# - address sanitizer - detects memory errors
+# - leak sanitizer - detects memory leaks
+# - loom - Permutation testing for concurrent code https://crates.io/crates/loom
+# See check.yml for information about how the concurrency cancellation and workflow triggering works
+permissions:
+ contents: read
+on:
+ push:
+ branches: [aurora]
+ pull_request:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+name: safety
+jobs:
+ sanitizers:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install nightly
+ uses: dtolnay/rust-toolchain@nightly
+ - run: |
+ # to get the symbolizer for debug symbol resolution
+ sudo apt install llvm
+ # to fix buggy leak analyzer:
+ # https://github.com/japaric/rust-san#unrealiable-leaksanitizer
+ # ensure there's a profile.dev section
+ if ! grep -qE '^[ \t]*[profile.dev]' Cargo.toml; then
+ echo >> Cargo.toml
+ echo '[profile.dev]' >> Cargo.toml
+ fi
+ # remove pre-existing opt-levels in profile.dev
+ sed -i '/^\s*\[profile.dev\]/,/^\s*\[/ {/^\s*opt-level/d}' Cargo.toml
+ # now set opt-level to 1
+ sed -i '/^\s*\[profile.dev\]/a opt-level = 1' Cargo.toml
+ cat Cargo.toml
+ name: Enable debug symbols
+ - name: cargo test -Zsanitizer=address
+ # only --lib --tests b/c of https://github.com/rust-lang/rust/issues/53945
+ run: cargo test --lib --tests --all-features --target x86_64-unknown-linux-gnu
+ env:
+ ASAN_OPTIONS: "detect_odr_violation=0:detect_leaks=0"
+ RUSTFLAGS: "-Z sanitizer=address"
+ - name: cargo test -Zsanitizer=leak
+ if: always()
+ run: cargo test --all-features --target x86_64-unknown-linux-gnu
+ env:
+ LSAN_OPTIONS: "suppressions=lsan-suppressions.txt"
+ RUSTFLAGS: "-Z sanitizer=leak"
+ miri:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - run: |
+ echo "NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)" >> $GITHUB_ENV
+ - name: Install ${{ env.NIGHTLY }}
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: ${{ env.NIGHTLY }}
+ components: miri
+ - name: cargo miri test
+ run: cargo miri test
+ env:
+ MIRIFLAGS: ""
+ # loom:
+ # runs-on: ubuntu-latest
+ # steps:
+ # - uses: actions/checkout@v4
+ # with:
+ # submodules: true
+ # - name: Install stable
+ # uses: dtolnay/rust-toolchain@stable
+ # - name: cargo test --test loom
+ # run: cargo test --release --test loom
+ # env:
+ # LOOM_MAX_PREEMPTIONS: 2
+ # RUSTFLAGS: "--cfg loom"
diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml
new file mode 100644
index 0000000..86c5642
--- /dev/null
+++ b/.github/workflows/scheduled.yml
@@ -0,0 +1,58 @@
+# Run scheduled (rolling) jobs on a nightly basis, as your crate may break independently of any
+# given PR. E.g., updates to rust nightly and updates to this crates dependencies. See check.yml for
+# information about how the concurrency cancellation and workflow triggering works
+permissions:
+ contents: read
+on:
+ push:
+ branches: [aurora]
+ pull_request:
+ schedule:
+ - cron: '7 7 * * *'
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+name: rolling
+jobs:
+ # https://twitter.com/mycoliza/status/1571295690063753218
+ nightly:
+ runs-on: ubuntu-latest
+ name: ubuntu / nightly
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install nightly
+ uses: dtolnay/rust-toolchain@nightly
+ - name: cargo generate-lockfile
+ if: hashFiles('Cargo.lock') == ''
+ run: cargo generate-lockfile
+ - name: cargo test --locked
+ run: cargo test --locked --all-features --all-targets
+ # https://twitter.com/alcuadrado/status/1571291687837732873
+ update:
+ # This action checks that updating the dependencies of this crate to the latest available that
+ # satisfy the versions in Cargo.toml does not break this crate. This is important as consumers
+ # of this crate will generally use the latest available crates. This is subject to the standard
+ # Cargo semver rules (i.e cargo does not update to a new major version unless explicitly told
+ # to).
+ runs-on: ubuntu-latest
+ name: ubuntu / beta / updated
+ # There's no point running this if no Cargo.lock was checked in in the first place, since we'd
+ # just redo what happened in the regular test job. Unfortunately, hashFiles only works in if on
+ # steps, so we repeat it.
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install beta
+ if: hashFiles('Cargo.lock') != ''
+ uses: dtolnay/rust-toolchain@beta
+ - name: cargo update
+ if: hashFiles('Cargo.lock') != ''
+ run: cargo update
+ - name: cargo test
+ if: hashFiles('Cargo.lock') != ''
+ run: cargo test --locked --all-features --all-targets
+ env:
+ RUSTFLAGS: -D deprecated
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..74ba6db
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,108 @@
+# This is the aurora CI workflow that runs the test suite on all pushes to aurora and all pull requests.
+# It runs the following jobs:
+# - required: runs the test suite on ubuntu with stable and beta rust toolchains
+# - minimal: runs the test suite with the minimal versions of the dependencies that satisfy the
+# requirements of this crate, and its dependencies
+# - os-check: runs the test suite on mac and windows
+# - coverage: runs the test suite and collects coverage information
+# See check.yml for information about how the concurrency cancellation and workflow triggering works
+permissions:
+ contents: read
+on:
+ push:
+ branches: [aurora]
+ pull_request:
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+name: test
+jobs:
+ required:
+ runs-on: ubuntu-latest
+ name: ubuntu / ${{ matrix.toolchain }}
+ strategy:
+ matrix:
+ # run on stable and beta to ensure that tests won't break on the next version of the rust
+ # toolchain
+ toolchain: [stable, beta]
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install ${{ matrix.toolchain }}
+ uses: dtolnay/rust-toolchain@master
+ with:
+ toolchain: ${{ matrix.toolchain }}
+ - name: cargo generate-lockfile
+ # enable this ci template to run regardless of whether the lockfile is checked in or not
+ if: hashFiles('Cargo.lock') == ''
+ run: cargo generate-lockfile
+ # https://twitter.com/jonhoo/status/1571290371124260865
+ - name: cargo test --locked
+ run: cargo test --locked --all-features --all-targets
+ # https://github.com/rust-lang/cargo/issues/6669
+ - name: cargo test --doc
+ run: cargo test --locked --all-features --doc
+ minimal:
+ # This action chooses the oldest version of the dependencies permitted by Cargo.toml to ensure
+ # that this crate is compatible with the minimal version that this crate and its dependencies
+ # require. This will pickup issues where this create relies on functionality that was introduced
+ # later than the actual version specified (e.g., when we choose just a major version, but a
+ # method was added after this version).
+ #
+ # This particular check can be difficult to get to succeed as often transitive dependencies may
+ # be incorrectly specified (e.g., a dependency specifies 1.0 but really requires 1.1.5). There
+ # is an alternative flag available -Zdirect-minimal-versions that uses the minimal versions for
+ # direct dependencies of this crate, while selecting the maximal versions for the transitive
+ # dependencies. Alternatively, you can add a line in your Cargo.toml to artificially increase
+ # the minimal dependency, which you do with e.g.:
+ # ```toml
+ # # for minimal-versions
+ # [target.'cfg(any())'.dependencies]
+ # openssl = { version = "0.10.55", optional = true } # needed to allow foo to build with -Zminimal-versions
+ # ```
+ # The optional = true is necessary in case that dependency isn't otherwise transitively required
+ # by your library, and the target bit is so that this dependency edge never actually affects
+ # Cargo build order. See also
+ # https://github.com/jonhoo/fantoccini/blob/fde336472b712bc7ebf5b4e772023a7ba71b2262/Cargo.toml#L47-L49.
+ # This action is run on ubuntu with the stable toolchain, as it is not expected to fail
+ runs-on: ubuntu-latest
+ name: ubuntu / stable / minimal-versions
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install stable
+ uses: dtolnay/rust-toolchain@stable
+ - name: Install nightly for -Zminimal-versions
+ uses: dtolnay/rust-toolchain@nightly
+ - name: rustup default stable
+ run: rustup default stable
+ - name: cargo update -Zminimal-versions
+ run: cargo +nightly update -Zminimal-versions
+ - name: cargo test
+ run: cargo test --locked --all-features --all-targets
+ coverage:
+ # use llvm-cov to build and collect coverage and outputs in a format that is compatible with
+ # codecov.io
+ runs-on: ubuntu-latest
+ name: ubuntu / stable / coverage
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: true
+ - name: Install stable
+ uses: dtolnay/rust-toolchain@stable
+ with:
+ components: llvm-tools-preview
+ - name: cargo install cargo-llvm-cov
+ uses: taiki-e/install-action@cargo-llvm-cov
+ - name: cargo generate-lockfile
+ if: hashFiles('Cargo.lock') == ''
+ run: cargo generate-lockfile
+ - name: cargo llvm-cov
+ run: cargo llvm-cov --locked --all-features --lcov --output-path lcov.info
+ - name: Upload to codecov.io
+ uses: codecov/codecov-action@v3
+ with:
+ fail_ci_if_error: true
diff --git a/Cargo.lock b/Cargo.lock
index f1f0af0..2a7f222 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,9 +10,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "libc"
-version = "0.2.151"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
+checksum = "fd386f0746b2a12a14f1256fa1ee9a31c584aadcdd0b72b15a4cb59381e60b2d"
[[package]]
name = "lqth"
@@ -25,53 +25,53 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.27"
+version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
[[package]]
name = "proc-macro2"
-version = "1.0.70"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
+checksum = "19f287c234c9b2d0308d692dee5c449c1a171167a6f8150f7cf2a49d8fd96967"
dependencies = [
- "unicode-ident",
+ "unicode-xid",
]
[[package]]
name = "quote"
-version = "1.0.33"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+checksum = "7ab938ebe6f1c82426b5fb82eaf10c3e3028c53deaa3fbe38f5904b37cf4d767"
dependencies = [
"proc-macro2",
]
[[package]]
name = "syn"
-version = "2.0.40"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e"
+checksum = "9f8c8eab7d9f493cd89d4068085651d81ac7d39c56eb64f7158ea514b156e280"
dependencies = [
"proc-macro2",
"quote",
- "unicode-ident",
+ "unicode-xid",
]
[[package]]
name = "thiserror"
-version = "1.0.50"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+checksum = "79067843a369b7df0391d33d48636936ee91aa6d6370931eebe1278e6f88a723"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.50"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+checksum = "2dc6215837a07b345fd86880601a9c55bb5974e0cec507c48bbd3aaa006559a9"
dependencies = [
"proc-macro2",
"quote",
@@ -79,10 +79,10 @@ dependencies = [
]
[[package]]
-name = "unicode-ident"
-version = "1.0.12"
+name = "unicode-xid"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]]
name = "x11"
diff --git a/Cargo.toml b/Cargo.toml
index b9b19d4..3119244 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,5 +18,5 @@ path = "src/bin/main.rs"
[dependencies]
byteorder = "1.5"
-thiserror = "1"
+thiserror = "1.0.2"
x11 = { version = "2.21", default-features = false, features = ["xlib"] }
diff --git a/README.md b/README.md
index eac98c3..d3913f8 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ let mut out = std::io::stdout().lock();
## The binary?
> Nah, am a norme person and I don't wanna write code in this language to JUST TAKE A SCREENSHOT, can you give me a JW solution?
-We offer a simple binary thats implement the most of this crate features. You can build it with the build command or if u use cargo then you can install it via `cargo install lqth`.
+We offer a simple binary that's implement the most of this crate features. You can build it with the build command or if u use cargo then you can install it via `cargo install lqth`.
> **Note** for more information about the binary and how to use it, you can run `lqth -h` or see this [document](./docs/bin.md).
@@ -53,3 +53,5 @@ This project is licensed under [MIT license][mit].
[mit]: https://github.com/0x61nas/lqth/blob/aurora/LICENSE
+
+License: MIT
diff --git a/committed.toml b/committed.toml
index ddbb2ab..a42d6a9 100644
--- a/committed.toml
+++ b/committed.toml
@@ -2,6 +2,17 @@
# https://www.conventionalcommits.org
style="conventional"
+allowed_types = [
+ "fix",
+ "feat",
+ "chore",
+ "docs",
+ "style",
+ "refactor",
+ "perf",
+ "test",
+ "ci",
+]
# allow merge commits
merge_commit = true
# subject is not required to be capitalized
diff --git a/docs/bin.md b/docs/bin.md
index b49e8eb..338ecea 100644
--- a/docs/bin.md
+++ b/docs/bin.md
@@ -1,6 +1,6 @@
**lqth** is a simple screenshot utility for X11. It writes thae image in a Farbfeld format to the stdout.
-# Build and instal
+# Build and install
```sh
cargo build -r
@@ -28,7 +28,7 @@ Take a screenshot for the full screen
lqth > screen.ff
```
-Take a scrrenshot for the active window
+Take a screenshot for the active window
```sh
lqth -w $(xdotool getactivewindow) | ff2png > window.png
diff --git a/src/bin/main.rs b/src/bin/main.rs
index de76c27..9a9b193 100644
--- a/src/bin/main.rs
+++ b/src/bin/main.rs
@@ -109,7 +109,7 @@ fn parse_args() -> TickTick {
}
"v" | "version" => info(format!("{NAME} {VERSION}")),
"h" | "help" => info(format!("Usage: {NAME} [OPTIONS]\n{HELP}")),
- unknow => fail(format!("Unknown argument `{unknow}`")),
+ unknown => fail(format!("Unknown argument `{unknown}`")),
}
}
opts
diff --git a/src/lib.rs b/src/lib.rs
index 5c6eee8..dfbbc5e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -32,7 +32,7 @@
//! # The binary?
//! > Nah, am a norme person and I don't wanna write code in this language to JUST TAKE A SCREENSHOT, can you give me a JW solution?
//!
-//! We offer a simple binary thats implement the most of this crate features. You can build it with the build command or if u use cargo then you can install it via `cargo install lqth`.
+//! We offer a simple binary that's implement the most of this crate features. You can build it with the build command or if u use cargo then you can install it via `cargo install lqth`.
//!
//! > **Note** for more information about the binary and how to use it, you can run `lqth -h` or see this [document](./docs/bin.md).
//!