First steps

Listing issues

Let's start off by listing some issues - here for the curl project which is hosted on GitHub under curl/curl. To list issues for it one would run:

$ gcli -t github issues -o curl -r curl

You will see the list of the 30 most recent open issue tickets. The command above does the following:

Note that the -t github option goes before the issues subcommand because it is a global option for gcli that affects how all the following things like subcommands operate.

However, now I also want to see closed issues:

$ gcli -t github issues -o curl -r curl -a

The -a option will disregard the status of the issue.

Oh and the screen is a bit cluttered by all these tickets - let's only fetch the first 10 issues:

$ gcli -t github issues -o curl -r curl -n10

Searching for issues

Before reporting a bug or looking for solutions to a problem that you found in a program you may want to search for issues.

Let's search for avast in curl/curl:

$ gcli -t github issues -o curl -r curl -a avast
NUMBER  NOTES  STATE   TITLE
 11383      9  open    Issue with FileZilla server (GnuTLS) and close_notify
 10551      7  closed  Unable to use curl 7.87 for SSL connections on Windows 10 Pro
  8848      2  closed  CURL SSL certificate problem when AVAST HTTPS scanning enabled
$

As you can see searching for something is just a matter of appending keywords to the issues subcommand. You can specify any amount of search terms - they will all be used in the query. Again, -a ignores the status of the issue such that we also see closed tickets.

Examining issues

As of now we only produced lists of issues. However, we may also want to look at the details of an issue such as:

Let's get a good summary of issue #11268 in the curl project:

$ gcli -t github issues -o curl -r curl -i 11268 all

As you can see most of the options are the same, however now we tell gcli with the -i 11268 option that we want to work with a single issue. Then we tell gcli what actions to perform on the issue. Another important action is comments. Guess what it does:

$ gcli -t github issues -o curl -r curl -i 11268 comments

I know a person that likes to post long verbose traces. Let's search for an issue authored by them on the OpenSSL GitHub page:

$ gcli -t github issues -o openssl -r openssl -A blastwave -a
NUMBER  STATE   TITLE
 20379  open    test "80-test_ssl_new.t" fails on Solaris 10 SPARCv9
 10547  open    Strict C90 CFLAGS results in sha.h:91 ISO C90 does not support long long
  8048  closed  OPENSSL_strnlen SIGSEGV in o_str.c line 76
$

The -A option lets you filter for specific authors.

Let's look at the issue state of #10547:

$ gcli -t github issues -o openssl -r openssl -i 10547 status
     NAME : 10547
    TITLE : Strict C90 CFLAGS results in sha.h:91 ISO C90 does not support long long
  CREATED : 2019-12-01T04:35:23Z
   AUTHOR : blastwave
    STATE : open
 COMMENTS : 9
   LOCKED : no
   LABELS : triaged: bug
ASSIGNEES : none
$

That's nine comments - let's read the original post and the comments in our favourite pager less:

$ gcli -t github issues -o openssl -r openssl -i 10547 op comments | less

As you can see gcli will accept multiple actions for an issue and executes them sequentially.