やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubのリモートリポジトリをバッチファイルで作成したい

バッチファイルをダブルクリックすると、リモートリポジトリを作成する。

入手先

GitHub Yahoo

  • MEGAがまたしても使えない。何度目か

前回

前回はコンソール上で実行した。

今回はバッチファイル&シェルスクリプトにした。

コード

CreateRepository.sh

文字コード 改行コード
UTF-8(BOM無) CR+LF
#!/bin/sh

echo "-----------------------------------------" | nkf -s
echo "GitHubにリモート・リポジトリを作成します。" | nkf -s
echo "-----------------------------------------" | nkf -s

CURL_PEM="C:\Program Files\Git\ssl\certs\cacert.pem"
GITHUB_USER="YourUsername"
GITHUB_PASS="YourPassword"
REPO_DESC="日本語の説明です。"
REPO_HOME="https://www.google.co.jp"

# このファイルの親ディレクトリ名をリポジトリ名とする
REPO_NAME=`dirname "$0"`
REPO_NAME=`basename ${REPO_NAME}`

echo "curl --cacert : ${CURL_PEM}" | nkf -s
echo "GitHub Username : ${GITHUB_USER}" | nkf -s
echo "GitHub Password : ${GITHUB_PASS}" | nkf -s
echo "GitHub Repository name : ${REPO_NAME}" | nkf -s
echo "GitHub Repository description : ${REPO_DESC}" | nkf -s
echo "GitHub Repository homepage : ${REPO_HOME}" | nkf -s

echo '{"name":"'${REPO_NAME}'","description":"'${REPO_DESC}'","homepage":"'${REPO_HOME}'"}' | nkf -w | curl --cacert "${CURL_PEM}" -u "${GITHUB_USER}:${GITHUB_PASS}" https://api.github.com/user/repos -d @- | nkf -s

echo "-----------------------------------------" | nkf -s
echo "完了しました。" | nkf -s
# echo "Enterキーを入力してください。" | nkf -s
echo "-----------------------------------------" | nkf -s
# read Wait

CallShell.bat

文字コード 改行コード
CP932(Shift-JIS) CR+LF
@echo off
set sh="C:\MinGW_GET\msys\1.0\bin\sh.exe"

:: スクリプトのフルパス。
:: * 絶対パス(相対パスを渡してもcmd.exeとsh.exeのカレントディレクトリが異なるため動作しない)
:: * 英数記号のみ(日本語を含むパスは使えない)
set ShellFileName="CreateRepository.sh"
set ShellFile="%~dp0%ShellFileName%"

:: パスの\を/に置換する。
set ShellFileUnix=%ShellFile:\=/%
echo %ShellFileUnix%

:: シェルスクリプトを実行する
call %sh% --login -i -c %ShellFileUnix%

pause
@echo on

使い方

  1. プロジェクトのルートディレクトリを作成する
  2. プロジェクトのルートディレクトリに上記CallShell.bat,CreateRepository.shファイルを配置する
  3. CreateRepository.shの変数を任意に設定する
  4. CallShell.batをダブルクリックする
  5. GitHubサイトにてリモート・リポジトリが作成されていることを確認する

ディレクトリ構成

  • ProjectDir/
    • CallShell.bat
    • CreateRepository.sh

手順

  1. CallShell.batをダブルクリックする
  2. リモートリポジトリProjectDirが作成される

CreateRepository.sh

以下のパラメータを任意のものに変更する。

リポジトリ名について

リモートリポジトリ名はCreateRepository.shファイルの親ディレクトリ名とおなじ名前になる。

ディレクトリ名は半角英数字と.,-,_の文字だけにすること。 リモートリポジトリがその文字しか使えないため。

たとえば+の記号はリモートリポジトリ名に使えない。 GitHubのサイトからリポジトリ名を入力するとき、+など使えない文字を入力すると-に置換された。 おそらく使えない文字は自動的に-に置換されるのだろう。 WebAPIで実行するとどうなるのかは未確認。

また、リモートリポジトリ名は大文字と小文字が区別されるのかどうかは知らない。 Windowsファイルシステムでは区別しない。

使用できる文字

種類
半角英数字 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
記号 _-.

ちなみに、先頭が3など数字でもOK。 C言語の変数名のように先頭文字に数字が使えないということはない。

使用できない文字

使用できる文字以外はすべて使用できない。

以下のような文字は使えない。

種類
記号 !"#$%&'()=~|@{}[];+:*,<>/?\ `
空白 (半角スペース)
制御コード \t(タブ), \r\n(改行コード)
全角文字 (ひらがな、カタカナ、漢字、数字、英字、記号)
他すべて

所感

自動化はすばらしい。これで仕事がひとつ減らせる。アウトプットが捗る。