1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

azコマンドで今作業しているAzure DevOpsのReposをブラウザでシュッと開く

Posted at

ターミナルでCLIを使って複数のリポジトリを操作することを普段から行なっています。

対象のリポジトリがGitHubの場合は gh browse でシュッとCLIからブラウザへ切り替えて対象リポジトリを操作することができますが、Azure DevOpsでもそれをちょっとした工夫でできるようにしました。

課題

Azure DevOpsのReposをターミナルのCLIからブラウザでシュッと開きたい。

前提(環境)

以下の環境で行なっています。

  • MacOS: Sonoma 14.4
  • awk: 20200816
  • zsh: 5.9
  • azure-cliは以下
{
  "azure-cli": "2.58.0",
  "azure-cli-core": "2.58.0",
  "azure-cli-telemetry": "1.1.0",
  "extensions": {
    "account": "0.2.5",
    "azure-devops": "1.0.0"
  }
}

対策

以下のようなローカルコマンドを用意する。(2024年にオライリーから本が出ると話題awkを使用しています)

#!/bin/zsh

git config --get remote.origin.url | awk -F/ '{cmd="az repos show --open --org=https://dev.azure.com/"$5 " --project="$6 " --repository="$7}END{print cmd;system(cmd)}'

上記をPATHの通った ~/bin/ などへ適当な名前で配置しておくことで、簡単にターミナルで操作中のAzure DevOps Reposのリポジトリをブラウザから開けるようになりました!

私の場合は以下のようにローカルのコマンドを用意しています。azroは"AZure Repos Open"の略です。

$ vim ~/bin/azro
-> 上記のコマンドを貼り付け
$ chmod +x ~/bin/azro
-> 権限付与
$ azro
-> 動作確認、ブラウザ起動!

解説

簡単にコマンド解説です。

azコマンドにはもともと az repos show --open でブラウザを開く機能が用意されています。

--open : Open the repository page in your web browser.

$ az repos show --help
This command is from the following extension: azure-devops

Command
    az repos show : Get the details of a Git repository.

Arguments
    --repository -r [Required] : Name or ID of the repository.
    --detect                   : Automatically detect organization.  Allowed values: false, true.
    --open                     : Open the repository page in your web browser.
    --org --organization       : Azure DevOps organization URL. You can configure the default
                                 organization using az devops configure -d organization=ORG_URL.
                                 Required if not configured as default or picked up via git config.
                                 Example: https://dev.azure.com/MyOrganizationName/.
    --project -p               : Name or ID of the project. You can configure the default project
                                 using az devops configure -d project=NAME_OR_ID. Required if not
                                 configured as default or picked up via git config.

az repos showコマンドに対しては以下の3パラメータを渡します。

  • --org
  • --project
  • --repository

az repos showコマンドの必須パラメタは--repositoryのみで、--project--orgはgit configureまたはdevops configureから取得するとhelpに記述がありますが、省略したところエラー

Page not found. Operation returned a 404 status code.

となったため敢えて指定しています。(これは私の環境が良く無いだけかもしれません...)

参考としてdevops configureは以下の様に設定します。

az devops configure --defaults organization=https://dev.azure.com/MyOrganization project=MyProject

3つのパラメタに必要な情報を git config --get remote.origin.url から awk で刻んで取得しています。

具体的にgit config --get remote.origin.urlからは

ssh//git@ssh.dev.azure.com/v3/MyOrganization/Project/Repository

のような結果がリターンされます。

これをawkを利用し -F/ で'/'を区切り文字として指定し、文字列az repos showも整形しつつsystemでコマンドを実行しました。

awk -F/ '{
  # 変数cmdにコマンドを組み立てる
  cmd="az repos show --open --org=https://dev.azure.com/"$5 " --project="$6 " --repository="$7
  }
  END{
    # 実行されるコマンドを一応printで表示
    print cmd;
    # 組み立てたコマンドを実行
    system(cmd)
}'

謝辞

上記は @raki からいただいた私のPostに対する以下の返信を参考に実現できました。サンキュー!!

その他

今回は簡単なローカルコマンドで実現しました。
一方 @raki の返信でコメントもありましたが、以下のFeature Requestが実装されればaz repos showのオプションで簡単に開ける様になるかもしれません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?