サイト用ファイルをGitHubにpush
できるツールになった。
ブツ
インストール&実行
NAME='Electron.MyLog.20220903102841'
git clone https://github.com/ytyaru/$NAME
cd $NAME
npm install
npm start
準備
- GitHubアカウントを作成する
repo
スコープ権限をもったアクセストークンを作成する- インストール&実行してアプリ終了する
db/setting.json
ファイルが自動作成される
db/setting.json
に以下をセットしファイル保存するusername
:任意のGitHubユーザ名email
:任意のGitHubメールアドレスtoken
:repo
スコープ権限を持ったトークンrepo
:任意リポジトリ名(mytestrepo
等)address
:任意モナコイン用アドレス(MEHCqJbgiNERCH3bRAtNSSD9uxPViEX1nu
等)
dst/mytestrepo/.git
が存在しないことを確認する(あればdst
ごと削除する)- GitHub上に同名リモートリポジトリが存在しないことを確認する(あれば削除する)
実行
npm start
で起動またはアプリでCtrl+Shift+Rキーを押す(リロードする)- テキストエリアに任意のテキストを入力する
つぶやく
ボタンを押すrepo/リポジトリ名
ディレクトリが作成され、その配下に.git
ディレクトリが作成される- createRepo実行後、リモートリポジトリが作成される
GitHub Pages デプロイ
アップロードされたファイルからサイトを作成する。
- アップロードしたユーザのリポジトリページにアクセスする(
https://github.com/ユーザ名/リポジトリ名
) - 設定ページにアクセスする(
https://github.com/ユーザ名/リポジトリ名/settings
) Pages
ページにアクセスする(https://github.com/ユーザ名/リポジトリ名/settings/pages
)Source
のコンボボックスがDeploy from a branch
になっていることを確認するBranch
をmaster
にし、ディレクトリを/(root)
にし、Saveボタンを押す- F5キーでリロードし、そのページに
https://ytyaru.github.io/リポジトリ名/
のリンクが表示されるまでくりかえす(数分かかる) https://ytyaru.github.io/リポジトリ名/
のリンクを参照する(デプロイ完了してないと404エラー)
すべて完了したリポジトリとそのサイトが以下。
投げモナボタンも表示されてる。よしよし。
今回やったこと
git.js
- git pushに必要なデータの
- 存在確認(非null判定のみ(GitHubのほうに存在するか判定する方法は不明))
- バリデーション(やらない。リポジトリ名の仕様などが明記されていない等の理由。問題あればGitHubAPIリクエスト時にHTTP4xxエラーになると思われる)
- git config --localで値セットするために
cd
した #post
ボタン押下時にgit push
する
git config --global
でやらないとエラーになると思っていたが、その理由は.git
のあるルートディレクトリにcd
していなかったせいだと気づいたので修正した。
バリデーションについてはちゃんとやろうとするとGitHubの仕様に合致するか確認せねばならない。けれどそれを公式により保障された手段がない。たとえばリポジトリ名の妥当性チェックAPIといったものはない。せいぜいcreateRepoのとき4xx
エラーとして返されるだけ。
やってない
例外時のテストをやりたいが未実施。そもそもネットワークAPIであるelectron-fetchが例外時にどう動くのかも把握していない。もしエンドユーザが不正なリポジトリ名をセットしたらどうなるのか。それを確認し、ユーザに問題箇所と原因と修正方法を示すようにしたい。
画面UIをワークフローにあわせた
つぶやく
ボタンでgit init
,git push
する- setting.jsonファイルの状態に応じてエラーダイアログを表示する
削除
ボタンでgit push
する
SQLite3まわりのバグ修正
window.myApi.insert
呼び出しのawait
忘れwindow.myApi.exportDb
呼び出しされずファイル保存されてなかったinsert
,delete
で呼び出す
const r = await window.myApi.insert({content:content, created:now});
ファイル保存されていなかったのは致命的だった。
HTML出力のバグ修正
site-maker.js
の#mpurseSendButtonCode()
で以下修正。
code = code.replace(/\'\.\/src\/asset\/image\/monacoin\/\'/g, `'./asset/image/monacoin/'`)
投げモナボタンが表示されなかったバグ修正。
所感
やっとつぶやきサイトのファイルをGitHubにpush
できるツールになった。長かった……。
ここまでは最低限必要な技術の調査・動作確認でしかない。
ここからはちゃんとしたアプリにするための作業になるかな? コードの見直し、リファクタリング、テスト、ドキュメント整備など。
本当は機能追加したいんだけど、そのための技術調査から必要で大変そう。気分次第で適当にやろうっと。