すでに作ったUnityプロジェクトをGithubに追加するバッチを作ってみた

前書き

Unityでいろいろ試した後にGithubに追加したいけど、フォルダ名がリポジトリ名と被ってしまいリネームして中身を移動させてプッシュするのが手間でした。
なので、ドラッグ&ドロップしたらGithubリポジトリを作って、コミットまでしてくれるバッチファイルを作りました。
フォルダ名がリポジトリ名になります。

バッチファイルのサンプルはGithubにも上げています。



環境


Github CLIをインストールする

対応したOSのものをインストールします。
github.com


Github CLIをセットアップする

コマンドプロンプトgh auth loginと打ち、認証を行います。

どのアカウントでログインするか聞かれます。
Github.comGithub Enterpise Serverの選択肢があります。
今回はGithub.comを選びます。

次にGithubとやりとりをするプロトコルの選択肢が出ます。
今回はHTTPSを選びます。

Githubの認証情報でGitを認証するか聞かれます。
今回はYesを選びます。

どのように認証するか聞かれます。
今回はブラウザでしたいのでLogin with a web browserを選びます。

Enterを押すとブラウザにワンタイムパスを打ち込むページが表示するので、コマンドプロンプトに表示されているワンタイムパスを入力します。

入力したら認証画面が出るので、Authorize githubを押して、認証します。

コマンドプロンプトに戻るとAuthentication complete. Press Enter to continue...と表示されるので、Enterキーを押して終わらせます。

これで認証は終わりです。


バッチを作る

.batファイル作成し、以下のサンプルを張り付けて保存します。
サンプルではRider用に.gitignoreを追記してるので、注意してください。

:: 設定
set GITHUB_ID=eorfeorf
set REPO_TYPE=public
set IGNORE=Unity
set LICENSE=MIT
set DESCRIPTION=""
set ISSUES=false
set WIKI=false

::@echo off
setlocal
popd %~dp0

:: フォルダ名を取得.
:: なぜか末尾が消えるので\をつけ足してる.
set THIS_PATH=%1\
echo %THIS_PATH%
for %%1 in ("%THIS_PATH:~0,-1%") do set REPO_NAME=%%~nx1
echo %REPO_NAME%

:: ローカルを初期化.
pushd "./%REPO_NAME%"
git init -b main
popd

:: Githubのリポジトリを作成.
gh repo create %REPO_NAME% --%REPO_TYPE% -g="%IGNORE%" --license="%LICENSE%" -d=%DESCRIPTION% --enable-issues=%ISSUES% --enable-wiki=%WIKI% -y

:: リモートを追加.
set REPO_URL=https://github.com/%GITHUB_ID%/%REPO_NAME%.git

pushd "./%REPO_NAME%"

:: 生成されたファイルをローカルに.
git remote add origin %REPO_URL%
git pull origin main

:: Rider用に.gitignoreを修正.
echo # Rider>>.gitignore
echo .idea/>>.gitignore

:: 全部をプッシュ.
git add .
git commit -m "First commit"
git push -u origin HEAD:main

基本いじりたい設定を上に持ってきました。
GITHUB_ID

REPO_TYPE

  • リポジトリの公開範囲です。
  • publicとprivateがあります。

IGNORE

  • .gitignoreの種類です。

LICENSE

  • ライセンス設定です。

DESCRIPTION

  • リポジトリのDescriptionです。バッチの都合上、改行が入れられません。

ISSUES

  • issueを有効にするか指定。

WIKI

  • wikiを有効にするか指定。


使い方

リポジトリにしたいフォルダをこのバッチにドラッグ&ドロップします。
Unityの場合はプロジェクトのフォルダになります。


お願い

バッチで現在のフォルダ名を取得する際におまじないみたいなことをしているので、上手く解決できる方はご一報いただけると助かります。


最後に

欲しかった。