へんてこのブログ

日々気づいたことや、最近やっていることを書いています

golangでdgate-inviteというの作った #deploygate

概要

golangでdgate-inviteっていうコマンド作った
henteko/dgate-invite · GitHub

golangを書くことを目的に作った
少しは勉強になった気がする

dgate-invite

dgate-inviteとは、DeployGateAPIである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

f:id:henteko07:20140720143015g:plain

あとは社員のメンバーリストを用意してそこからインタラクティブに選択しながらinviteするみたいなことも出来る

$ cat user_list.txt | peco | xargs dgate-invite -i -p com.henteko07.assisthack

f:id:henteko07:20140720143529g:plain

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してからの反応が糞早くてめちゃくちゃいい
使いやすいし

最後に

golangむずかしい
お使いください

AncoっていうAndroidのライブラリをまとめておくproxy的なのを作ってる

http://24.media.tumblr.com/9018dd5b426a8de052efacbbccce591b/tumblr_mgi37eCKwu1s0rgcwo1_1280.png

henteko/anco · GitHub

Anco

半月前?位からAncoっていうAndroidライブラリーをまとめて置いておいて、Proxyみたいな感じでgradleからアクセス出来る物を作ってた

このAncoに登録されてあるライブラリならこんな感じでurl一個だけで済むみたいな世界観

maven {
  url 'https://anco.herokuapp.com/repository'
}

(ちなみにまだ登録されてるライブラリありません)

なんで作ってるのか

大体こんな感じ
Androidのライブラリを簡単に公開出来る場が欲しい - hentekoのdev日記
ライブラリを上げる場所はみんな大好きgithubでいいよねみたいな感じで、その場合build.gradleに書くurlがいっぱいになるなー嫌だなーみたいな感じだったので、このような感じにした
本当は検索機能とか付けたいんだけど、まだ全然出来てない感じ

需要ないのかあるのか分からないけど、こういった感じの作ったことなかったので勉強がてら作ってみたみたいな感じです

最後に

もし使ってみたいって方がいたらリポジトリをcloneして登録するライブラリを./tool/registerとかで登録してプルリクください
登録以外のプルリクでもいいです

gfxさんが作ってるの気になる: android-frontier/tiny-maven-repository · GitHub

gradle-xcodePluginにプルリクした

openbakery/gradle-xcodePlugin · GitHubにプルリクした!
Support for DeployGate by henteko · Pull Request #63 · openbakery/gradle-xcodePlugin · GitHub

何したのか

Support for DeployGate!!!
gradle-xcodePluginだけでdeploygateにアップロード出来るようにした
便利
使い方とかは以下を見れば分かりそう
iPhoneアプリをGradleでビルドしてDeployGateで自動配布する方法の続き - Qiita

ハッカソン

http://www.lovelive-anime.jp/img/top/keyv5a.png
(http://www.lovelive-anime.jp/から引用)

この前の土曜日に、同期で集まってハッカソンするみたな感じのことをやっていたのだけど、そこでやること無かったからgradle-xcodePluginにDeployGate対応をした
そのハッカソン自体はラブライブ見ながら全員違うことやりながらモクモクするみたいな感じで、とにかくラブライブ最高だった

github上でのLGTMを高速に行うChrome拡張

LGTM.in便利

LGTM.inが最近(?)流行っているようですね
githubのissueとかのコメントにLGTMの画像を貼る行為楽しいですもんね、コミュニケーションとして

僕もこのLGTM.inを使ってgithubに画像をコメントしたりしているんですが、大概ここを開いてランダムに出てきたmarkdownをコピペしてコメントしてます
時々選んだりしますが
これって自動化出来そう!とお風呂入っていて思ったのでChrome拡張で作成しました

LGTMを高速に行うChrome拡張

henteko/accelerate-lgtm · GitHub
githubで公開してます!
使い方は簡単!

  • リポジトリをclone
  • Chromechrome://extensions/を開く
  • "パッケージ化されていない拡張を読み込む"でcloneしたリポジトリを選択
  • 後はissueのページやプルリク画面を開いてClose横のLGTMボタンを押すだけ

こんな感じになります

f:id:henteko07:20140222012156p:plain

f:id:henteko07:20140222012202p:plain

あとはコメントボタンを押すだけですね!簡単!

おわりに

1時間くらいで作ったので雑です
githubとLGTM.inのhtml変わったら動作しません

追記

ぐぐったら普通に便利そうなのあった
こっちの方が画像選べるしいいかもしれない
LGTMでめでたさを伝えるChrome拡張をつくった - Thinking-megane