4.5 KiB
Gogs CLI
Accesses the Gogs Client API, which is currently available exclusively on Gogs' develop
branch.
Cobra & Viper go packages handle the hard work for the CLI interface.
Setup.
Clone the repo and build it yourself, or go get github.com/irstacks/go-gogs-cli
. Just make sure the gogs
executable winds up somewhere in your $PATH
.
Oh, but how do you build it?, you ask? What path? you ask?
Ok, fine. Here's what's up. From the beginning.
With the marvelous go get
...
$ go get github.com/irstacks/go-gogs-cli
$ cd $GOPATH/src/irstacks/go-gogs-cli
$ go get ./...
With the almost-as-marvelous git clone
...
$ cd where/i/like/to/put/funky/things
$ git clone https://github.com/irstacks/go-gogs-cli.git
# Pedantry explained immediately below...
$ go get stuff
$ go get morestuff
Now, I say almost-as-marvelous because if you use git clone
you may run into issues about your $GOPATH. It happens. Since I haven't figured out how to consistently go get
all the dependencies I need for a given Go project from esoteric locations outside my $GOPATH (in part because I have so many esoteric locations and don't want to haggle with forever adjusting/amending my $GOPATH extensioners), I usually just wind up running go run main.go
or go build -o gogs
and go get
ting the dependencies it complains about one-by-one. I know, it sucks. But that's just how I roll sometimes.
Finally, we can build the sucker.
$ go build -o gogs
Here we're using -o to tell go where to build the build it makes, in this case a file in the same directory we're with the name 'gogs' (because thats a lot shorter than go-gogs-cli). Note that whatever you name this file it what it will be accessible for you as on the CLI. So if you name it 'goo' (awesome.), then your commands will be all like: $ goo repo new ...
Now here you've got some options (probably) about in which of your $PATH's paths you want to stick it. I like to keep my custom thingeys out of the dredges, so I stick mine in $HOME/bin/
... If you follow in my footsteps, make sure somewhere in your bash/fish/zsh shell you've added $HOME/bin (NO SECOND SLASH, you slashing fiend you) to your $PATH, with something like export $PATH="$PATH:$HOME/bin"
.
$ cp gogs ~/bin/
This repo's build is for darwin (Mac).
You can build for linux with the nifty env GOOS=linux go build -o gogs
. You can probably build for Windows too but I don't trouble myself with such things.
Usage.
So far, you can do things. What's that? You can do things? Yep! Do things!
$ gogs repo create my-new-repo --desc 'awesome stuff' --private --org GophersGophering # optional flag [-n|--name] if you want to be very particular
$ gogs repo new my-new-repo # new is an alias for create, and you don't have to use any flags if you don't want to
$ gogs repo list # get all yo repos
$ gogs repo search waldo --limit 1 --user thatguy # yep, flags are still optional
$ gogs repo find waldo # another alias
$ gogs repo destroy irstacks my-exterminable-repo
$ gogs repo destroy irstacks/my-other-exterminable-repo
__Oh, you're hot shit and use n > 1 Gogs?__ _Sweet_.
You can override your api and token by flagging a config file with the `--config` flag (like such) ```bash $ gogs --config="$HOME/sneaky/place/.go-gogs-cli.yaml" repo create newjunk ```
or, override your api url and token individually on the fly with flags `--token` and `--url` for any command, like so: ```bash $ gogs --url=http://some.other.company --token=qo23ransdlfknaw3oijr2323rasldf repo search waldo ```
Config.
There's a file called .go-gogs-cli.yaml
which handles configuring your Gogs url and token, like such
token: 0e6709o05da4753dddf5f592374fdc263f02n801
api_url: http://my.goggers.me
Fill that in for your own self.
You may have noticed that we're pretty heavy on the gogs repo
and pretty light on the gogs somethingelse
side of things. The Gogs Client API makes a bunch of endpoints and methods accessible for Users, Organizations, Issues, Admins, and so forth (although it's still very much a work in progress). Myself, I mostly just want to be able to create, search, and destroy like a fiend. If you would ❤️ something and are unable to help yourself, let me know by opening an issue.
Help out.
👏 [chanting] Do it! Do it! Do it!