👍🎉 First off, thanks for taking the time to contribute! 🎉👍
This is the repository for CloudQuery SDK. If you are looking for CloudQuery CLI and plugins take a look at our monorepo
CloudQuery has a pluggable architecture and uses gRPC to communicate between source plugins, CLI and destination plugins. To develop a new plugin for CloudQuery, you don’t need to understand the inner workings of gRPC as those are abstracted via the plugin-sdk.
If you want to make any changes to the protocol between plugins and the CLI you will need to install all go-gRPC prerequisites.
All protobuf files and auto-generated Go gRPC server/client are located under ./internal/pb.
To regenerate new Go gRPC client and server run make gen-proto.
To provide a better API which abstracts the protobuf structs we maintain our own clients at ./clients and servers at ./plugins/ so make sure to adjust those accordingly.
servecommand line APIs to start serving plugins.pluginsmain plugin APIs (source/dest).schematables, columns and supported typescodegenAPIs to generate CloudQuery tables from Go structsfakeruseful API to fake structs for source plugin mock tests
Run make test to run all unit-tests
We use golangci-lint as our linter. Configuration available in [./golangci.yml] to run lint make lint