diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..54bac1a --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,28 @@ +# Copyright (c) 2026 ADBC Drivers Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: 2 +updates: + - package-ecosystem: "github-actions" + commit-message: + prefix: "chore: " + directory: "/" + groups: + actions: + patterns: + - "*" + schedule: + interval: "weekly" + cooldown: + default-days: 7 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..b176c35 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,107 @@ + + +# How to Contribute + +All contributors are expected to follow the [Code of +Conduct](https://github.com/adbc-drivers/quack?tab=coc-ov-file#readme). + +## Reporting Issues and Making Feature Requests + +Please file issues and feature requests on the GitHub issue tracker: +https://github.com/adbc-drivers/quack/issues + +Potential security vulnerabilities should be reported to +[security@adbc-drivers.org](mailto:security@adbc-drivers.org) instead. See +the [Security +Policy](https://github.com/adbc-drivers/quack?tab=security-ov-file#readme). + +## Build and Test + +### Build + +Build the driver by passing the configuration, platform, and architecture to +the CI build script: + +```bash +./ci/scripts/build.sh [test|release] [linux|windows|macos] [amd64|arm64] +``` + +The build script requires a vcpkg toolchain via `CMAKE_TOOLCHAIN_FILE`, +`VCPKG_ROOT`, or `VCPKG_INSTALLATION_ROOT`. It configures the CI build under +`build/ci-test-linux-amd64`, builds the driver and C++ tests, and copies the +driver library to `build/libadbc_driver_quack.so`. + +### Test + +C++ unit tests can be run after building: + +```bash +./ci/scripts/test.sh linux amd64 +``` + +Also, the validation suite can be run via [pixi](https://pixi.prefix.dev/latest/). +The driver must be built with `./ci/scripts/build.sh` before running validation. +Also, the Quack server defined in `compose.yaml` must be started: + +```bash +docker compose up test-service +export QUACK_URI="quack://localhost:9494/?token=quack-secret" + +pixi run validate --collect-only +pixi run validate -k connection +pixi run validate +``` + +This will produce a test report, which can be rendered into a documentation +page (using MyST Markdown): + +```shell +$ pixi run gendocs --output generated/ +``` + +Then look at `./generated/quack.md`. + +## Opening a Pull Request + +Before opening a pull request: + +- Review your changes and make sure no stray files, etc. are included. +- Ensure the Apache license header is at the top of all files. +- Check if there is an existing issue. If not, please file one, unless the + change is trivial. +- Assign the issue to yourself by commenting just the word `take`. +- Run the static checks by installing [pre-commit](https://pre-commit.com/), + then running `pre-commit run --all-files` from inside the repository. Make + sure all your changes are staged/committed (unstaged changes will be + ignored). + +When writing the pull request description: + +- Ensure the title follows [Conventional + Commits](https://www.conventionalcommits.org/en/v1.0.0/) format. The + component should be a directory path relative to the repo root, + e.g. `src/auth` would also be valid if that directory existed). Example + titles: + + - `feat: support GEOGRAPHY data type` + - `chore: update action versions` + - `fix!: return us instead of ms` + + Ensure that breaking changes are appropriately flagged with a `!` as seen + in the last example above. +- Make sure the description ends with `Closes #NNN`, `Fixes #NNN`, or + similar, so that the issue will be linked to your pull request. diff --git a/README.md b/README.md index ad5fba3..7504349 100644 --- a/README.md +++ b/README.md @@ -16,38 +16,28 @@ limitations under the License. # ADBC Driver for DuckDB Quack -This repository contains a C++ ADBC driver for DuckDB's Quack remote protocol. +This repository contains [ADBC drivers](https://arrow.apache.org/adbc/) for +[DuckDB Quack](https://duckdb.org/quack/), implemented in C++. -## Build +This project is not associated with DuckDB Labs. -Use the repository root as the working directory. The supported local Linux -amd64 build path is: +## Installation -```bash -./ci/scripts/build.sh test linux amd64 -``` +Pre-packaged builds of the drivers in this repo have been made available for +various platforms from the [Columnar](https://columnar.tech) CDN. These can be +installed by any tool that supports [ADBC](https://arrow.apache.org/adbc/) +Driver Manifests, such as [dbc](https://columnar.tech/dbc): -The build script requires a vcpkg toolchain via `CMAKE_TOOLCHAIN_FILE`, -`VCPKG_ROOT`, or `VCPKG_INSTALLATION_ROOT`. It configures the CI build under -`build/ci-test-linux-amd64`, builds the driver and C++ tests, and copies the -driver library to `build/libadbc_driver_quack.so`. +```sh +dbc install quack --pre +``` -## Test +See [Building](#building) if you would rather build the drivers yourself. -Run C++ tests after building: +## Building -```bash -./ci/scripts/test.sh linux amd64 -``` +See [CONTRIBUTING.md](CONTRIBUTING.md). -Validation tests use the copied driver library and the Quack server defined in -`compose.yaml`: - -```bash -pixi run validate --collect-only -pixi run validate -k connection -pixi run validate -``` +## Contributing -Rebuild with `./ci/scripts/build.sh test linux amd64` before running -validation. +See [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/docs/quack.md b/docs/quack.md index 48931c4..b536a5b 100644 --- a/docs/quack.md +++ b/docs/quack.md @@ -23,6 +23,10 @@ This driver provides ADBC access to a DuckDB server exposed through the Quack remote protocol. +:::{note} +This project is not associated with DuckDB Labs. +::: + ## Connecting ```python