概要
golangでdgate-inviteっていうコマンド作った
henteko/dgate-invite · GitHub
golangを書くことを目的に作った
少しは勉強になった気がする
dgate-invite
dgate-inviteとは、DeployGateのAPIであるInvite APIを叩くコマンドです
もともとこのInvite APIには、GET,POST,DELETEで各々各アプリのメンバーを取得出来たり追加出来たり削除出来たりするのだけど、それをコマンドで出来るようにしてる
使い方
こんな感じで使える
package名とかuser名は各々のに置き換えてもらいたい
# GET $ dgate-invite -g -p com.henteko07.assisthack # POST $ dgate-invite -i -p com.henteko07.assisthack henteko2 # DELETE $ dgate-invite -d -p com.henteko07.assisthack henteko2
実際に使ってみる
最近流行のpecoを使えばインタラクティブにメンバー一覧から探してメンバーから削除なんてことも出来る
$ dgate-invite -g -p com.henteko07.assisthack | peco | xargs dgate-invite -d -p com.henteko07.assisthack
あとは社員のメンバーリストを用意してそこからインタラクティブに選択しながらinviteするみたいなことも出来る
$ cat user_list.txt | peco | xargs dgate-invite -i -p com.henteko07.assisthack
peco便利や…
このgifとかはttygifとttyrec使いました、便利
ログインとか
ログインには、公式のdgateが参照しているローカルの設定ファイルを見てる
なので、dgateコマンドを既に使ってる人は特別なログイン処理とか要らない
ログインとかしたかったらこんな感じで出来る
# ログイン $ dgate-invite -login # nameとかtoken聞かれる # ログアウト $ dgate-invite -logout
実装
実装は、適当な感じにやった
httpのライブラリとか、標準のnt/httpパッケージを使おうとしたけど、とりあえずmreiferson/go-httpclient · GitHubとかを使った
標準のでも良かった気がする
最初はddliu/go-httpclient · GitHubを使ってたけど、DELETEとかに対応してなかったので、自分で書いた
https://github.com/henteko/dgate-invite/blob/master/dgate/simplehttpclient.go
fileのpostも書いたけど、使ってなくて完全にミスった
多分壊れてる
あとはjmoiron/jsonq · GitHubを使ったりしたけど、これも標準のでいいかもなーとか思ってる
コマンドの入力のパースには標準のflagパッケージ使ってて、golangは大体標準でいいのかもしれないって気持ちになった
package分離
最初はGO_PATHとかよくわからなかったけど、自分で設定してるGO_PATHに移動してその中のsrc/github.com/hentekoとかいうところにdgate-inviteとか置いて、その中にpackage dgate作りたかったらdgate-invite/dgateって掘ってその中に.goファイルを入れれば、mainではimport github.com/henteko/dgate-invite/dgate で参照出来て便利だった
これはいい
public methodは先頭大文字ってのもわかりやすいなぁ
CI
CIにはhttps://drone.ioを使ってる
使ってるけど、まだテストとか書いてないのでクロスコンパイル用に回してる
drone、travisとかに比べるとgithubにpushしてからの反応が糞早くてめちゃくちゃいい
使いやすいし