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-enginecd graphql-engine/cligit remote add upstream https://github.com/hasura/graphql-enginegit checkout -b <branch-name>
Install the dependencies as follows:
make depsOnce 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-enginedirectory, 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_IMAGEto 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
hasurain your PATH or setHASURA_TEST_CLI_PATHto 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 buildIf 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.