From de5cd1911650ae5f3c75f57123708f5dcff06dfa Mon Sep 17 00:00:00 2001 From: Jay Oster Date: Wed, 11 Dec 2024 12:07:45 -0800 Subject: [PATCH] Initial commit. --- .github/FUNDING.yml | 3 + .github/workflows/ci.yml | 87 ++++++++++ .gitignore | 2 + Cargo.lock | 74 +++++++++ Cargo.toml | 31 ++++ LICENSE | 18 ++ README.md | 18 ++ example.bin | Bin 0 -> 176 bytes img/screenshot.png | Bin 0 -> 460876 bytes src/grapheme.rs | 84 ++++++++++ src/group.rs | 133 +++++++++++++++ src/main.rs | 349 +++++++++++++++++++++++++++++++++++++++ 12 files changed, 799 insertions(+) create mode 100644 .github/FUNDING.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 example.bin create mode 100644 img/screenshot.png create mode 100644 src/grapheme.rs create mode 100644 src/group.rs create mode 100644 src/main.rs diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..fc5d86b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: +- parasyte +patreon: blipjoy diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2dd121a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,87 @@ +name: CI +on: + push: + pull_request: + schedule: + - cron: '0 0 * * 0' +jobs: + checks: + name: Check + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + - beta + - 1.73.0 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Cargo check + run: cargo check --workspace + + lints: + name: Lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + components: clippy, rustfmt + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Install cargo-machete + uses: baptiste0928/cargo-install@v2 + with: + crate: cargo-machete + - name: Cargo fmt + run: cargo fmt --all -- --check + - name: Cargo doc + run: cargo doc --workspace --no-deps + - name: Cargo clippy + run: cargo clippy --workspace --tests -- -D warnings + - name: Cargo machete + run: cargo machete + + tests: + name: Test + runs-on: ubuntu-latest + needs: [checks, lints] + strategy: + matrix: + rust: + - stable + - beta + - 1.73.0 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Cargo test + run: cargo test --workspace diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0592392 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +.DS_Store diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..f0bda99 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,74 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "colorz" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceb37c5798821e37369cb546f430f19da2f585e0364c9615ae340a9f2e6067b" + +[[package]] +name = "error-iter" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8070547d90d1b98debb6626421d742c897942bbb78f047694a5eb769495eccd6" + +[[package]] +name = "hd" +version = "0.1.0" +dependencies = [ + "colorz", + "error-iter", + "onlyargs", + "onlyargs_derive", + "onlyerror", + "unicode-display-width", + "unicode-segmentation", +] + +[[package]] +name = "myn" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e49d2fc6c79d00e708293cb0793a2a33357405d0c0bf0fa7dc88e7694c8db313" + +[[package]] +name = "onlyargs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d78a5eb5c0119da8284d056af5b352002594003e50fe1d6ee892acabfe6184" + +[[package]] +name = "onlyargs_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e96dec8cebe43d77e74cc3104184765ba563fc675890fef82b61124fd647cd6" +dependencies = [ + "myn", + "onlyargs", +] + +[[package]] +name = "onlyerror" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f0c9c18fd5c5a2c580df757c1a0bc5058fa4b1db1e1823c6692d7c7d5a09ff0" +dependencies = [ + "myn", +] + +[[package]] +name = "unicode-display-width" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a43273b656140aa2bb8e65351fe87c255f0eca706b2538a9bd4a590a3490bf3" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..99c0649 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "hd" +description = "Hex Display: A modern `xxd` alternative." +version = "0.1.0" +authors = ["Jay Oster "] +repository = "https://github.com/parasyte/hd" +edition = "2021" +rust-version = "1.73.0" +keywords = ["bytes", "hex", "pretty", "viewer", "xxd"] +categories = ["command-line-utilities", "development-tools", "value-formatting"] +license = "MIT" +include = [ + "/Cargo.*", + "/LICENSE", + "/README.md", + "/img/screenshot.png", + "/src/**/*", +] + +[dependencies] +colorz = { version = "1.1.4", features = ["std"] } +error-iter = "0.4.1" +onlyargs = "0.2.0" +onlyargs_derive = "0.2.0" +onlyerror = "0.1.5" +unicode-display-width = "0.3.0" +unicode-segmentation = "1.12.0" + +[profile.release] +codegen-units = 1 +lto = "fat" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a83775a --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +Copyright 2024 Jay Oster + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9ff472c --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +[![Crates.io](https://img.shields.io/crates/v/hd)](https://crates.io/crates/hd "Crates.io version") +[![Documentation](https://img.shields.io/docsrs/hd)](https://docs.rs/hd "Documentation") +[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/) +[![GitHub actions](https://img.shields.io/github/actions/workflow/status/parasyte/hd/ci.yml?branch=main)](https://github.com/parasyte/hd/actions "CI") +[![GitHub activity](https://img.shields.io/github/last-commit/parasyte/hd)](https://github.com/parasyte/hd/commits "Commit activity") +[![GitHub Sponsors](https://img.shields.io/github/sponsors/parasyte)](https://github.com/sponsors/parasyte "Sponsors") + +# `hd` + +Hex Display: A modern `xxd` alternative. + +![Screenshot](./img/screenshot.png) + +# Installing + +```bash +cargo install hd +``` diff --git a/example.bin b/example.bin new file mode 100644 index 0000000000000000000000000000000000000000..b359a3305e8b5bacacfc7af985b8b4d6eeb35503 GIT binary patch literal 176 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