Github issues

While working with repositories on github.com we all need to raise issues, edit them, search through issues & so on.

To make life easier, I wrote a small utility “gitissue” that you can invoke from command line itself. You can create, delete, edit & search issues for a particular repository on github.com.

source code: https://github.com/cdsingh1001/gitissue

github.com provides good API support for the developers/ Read about the API support here.

My only issue (so far) with the API provided by Github is that the search API has pretty low rate limit. This limits, the searching/listing issues from a repository with large number of issues.

Go Flags – Part 2

In my earlier posts – Go subcommands and flags – I talked about defining Go flags & how to implement subcommands in Go & define flags for those subcommands.

In this post, let’s take it a step further & understand how to define flags based on any type – and not just int or string or bool. We can define user flags based on any complex type. Go’s flag package defines/exposes interface to do just that. package flag has an interface flag.Value

 

In the previous post, we created an example of an imaginative tool – netflix – and defined 2 subcommands – create & delete with flags like name of the movie, year it was released and so on.

Let’s now define a new flag – movie, that is a an aggregate type – of the format –

<Name>:<Year>:<Stars>:<Recommend>:<Duration>

 

Code:

Output:

Notes:
Basically the movieFlag type satisfied the interface flag.Value by defining 2 methods – String & Set. And then using the function flag.CommandLine.Var, it initialized a flag variable of the type movieFlag.

Golang subcommands and flags

 

Golang (Go) offers a quick way for your program to accept user flags. You can build a command line interface by using golang’s inbuilt flag package. Using the default options, you can have a few flags up & running with a few lines of code. Here’s an example:

Output:

 

But, what if you want to have sub commands. I ran into this problem while building a tool myself. I needed a bunch of sub commands & then each of the sub command can have different flag options. Here’s what I ended up doing:


We can even go a step further & define your flags as custom types (& not just inbuilt int, string or bool).

I will talk about that in the next post.