Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/eerimoq/gqt

Build and execute GraphQL queries in the terminal.
https://github.com/eerimoq/gqt

Last synced: about 2 months ago
JSON representation

Build and execute GraphQL queries in the terminal.

Awesome Lists containing this project

README

        

GraphQL client in the terminal
==============================

Build and execute GraphQL queries in the terminal.

This project is inspired by https://graphiql-online.com.

.. image:: https://github.com/eerimoq/gqt/raw/main/docs/assets/showcase.gif

Installation
------------

.. code-block::

pip3 install gqt

It's recommended to install `bat`_ for pretty output.

Controls
--------

- Press ``h`` or ``?`` for help.

Examples
--------

Set default GraphQL endpoint:

.. code-block::

export GQT_ENDPOINT=https://mys-lang.org/graphql

Interactively create a query and execute it:

.. code-block::

gqt

.. code-block:: json

{
"statistics": {
"numberOfGraphqlRequests": 3
}
}

Repeat last query:

.. code-block::

gqt -r

.. code-block:: json

{
"statistics": {
"numberOfGraphqlRequests": 4
}
}

Print the query (and variables) instead of executing it:

.. code-block::

gqt -q

.. code-block:: graphql

Query:
query Query {
statistics {
numberOfGraphqlRequests
}
}

Variables:
{}

YAML output:

.. code-block::

gqt -y

.. code-block:: yaml

statistics:
numberOfGraphqlRequests: 8

Name queries:

.. code-block::

gqt -n stats -y

.. code-block:: yaml

statistics:
numberOfGraphqlRequests: 8

.. code-block::

gqt -n time -y

.. code-block:: yaml

standardLibrary:
package:
latestRelease:
version: 0.20.0

.. code-block::

gqt -n stats -y -r

.. code-block:: yaml

statistics:
numberOfGraphqlRequests: 9

.. code-block::

gqt -n time -y -r

.. code-block:: yaml

standardLibrary:
package:
latestRelease:
version: 0.20.0

List queries:

.. code-block::

gqt -l

.. code-block::

Endpoint Query name
---------------------------- ------------
https://mys-lang.org/graphql
https://mys-lang.org/graphql time
https://mys-lang.org/graphql stats

Make arguments variables by pressing ``v`` and give them as ``-v
=`` on the command line:

.. code-block::

gqt -v name=time -y

.. code-block:: yaml

standardLibrary:
package:
latestRelease:
version: 0.20.0

.. code-block::

gqt -r -q

.. code-block:: graphql

query Query($name: String!) {
standardLibrary {
package(name: $name) {
latestRelease {
version
}
}
}
}

Print the schema:

.. code-block::

gqt --print-schema

.. code-block:: graphql

type Query {
standardLibrary: StandardLibrary!
statistics: Statistics!
activities: [Activity!]!
}

type StandardLibrary {
package(name: String!): Package!
packages: [Package!]
numberOfPackages: Int
numberOfDownloads: Int
}
...

Enpoint option and bearer token in HTTP auth header:

.. code-block::

gqt -e https://api.github.com/graphql -H "Authorization: bearer ghp_"

Ideas
-----

- Press ``c`` for compact view, hiding fields that are not selected.

- Search:

Press ``/`` to search for visible fields. Press ```` and
```` to move to the previous and next search hit. Highlight
all hits. Press ```` to end the search and move the cursor to
the current hit. Press ```` to abort the search and restore the
cursor to its pre-search position. Show number of hits.

.. code-block::

╭─ Query
│ ▼ search
│ ▶ Book
│ ■ title
│ ▶ Author
│ ■ name
│ ▶ film
│ ▶ films

/fil 1 of 2 matches

- Alias?

- Press ``a`` to create an alias.

- Press ``d`` to delete an alias.

``smallPicture`` and ``mediumPicture`` are aliases of ``picture``.

.. code-block::

╭─ Query
│ ▶ Book
│ ▶ picture
│ ▼ smallPicture: picture
│ ■ width: 320
│ ■ height: 240
│ ▼ mediumPicture: picture
│ ■ width: 800
│ ■ height: 600

- Optionally give schema path on command line. For endpoints that does
not support schema introspection.

.. _bat: https://github.com/sharkdp/bat