graphql-engine/cli/CONTRIBUTING.md
Samir Talwar 349ccd3296 Use docker compose, not docker-compose.
Docker Compose is now a plugin for Docker, bundled by default in Docker Desktop and many Linux distribution packages. The standalone `docker-compose` binary has been deprecated since Docker Compose v2.

Using the new version directly allows us to write development scripts that do not require `docker-compose` to be installed.

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/5185
GitOrigin-RevId: c8542b8b2405d1aa32288991688c6fde4af96383
2022-08-02 10:30:57 +00:00

3.3 KiB

Contributing

Thank you for your interest in the Hasura GraphQL Engine CLI.

The CLI is written in Go using the popular package spf13/cobra.

Find an issue to work on

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.

Pre-requisites

The following dependencies need to be installed in order to work on the CLI codebase:

Set up the repository

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 dependencies

Install the dependencies as follows:

make deps

Development

Once everything is installed and running, you can start working on the feature/fix that you picked up.

Run the server

Our Docker Compose manifest is the easiest way to run graphql-engine.

  1. From the graphql-engine directory, run cd install-manifests/docker-compose.
  2. 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.

Assets

If you modify files in assets/, run make assets.

Submit a PR

Commit, push and submit the PR.

Tests

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.

  1. 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".

  2. e2e tests look for a hasura binary in PATH, you can either make sure it's available as hasura in your PATH or set HASURA_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).

  3. Run the full suite by executing make test-all.

Builds

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.