【Gitlab】コマンドで簡単操作、labコマンドを使ってみた【大奮闘】
GitbashでGitlabをコマンド操作
labコマンドとは?
GitLabのCLIクラアントとして以下に紹介されています。
コマンドラインからGitlabへのissueのopen/close、マージリクエストやブラウザ遷移など。
Webブラウザ上の操作をコマンドで操作できちゃいます。
fzfなどのワンライナーツールと組み合わせると超効率が実現できそうです。
about.gitlab.com
今回使うのはこれ!
github.com
ただlabコマンドを使っている人が少ないのか情報がほとんどない。。
とりあえず↟のREADMEをみながら進めてみた。
環境はWindows10で、愛用のGitbashを使用していきます。
labコマンドのインストール
bashのインストール手順通りに進めますが、いきなり躓きます。
unrealman@DESKTOP-XXXXX MINGW64 ~ $ curl -s https://raw.githubusercontent.com/zaquestion/lab/master/install.sh | sudo bash bash: sudo: command not found (23) Failed writing body
Gitbashにはsudoコマンドがありません。
sudoを省きます。
unrealman@DESKTOP-XXXXX MINGW64 ~ $ curl -s https://raw.githubusercontent.com/zaquestion/lab/master/install.sh | bash OS not supported
「OS not supported」
OSがサポートされていないと出てきました。。
これ終わりじゃ、、と思いましたが諦めません。
WindowsのPowerShellからパッケージ管理ツール「Scoop」を使えばインストールする手順があります。
パッケージ管理「Scoop」をインストールする
PowerShellを開き以下のコマンドを実行します。
Set-ExecutionPolicy RemoteSigned -scope CurrentUser; iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
labコマンドをインストールする
PowerShellではなくGitbashを使いたいのです。
WSLでもよいのですが、WSLだとCLIからブラウジングができないのです(検証済み)。
(WSLからブラウザの制御が難しい模様、できなくはないのだろうが骨が折れそうです。。)
Gitbahを開き、以下のコマンドを実行します。
scoop bucket add zaquestion https://github.com/zaquestion/scoop-bucket.git scoop install lab
インストール完了!
labコマンドの実行
さっそく実行してみます。
$ lab Enter GitLab host (default: https://gitlab.com): Create a token here: https://gitlab.com/profile/personal_access_tokens Enter default GitLab token (scope: api): 2019/12/04 22:45:11 main.go:68: The handle is invalid.
はい失敗しました。
labコマンドを構成しているgo言語ファイルでエラーをはいています。
おそらくこれが原因じゃなかろうかと、minttyのwindowsラッパーのwinptyを付けてみます。
$ winpty lab Enter GitLab host (default: https://gitlab.com): Create a token here: https://gitlab.com/profile/personal_access_tokens Enter default GitLab token (scope: api):
いけました!
Gitlabでパーソナルアクセストークンを発行
labコマンドを入力し、Enterを押下するとトークンを作るURLが表示されるのでブラウザで開きます。
これ
Create a token here: https://gitlab.com/profile/personal_access_tokens
名前(トークンの名前)とScopes(有効範囲とアクセスレベル)を設定します。
今回は
Scopesはapi(完全な権限)
Expiers atは未入力(有効期限が無期限)とします。
入力したら、Create personal access tokenを押下します。
パーソナルアクセストークンが発行されました。
コマンド操作してみる
ちゃんと動いています。
以下はプロジェクトのリスト表示コマンド
$ lab project list leberwurscht/teardownwalls technomancy/leiningen jonan/heroes-of-wesnoth jonan/k hcs/hcs_utils soeren/sspssptest
cloneしたプロジェクトは以下で以下のコマンドを打つとブラウザ表示します。素晴らしいです。
$ lab project browse
しかし、うまくいったと思ったのも束の間。
issueもマージリクエストも作成できない
また、エラーです。viの実行可能ファイルがPATHにないと言っています。
$ lab issue create 2019/12/06 02:13:27 issue_create.go:55: /home/travis/gopath/src/github.com/zaquestion/lab/cmd/issue_create.go:54 exec: "vi": executable file not found in %PATH%
しかし、viはパス通っています。認識しています。
$ vi
念の為確認しますが、やっぱり通っています。
$ echo $PATH (省略):/usr/local/bin:/usr/bin:(省略)
ここにちゃんといます。
$ ll /usr/bin/vi -rwxr-xr-x 1 unrealman 197609 25 10月 21 21:40 /usr/bin/vi*
調べてもどこにも情報はなく、Githubのissueにもありませんでした。
(似たような人はいましたが放置状態)
ここ大事なとこなので諦められません。
まったく関係ないとこで何やら、.exeが付いているかついていないかで動きが違うという情報を取得。
理由は謎らしいので触れません。
https://stackoverflow.com/questions/54276583/getting-an-stdin-is-not-a-tty-error-when-using-python-json-tool-in-git-bash
viコマンドを表示してみると、なぜかviは.exeがついていない。
これはなぜなのか?
$ ll /usr/bin/vi* -rwxr-xr-x 1 daisuke 197609 25 10月 21 21:40 /usr/bin/vi* -rwxr-xr-x 1 daisuke 197609 2729207 11月 4 16:09 /usr/bin/view.exe* -rwxr-xr-x 1 daisuke 197609 2729207 11月 4 16:09 /usr/bin/vim.exe* -rwxr-xr-x 1 daisuke 197609 2729207 11月 4 16:09 /usr/bin/vimdiff.exe* -rwxr-xr-x 1 daisuke 197609 2121 11月 4 16:09 /usr/bin/vimtutor*
ひとまず、vi.exeを作成します。
※管理者権限必要なので、Gitbashを管理者として開いていなければ、右クリック-「管理者として実行」してください。
$ cp -p /usr/bin/vi /usr/bin/vi.exe
また、エラーです。。。
しかし、内容が変わった。着実に進んでいる証拠です。
$ lab issue create 2019/12/06 02:25:07 issue_create.go:55: /home/travis/gopath/src/github.com/zaquestion/lab/cmd/issue_create.go:54 fork/exec C:\Program Files\Git\usr\bin\vi.exe: This version of %1 is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.
「互換性がないからコンピューターのシステム情報を確認してから、ソフトウェアの発行元に連絡してください。」
と言われました。
ええ、なにか方法はないか、WSLを開きDebianのviを何気なく見てみたらヒントが。。!
unrealman@DESKTOP-XXXXX:~$ ll /usr/bin/vi lrwxrwxrwx 1 root root 20 Aug 3 17:40 /usr/bin/vi -> /etc/alternatives/vi unrealman@DESKTOP-XXXXX:~$ ll /etc/alternatives/vi lrwxrwxrwx 1 root root 17 Aug 3 17:40 /etc/alternatives/vi -> /usr/bin/vim.tiny
もしやとvi.exeでvim.exeへのシンボリックリンクを張ってみました。
$ ln -s /usr/bin/vim.exe /usr/bin/vi.exe
いけました!
$ lab issue create やっとwindowsからlabコマンドでissueが作れた。。。 # Write a message for this issue. The first block # of text is the title and the rest is the description. ~
画像はslackと連携させているので、そこに通知が来ています。
ゆっくり眠れそうです。