2016-07-27 17:58:17 +00:00
# Gogs CLI
2016-07-28 00:12:50 +00:00
Accesses the [Gogs Client API ](https://github.com/gogits/go-gogs-client ), which is currently available exclusively on [Gogs' `develop` branch ](https://github.com/gogits/gogs/tree/develop ).
2016-07-27 17:58:17 +00:00
2016-07-28 00:11:57 +00:00
> [Cobra](https://github.com/spf13/cobra) & [Viper](https://github.com/spf13/viper) go packages handle the hard work for the CLI interface.
2016-07-27 17:58:17 +00:00
2016-07-28 00:11:57 +00:00
## Setup.
2016-07-28 00:20:15 +00:00
```bash
2019-08-14 12:12:14 +00:00
go get git.adphi.net/adphi/gogs-cli/cmd/gogs
go install git.adphi.net/adphi/gogs-cli/cmd/gogs
2016-07-27 17:58:17 +00:00
```
2016-07-28 14:16:20 +00:00
2016-07-28 14:03:11 +00:00
## Config.
2016-07-29 15:12:55 +00:00
Once you've got the project, you'll need to configure your own `GOGS_TOKEN` and `GOGS_URL` variables.
2016-07-28 14:03:11 +00:00
< br >
2019-08-14 12:12:14 +00:00
You can use a file called `.gogs.yaml` that likes to live at `$HOME/.gogs.yaml` . It handles configuring your __Gogs url__ and __token__ , like such:
2016-07-28 14:03:11 +00:00
```yaml
GOGS_TOKEN: 0e6709o05da4753dddf5f592374fdc263f02n801
GOGS_URL: http://my.goggers.me
```
2016-07-29 15:12:55 +00:00
Make that file (there's an example in the repo) and fill that in for your own self.
2016-07-28 14:03:11 +00:00
< br >
< br >
2016-07-29 15:12:55 +00:00
__Or__, if you'd rather use environment variables, that'll work fine too.
2016-07-28 14:03:11 +00:00
```bash
export GOGS_TOKEN=asdlfj239r029fzsfasf923r23f
export GOGS_URL=http://my.goggers.me
```
2016-07-28 00:11:57 +00:00
## Usage.
2016-07-28 11:05:34 +00:00
So far, you can do things. What's that? You can _do things_ ? Yep! Do things!
2016-08-03 22:27:41 +00:00
```shell
2016-07-29 15:12:55 +00:00
# Create basic:
2016-07-28 13:24:51 +00:00
$ gogs repo create wheres-waldo # Create a repo owned by you.
2016-07-29 15:12:55 +00:00
# Create fancy:
$ gogs repo create Gophers/wheres-waldo --desc='awesome stuff' --private
2016-07-28 13:24:51 +00:00
$ gogs repo create where-waldo -r origin
2016-07-29 15:12:55 +00:00
# [Aliases] for create.
2016-07-28 13:24:51 +00:00
$ gogs repo [create|new|c|n]
2016-08-03 22:26:29 +00:00
# [Options] for create.
# [-d | --desc] # Description
# [-p | --private] # Make repo private
# [-r | --add-remote] # Add newly created gogs repo as a remote to your current git dir, initalizing git if necessary
2016-08-03 22:24:11 +00:00
```
2016-08-03 22:27:41 +00:00
```shell
2016-08-03 22:16:06 +00:00
# Migrate:
$ gogs repo migrate < myusername or my org ' s username > /mirror-mirror https://github.com/gogits/gogs.git
2016-08-03 22:24:11 +00:00
# [Aliases] for migrate
$ gogs repo [migrate|m]
2016-08-03 22:26:29 +00:00
# [Options] for migrate
# [-m | --mirror] # Make it a mirror of the original.
# [-p | --private] # Make it private.
2016-08-03 22:24:11 +00:00
```
2016-08-03 22:27:41 +00:00
```shell
2016-07-28 13:36:03 +00:00
# List basic:
2016-07-28 13:24:51 +00:00
$ gogs repo list # Get all yo repos.
2016-08-03 22:24:11 +00:00
# [Aliases]
$ gogs repo [list|l]
```
2016-08-03 22:27:41 +00:00
```shell
2016-07-28 13:36:03 +00:00
# Search basic:
$ gogs repo search waldo # Search public repos for keyword 'waldo'.
# Search fancy:
$ gogs repo search waldo --limit 1 --user thatguy
2016-07-28 13:24:51 +00:00
# [Aliases] for search.
$ gogs repo [search|find|s|f]
2016-08-03 22:26:29 +00:00
# [Options] for search.
# [-l | --limit] # Limit results
# [-u | --user] # By user, required if you want to search private repos
2016-08-03 22:24:11 +00:00
```
2016-08-03 22:27:41 +00:00
```shell
2016-07-29 15:12:55 +00:00
# Destroy basic:
2016-07-28 00:11:57 +00:00
$ gogs repo destroy irstacks my-exterminable-repo
$ gogs repo destroy irstacks/my-other-exterminable-repo
2016-07-28 13:24:51 +00:00
# [Aliases] for destroy.
$ gogs repo [destroy|delete|d|rid]
2016-08-03 22:24:11 +00:00
```
2016-08-03 22:27:41 +00:00
```shell
2016-07-28 13:36:03 +00:00
# Help?!
# Add --help after any command to see what's up, ie.
$ gogs --help
$ gogs repo --help
$ gogs repo create --help
# and so on...
2016-07-28 00:11:57 +00:00
```
2016-07-28 11:05:34 +00:00
< br >
< br >
__Oh, you're hot shit and use n > 1 Gogs?__ _Sweet_ .
2016-07-29 15:12:55 +00:00
< br >
2016-07-28 11:05:34 +00:00
You can override your api and token by flagging a config file with the `--config` flag (like such)
```bash
2019-08-14 12:12:14 +00:00
$ gogs --config="$HOME/sneaky/place/.gogs.yaml" repo create newjunk
2016-07-28 11:05:34 +00:00
```
< br >
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
```
2016-07-28 00:11:57 +00:00
2016-07-28 11:05:34 +00:00
< br >
< br >
2016-07-29 15:12:55 +00:00
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 ](https://github.com/gogits/go-gogs-client ) 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 :heart: something and are unable to help yourself, let me know by opening an issue.