簡単なGraphSQLクエリを定義するbashスクリプトとgithub cliを使用してgithubリポジトリをバックアップする


私は、私がGithubでホストされるすべての倉庫をバックアップするために書いたbashスクリプトを共有したいです.スクリプトはGITHUB CLIを使用してGithub APIを簡単なGraphSQLクエリを使用します.

なぜこのスクリプト
スクリプトの目的は、あなたのワークステーション上の特定の所有者のすべてのリポジトリをGitHub(例えば、FacebookやGoogle、マイクロソフトなどのあなたの会社や他の会社)にホストしてバックアップすることです.スクリプトは、すべての所有者のリポジトリを(あなたもアクセスするために付与されている場合、それらの個人)をダウンロードします.

スクリプトを使用する前に
あなたはGitHubに有効なアカウントを持っていなければなりません、そして、あなたはdownloadになければならなくて、Github CLIをインストールしなければなりません(このCLIツールfollow this linkについてのさらなる情報が必要ならば).Github CLIのインストール後、次のコマンドを実行してインストールを確認できます.
animus@host:~$gh --version
以下のようなCLIのバージョンを見るべきです(最後のバージョンを書く時は1.4.0です)
gh version 1.4.0 (2020-12-15)
https://github.com/cli/cli/releases/latest
次のコマンドを実行するCLIを認証する必要があります.
animus@host:~$gh auth login
画面上の指示Github CLIであなたのgithub資格情報を使用するには(どちらかのブラウザまたは認証トークンを使用して認証することができます).

スクリプトの使い方
Downloadスクリプト.

フィルタなしでスクリプトを実行する
すべてのリポジトリとすべてのブランチをダウンロードする2つの必須パラメータの所有者とバックアップディレクトリを定義するスクリプトを実行します.
animus@host:~$repos.github.backup.sh -ow OWNER -dr DIRECTORY

このスクリプトをフィルタリングで実行する
カスタム正規表現のリポジトリ名を使用してフィルタリングを実行することができます.またはブランチ名(例えば、(' ( master ) Chuno ( main )?(開発))$)です.
animus@host:~$repos.github.backup.sh -ow OWNER -dr DIRECTORY -rr "VALID REGEX" -br "VALID REGEX" 

このスクリプトをヘルプモードで実行する
実行中のヘルプを表示します.
animus@host:~$repos.github.backup.sh --help
あなたは助けを得るでしょう
usage: repos.github.backup.sh -ow OWNER -dr DIRECTORY
Backup one or more repositories hosted on GitHub in a local directory.

Options:
-ow, --owner          Owner of repository
-dr, --directory      Backup Directory 
-rr, --reposRegex     Regular expression to match repositories names to backup (default any)
-br, --branchesRegex  Regular expression to match repositories branches to backup (default any)
-ps, --pageSize       Page size of api paging (default 10)
--help                Display this help and exit


使用例
Facebookが所有するリポジトリをダウンロードする
repos.github.backup.sh --owner facebook -dr . -rr "^react.*" -br "^((master)|(main)|(develop))$"
マイクロソフトが所有するすべてのvscodeリポジトリをダウンロードしてください
repos.github.backup.sh --owner microsoft -dr . -rr "^vscode..*" -br "^((master)|(main)|(develop))$"
すべてのDARTリポジトリをダウンロード
repos.github.backup.sh --owner google -dr . -rr "^dart..*" -br "^((master)|(main)|(develop))$"

Graphqlはどこですか?
GraphSQLは、スクリプトの中で以下のコマンドを実行します.
gh api graphql -F  owner=$owner -F pageSize=$pageSize -F afterCursor=$endCursor  -f query="$graphQlQuery"
クエリはパラメータ化されます.
query ($owner: String!, $pageSize: Int!, $afterCursor: String) {
  repositoryOwner(login: $owner) {
    repositories(first: $pageSize, after: $afterCursor) {                
      edges {
        node {
           name
        }        
      }
      pageInfo{
        hasNextPage
        endCursor
      }
    }
  }
}

このクエリーでは、スクリプトはすべてのリポジトリ名を尋ねます(ちょうどそのために、私たちはゴールに到達するためにより多くの何も必要としません).

結論
このスクリプトでは、GithubのAPIの有用性を見てきた、Github CLIの実用性、GraphSQLのシンプルさとbashの汎用性は、私たちはGifthub上にホストされているリポジトリのリストをバックアップするためのシンプルなソリューションを取得Theheterを置く.

興味のポイントと可能な進化
Github API生態系を調査する
  • .
  • は、GraphQL API Explorerに基づいてGithub APIとGraphqlでGraphiQLを使用して練習します.
  • GitHub CLI
  • のすべての可能なコマンドを調査する
  • 異なる複雑な方へ向けて進化するゴールを持つ情報を得るために、より複雑なgraphqlクエリを作成します.
  • スクリプトをよりユーザーフレンドリーな体験を向上させます.
  • あなたの好みの言語に基づいてGraphSQLクライアントを使用して、同じ目標に到達しようとします.
  • 提案と訂正は歓迎します.
    すぐにお会いしましょう!
    午前