Gemfury | gemfury gem で Gemfury のリポジトリをコマンドライン経由でサクサク操作する #gemfury

# Gemfury | gemfury gem で Gemfury のリポジトリをコマンドライン経由でサクサク操作する #gemfury
## 概要
Private な gem を管理できるクラウドパッケージリポジトリの Gemfury を支援する
CLI ツール [gemfury gem](https://github.com/gemfury/gemfury) について。

## インストール

~~~bash
$ gem install gemfury
~~~

## Commands
### help [COMMAND]

~~~bash
$ fury help
Commands:
  fury help [COMMAND]                   # Describe available commands or one ...
  fury list                             # List your packages
  fury logout                           # Remove Gemfury credentials
  fury migrate DIR                      # Upload all packages within a directory
  fury push FILE                        # Upload a new version of a package
  fury sharing                          # List collaborators
  fury sharing:add EMAIL                # Add a collaborator
  fury sharing:remove EMAIL             # Remove a collaborator
  fury versions NAME                    # List all the package versions
  fury whoami                           # Show current user
  fury yank NAME -v, --version=VERSION  # Delete a package version

Options:
  [--as=AS]  # Access an account other than your own

$ fury help list
Usage:
  fury list

Options:
  [--as=AS]  # Access an account other than your own

List your packages
~~~

### list
gem の一覧を取得

~~~bash
$ fury list
Please enter your Gemfury credentials.
Email: your_mail
Password: your_pass

*** GEMFURY PACKAGES ***

gottani (0.0.3)
ruboty-gemfury_test (0.0.1)
~~~

### logout
他の要ログインのコマンド実行後は、ログインしたままになるので
一度ログアウトしたい場合に利用。
（別ユーザーで処理したい、など。）

~~~bash
$ fury logout
Are you sure you want to log out? [yN] y
You have been logged out
~~~

### migrate
指定ディレクトリ配下の全ての gem を一斉にリリースする
aun gem と orenono gem を gemfury ディレクトリに clone して、
それを migrate してみます。

~~~bash
$ mkdir gemfury
$ cd gemfury
$ git clone https://github.com/tbpgr/aun.git
$ cd aun
$ rake build
$ cd ../
$ git clone https://github.com/tbpgr/orenono.git
$ cd orenono
$ rake build
$ cd ../
$ cd ../../
$ fury migrate gemfury/
Found the following packages:
  aun-0.0.2.gem
  orenono-0.0.3.gem
Upload these files to Gemfury? [yN] y
Uploading aun-0.0.2.gem - done
Uploading orenono-0.0.3.gem - done
~~~

アップード成功

![migrate.png](https://qiita-image-store.s3.amazonaws.com/0/43480/d48054a5-9275-a70e-449b-7f7b4970b0cb.png)

### push FILE

~~~bash
$ fury list

*** GEMFURY PACKAGES ***

gottani (0.0.3)
orenono (0.0.3)
ruboty-gemfury_test (0.0.1)

$ fury push ./pkg/aun-0.0.2.gem
Uploading aun-0.0.2.gem - done

$ fury list

*** GEMFURY PACKAGES ***

aun (0.0.2)
gottani (0.0.3)
orenono (0.0.3)
ruboty-gemfury_test (0.0.1)
~~~


### sharing
Collaborators のリストを返却する

~~~bash
$ fury sharing

*** Collaborators for "xxxx" ***
user1
user2
user3
user4
~~~

### sharing:remove EMAIL
任意の Collaborator を削除する

help では EMAIL になっているが、 USERNAME じゃないと動かない。（version 0.4.25）
しかし、GitHub の履歴を確認すると以前 USERNAME だったものを EMAIL に変えている。
help のコメントだけ先に変更したけど、処理は完成していないとうことだろうか？

[公式ドキュメント](http://devcenter.gemfury.com/articles/gemfury-cli.html#collaboration) は USERNAME のまま。
`fury help sharing:add` ・ `fury help sharing:remove` の表示だけが実際の動作と異なる。

**ヨクワカラナイ。**

~~~bash
$ fury sharing

*** Collaborators for "xxxx" ***
user1
user2
user3
user4

# ヘルプ通りに EMAIL を指定すると動かない・・・
$ fury sharing:remove user4@some_address
Oops! Doesn't look like this exists

# ヘルプを無視して USERNAME を指定したら動いた
$ fury sharing:remove user4
Removed user4 as a collaborator

# 削除されたことを確認
$ fury sharing

*** Collaborators for "xxxx" ***
user1
user2
user3
~~~

### sharing:add EMAIL
任意の Collaborator を追加する
※ `fury sharing:remove` と同様、 EMAIL ではなく USERNAME を利用しなければ動作しなかった

~~~bash
$ fury sharing

user1
user2
user3

$ fury sharing:add user4
Invited user4 as a collaborator

$ fury sharing

user1
user2
user3
user4
~~~

### version
version を表示

~~~bash
$ fury version
0.4.25
~~~

### versions [NAME]
NAME の gem のバージョンを一覧取得

~~~bash
$ fury versions gottani

*** Gottani Versions ***

0.0.3
0.0.2
~~~

### whoami
login 中のユーザー名を表示する

~~~
$ fury whoami
You are logged in as "user1"
~~~

### yank NAME -v, --version=VERSION
NAME の gem を gemfury から削除する。
version 指定も可能。

~~~
$ fury list

*** GEMFURY PACKAGES ***

aun (0.0.2)
gottani (0.0.3)
orenono (0.0.3)
ruboty-gemfury_test (0.0.1)
$ fury yank aun -v 0.0.2

*** Yanked aun-0.0.2 ***
$ fury list

*** GEMFURY PACKAGES ***

gottani (0.0.3)
orenono (0.0.3)
ruboty-gemfury_test (0.0.1)
~~~

## 補足
* gemfury gem は内部で thor を使っている模様

## 関連
* [Gemfury | クラウドパッケージリポジトリ Gemfury の登録、疎通確認まで #gemfury](http://qiita.com/tbpgr/items/7298faf1242370bde2ce)
* [gemfury](https://gemfury.com/)
* [gemfury gem RubyGems](http://rubygems.org/gems/gemfury)
* [gemfury gem GitHub](https://github.com/gemfury/gemfury)