Thank you for your interest in the Hasura GraphQL Engine CLI.
The CLI is written in Go using the popular
package spf13/cobra
.
All CLI related issues are labelled as c/cli
. If you're new to the CLI codebase, you can check out the
good-first-issue
label for issues that
should be fairly easy to implement.
If you are a first-time contributor, feel free to post your doubts/questions in #contrib
channel on hasura discord server.
The following dependencies need to be installed in order to work on the CLI codebase:
You can follow your existing Golang workflow to fork, work on a branch and submit PR. If you're new to forking and using branches, please execute the following commands and make sure the import paths are correct:
- Fork the repo on GitHub
git clone https://github.com/<your-username>/graphql-engine
cd graphql-engine/cli
git remote add upstream https://github.com/hasura/graphql-engine
git checkout -b <branch-name>
Install the dependencies as follows:
make deps
Once everything is installed and running, you can start working on the feature/fix that you picked up.
Our Docker Compose manifest is the easiest way to run graphql-engine.
- From the
graphql-engine
directory, runcd install-manifests/docker-compose
. - From inside that directory, run
docker compose up -d
.
The GraphQL endpoint will be at https://localhost:8080/v1/graphql
.
The console will be available at https://localhost:8080/console
.
If you modify files in assets/
, run make assets
.
Commit, push and submit the PR.
When you're adding a new feature, it is encouraged to add integration tests and unit tests wherever possible.
Please run all the tests and make sure everything passes before submitting the PR.
-
Set
HASURA_TEST_CLI_HGE_DOCKER_IMAGE
to the docker image of the server that you want the tests to run against. For example:export HASURA_TEST_CLI_HGE_DOCKER_IMAGE="hasura/graphql-engine:v2.1.0"
. -
e2e tests look for a hasura binary in PATH, you can either make sure it's available as
hasura
in your PATH or setHASURA_TEST_CLI_PATH
to the binary path that you want to run the tests with. You'll get the path from running the build (see "Builds" below). -
Run the full suite by executing
make test-all
.
To build a binary, execute the following command:
make build
If you get an error running the above, run this command:
make build-cli-ext copy-cli-ext
This will output cross-platform binaries to the _output
directory.