CLI Client

As a person who has worked a decent part of his live in Open Source the CLI client was (of course!) the first client made. It might be a bit alien to normal computer users these days that only know about the web and graphical user interfaces and apps and such, but the CLI was way before that time and is still widely used. If you do not know it, I invite you to try it out. See it as an adventure and an opportunity to learn something new!

CLI stands for Command Line Interface. It uses a terminal application to enter commands and, in the case of Corridor Quest, send those commands to a game server reachable over a network (typically the Internet). Other types of interfaces exist, like the GUI (Graphical User Interface) or the WebUI (Web User Interface) and Corridor Quest can and will have several other types of clients of various interface types to interact with the system. This section however, is about the CLI client.

The CLI client is meant for people that have a desktop/laptop Operating System like Linux, MacOS or Windows. All these operating systems have a tool available called a 'Terminal'. You have access to the CLI client using this 'Terminal'.

Before you can use the CLI client you first need to install it.

General behaviour

The CLI client is called cq and follows normal semantics for CLI applications. At any level you can specifiy the argument --help to get help at that level. Example:

> cq --help
Usage: cq <COMMAND>

Commands:
  signup  Signup to a Corridor Quest server (create a user)
  login   Login to a Corridor Quest server
  logout  Logout from a Corridor Quest server
  server  Operations on the game server
  user    Operations on your user account
  game    Operations on Games

So, for example, entering cq user show wil give you information about yourself when you are logged in:

> cq user show

Username: alice
Email Address: alice@example.local
Notification method: Email
Notify on Turn: true
Notify on Action: false
Notify on Game: true
Active session
Password changed at: 2025-11-06 20:35:52.155293 UTC

'User' is the subject and 'show' the command. This is how it mostly works. Some often used commands, like login, etc, have been made available at the root level instead of under the 'user' where they semantically would belong. this is done for conviniance.

Commands can have arguments, their purpose is to give data in the context of the command. For example: cq user description "Alice from Wonderland" will change the description of the logged in user. "Alice in Wonderland" is the argument here.

> cq user description --help                        
Change User Description

Usage: cq user description <NEW_DESCRIPTION>

Arguments:
  <NEW_DESCRIPTION>  The new Description for the user

Options:
  -h, --help  Print help

Commands can have options. Their purpose is to give context to a command. For example: cg game show --game-id=43 here the subject is 'game', the command is 'show' and the only and mandatory option is --game-id with value '43' which is to provide the game-id of the game to show. Option have long and short forms. the short form for --game-id is -g, so cg game show -g1 is the same. Note that the long form always begins with '--' and the short form with '-'. cg game show --help (or -h) provides you with all options in their long and short form:

> cq game show --help
Show Game

Usage: cq game show --game-id <GAME_ID>

Options:
  -g, --game-id <GAME_ID>  The ID of the game to show
  -h, --help               Print help

auto-complete

The cli client supports a feature called auto-complete. You can, for example, only enter the letter 'cq' and then enter tab. Then it will present the commands to choose from. The you can enter the first letter or letters of a command and press tob again and it will auto complete the command. This also works for options. just enter '--' and press tab. Just play a bit with it to get a feel for it. It is a great aid for fast and error free entry.

If auto-complete does not work for you, something went wrong during the installation. Reach out for troubleshooting.