diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..374acf7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,47 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +env: + CARGO_TERM_COLOR: always + +jobs: + check: + name: Check (${{ matrix.toolchain }}) + runs-on: ubuntu-latest + strategy: + matrix: + toolchain: [stable, nightly] + steps: + - uses: actions/checkout@v4 + + - name: Install Rust ${{ matrix.toolchain }} + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.toolchain }} + components: rustfmt, clippy + + - name: Cache cargo registry and build + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.toml') }} + + - name: Check formatting + run: cargo fmt --check + + - name: Run clippy + run: cargo clippy -- -D warnings + + - name: Build + run: cargo build + + - name: Run tests + run: cargo test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..795bd35 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +name: Release + +on: + push: + tags: + - "v*.*.*" + +env: + CARGO_TERM_COLOR: always + +jobs: + publish: + name: Publish to crates.io + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo registry and build + uses: actions/cache@v4 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.toml') }} + + - name: Build release + run: cargo build --release + + - name: Run tests + run: cargo test + + - name: Publish to crates.io + run: cargo publish + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/src/lib.rs b/src/lib.rs index 04be470..053d117 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,21 @@ -#![allow(dead_code)] - +/// Rust SDK for the Onspring API v2. +/// +/// # Example +/// +/// ```no_run +/// use onspring::{OnspringClient, PagingRequest}; +/// +/// # async fn example() -> onspring::Result<()> { +/// let client = OnspringClient::builder("your-api-key").build(); +/// +/// // Check connectivity +/// client.ping().await?; +/// +/// // List apps +/// let apps = client.list_apps(None).await?; +/// # Ok(()) +/// # } +/// ``` pub mod client; mod endpoints; pub mod error;