diff --git a/.github/workflows/rust_lint.yml b/.github/workflows/rust_lint.yml new file mode 100644 index 00000000..645f1559 --- /dev/null +++ b/.github/workflows/rust_lint.yml @@ -0,0 +1,33 @@ +name: Rust Lint + +on: + pull_request: + types: [opened, reopened, synchronize] + paths: + - 'services/**' + +permissions: + contents: read + pull-requests: read + +jobs: + clippy: + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: services + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + + - name: Format + run: cargo fmt --all --check + + - name: Lint + run: cargo clippy --all-targets --all-features -- -D warnings diff --git a/.github/workflows/rust_test.yml b/.github/workflows/rust_test.yml new file mode 100644 index 00000000..fba89cf0 --- /dev/null +++ b/.github/workflows/rust_test.yml @@ -0,0 +1,24 @@ +name: Rust Tests + +on: + pull_request: + types: [opened, reopened, synchronize] + paths: + - 'services/**' + +jobs: + tests: + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: services + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Rust + uses: dtolnay/rust-toolchain@stable + + - name: Run tests + run: cargo test diff --git a/.goreleaser.yml b/.goreleaser.yml index 2181b70f..d5f3d1f1 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -67,6 +67,9 @@ changelog: homebrew_casks: - name: poke-cli ids: [ poke-cli ] + binaries: + - poke-cli + - poke-cache description: "A hybrid CLI/TUI tool written in Go for viewing Pokémon data from the terminal!" homepage: "https://docs.poke-cli.com/" license: MIT diff --git a/README.md b/README.md index 79b9759b..6cdb3ed3 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,27 @@ pokemon-logo

version-label + downloads docker-image-size - ci-status-badge + docker-pulls + release-status-badge -
+ +## Pokemon CLI +
tests-label go-version codecov
-## Pokemon CLI +
+ python-tests-label + python-version +
+
+ rust-tests-label + rust-version +
`poke-cli` is a hybrid of a classic CLI and a modern TUI tool for viewing VG and TCG data about Pokémon! View the [documentation](https://docs.poke-cli.com) on the data infrastructure in [data_platform/](https://github.com/digitalghost-dev/poke-cli/tree/main/data_platform) if you're interested. @@ -49,16 +60,20 @@ View the [documentation](https://docs.poke-cli.com) on the data infrastructure i ### Homebrew +Homebrew will install the CLI _and_ the Rust caching binary + 1. Install the Cask: ```bash brew install --cask digitalghost-dev/tap/poke-cli - ```` + ``` 2. Verify installation: ```bash - poke-cli -v + poke-cli ``` ### Scoop +Scoop will install the CLI _and_ the Rust caching binary + 1. Add the bucket: ```bash scoop bucket add digitalghost https://github.com/digitalghost-dev/scoop-bucket.git @@ -71,7 +86,7 @@ View the [documentation](https://docs.poke-cli.com) on the data infrastructure i 3. Verify installation: ```bash - poke-cli -v + poke-cli ``` ### Linux Packages @@ -85,7 +100,6 @@ Cloudsmith is a fully cloud-based service that lets you easily create, store, an | Package Type | Distributions | Repository Setup | Installation Command | |:------------:|-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| -| `apk` | Alpine | `sudo apk add --no-cache bash && curl -1sLf 'https://dl.cloudsmith.io/basic/digitalghost-dev/poke-cli/setup.alpine.sh' \| sudo -E bash` | `sudo apk add poke-cli --update-cache` | | `deb` | Ubuntu, Debian | `curl -1sLf 'https://dl.cloudsmith.io/public/digitalghost-dev/poke-cli/setup.deb.sh' \| sudo -E bash` | `sudo apt-get install poke-cli` | | `rpm` | Fedora, CentOS, Red Hat, openSUSE | `curl -1sLf 'https://dl.cloudsmith.io/public/digitalghost-dev/poke-cli/setup.rpm.sh' \| sudo -E bash` | `sudo yum install poke-cli` | diff --git a/services/Cargo.toml b/services/Cargo.toml index 872b5973..79971373 100644 --- a/services/Cargo.toml +++ b/services/Cargo.toml @@ -2,6 +2,7 @@ name = "services" version = "0.1.0" edition = "2024" +rust-version = "1.86" [dependencies] anyhow = "1.0" diff --git a/services/README.md b/services/README.md index ffc0bd94..913e09b2 100644 --- a/services/README.md +++ b/services/README.md @@ -6,8 +6,9 @@ These currently include: * Caching * Caches data from APIs to improve performance and reduce network usage. + ![Rust caching service sequence diagram](https://dc8hq8aq7pr04.cloudfront.net/rust-caching-service.png) * Aggregation * Fetches each PokéAPI resource once and returns one structured JSON profile for the Go CLI to render. - ![aggregation service squence diagram](https://dc8hq8aq7pr04.cloudfront.net/rust_aggregation_service.png) + ![Rust aggregation service sequence diagram](https://dc8hq8aq7pr04.cloudfront.net/rust-aggregation-service.png) \ No newline at end of file