Bitbucket上で個人、あるいは組織で所有するリポジトリを一覧表示するためのシェルスクリプト
Bitbucket上で個人、あるいは組織で所有するリポジトリを一覧表示するためのシェルスクリプト
背景
仕事で自分の組織が所有するBitbucketのリポジトリを全て取得し、grep検索したい場合がありましたが、BitbucketのWebページの一覧性はよくありません。(特にページングされているので、全てを一覧表示できない。)
また、Vimで編集しやすいように、 コマンドラインから一覧表示するためのシェルスクリプト を作成しました。
検証環境
$ uname -a
Darwin NP178 18.2.0 Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64 x86_64 i386 MacBookPro11,4 Darwin
$ bash -version
GNU bash, バージョン 5.0.2(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 またはそれ以降 <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ zsh --version
zsh 5.6.2 (x86_64-apple-darwin17.7.0)
前提条件
- jqという、jsonデータを操作するためのツール
スクリプト
show-bitbucket-repositories.sh
#!/usr/bin/env bash
set -o errexit # エラーが発生した場合はシェルを終了
set -o nounset # 未定義の変数を利用禁止
opts='hu:p:o:'
usage() {
echo -n "${0}"
echo "${opts}" | sed 's/\([a-z]\)/ -\1/g' | sed 's/\-\([a-z]\):/-\1 \U\1\E/g'
exit 1
}
type jq >/dev/null 2>&1 || {
echo 'jqコマンドがありません。停止します。'
exit 101
}
while getopts ":${opts}" opt; do
case "${opt}" in
u)
BITBUCKET_USER=${OPTARG}
;;
p)
BITBUCKET_PASSWORD="${OPTARG}"
;;
o)
BITBUCKET_ORG="${OPTARG}"
;;
h | : | \?)
usage
exit 0
;;
esac
done
API_URL="https://api.bitbucket.org/2.0/repositories/${BITBUCKET_ORG:-${BITBUCKET_USER}}"
while [[ $API_URL != "null" ]]; do
tmp=$(mktemp)
curl \
--silent \
--user "$BITBUCKET_USER:$BITBUCKET_PASSWORD" "${API_URL}" >"${tmp}"
# API実行結果がページングされて返却されるため、次ページ情報が存在するかを確認(ない場合にはnullという値が取得される)
API_URL="$(cat "${tmp}" | jq -r .next)"
cat "${tmp}" | jq -r -c ".values[].links.clone[].href" | grep 'https://'
done
設置方法
- 環境変数
$PATH
が設定されているディレクトリにファイルを配置してください。- ex)
~/bin
- ex)
$ vi show-bitbucket-repositories.sh
$ chmod 700 show-bitbucket-repositories.sh
実行方法
-u
: ユーザID ( 必須 )-p
: パスワード ( 必須 )-o
: 組織情報 ( 任意:後述 )
# 個人のリポジトリ
$ ./show-bitbucket-repositories.sh -u genzouw -p password-dayo
# `-o` オプション付きで、組織で所有するものの一覧表示が可能
$ ./show-bitbucket-repositories.sh -u genzouw -p password-dayo -o my_organize
ちなみに
こちらのpythonのツールでも同じようなことはできます。
ディスカッション
コメント一覧
まだ、コメントがありません