setting.jsonに項目追加しデフォルト値をセットするようにした。
ブツ
インストール&実行
NAME='Electron.MyLog.20220905091742'
git clone https://github.com/ytyaru/$NAME
cd $NAME
npm install
npm start
準備
- GitHubアカウントを作成する
repo
スコープ権限をもったアクセストークンを作成するnpm start
でアプリ起動し終了する(db/setting.json
ファイルが自動作成される)db/setting.json
に以下をセットしファイル保存するaddress
:任意のモナコイン用アドレスusername
:任意のGitHubユーザ名(デフォルト値:git config --global user.name
)email
:任意のGitHubメールアドレス(デフォルト値:git config --global user.email
)token
:repo
スコープ権限を持ったトークンrepo.name
:任意リポジトリ名(デフォルト値:ルートディレクトリ名+.Site
)- 任意で以下もセットする
repo.description
: デフォルト値:著者のつぶやきサイトです。
repo.homepage
: (空なら自動でhttps://${username}.github.io/${repo.name}/
)
dst/mytestrepo/.git
が存在しないことを確認する(あればdst
ごと削除する)- GitHub上に同名リモートリポジトリが存在しないことを確認する(あれば削除するか別名にする)
実行
npm start
で起動またはアプリでCtrl+Shift+Rキーを押す(リロードする)db/setting.json
ファイルが作成される- 画面UIに
db/setting.json
の値が表示される
項目 | デフォルト値 | セットする時期 | 画面UI | 意味 |
---|---|---|---|---|
mona.address |
- | setting.json 生成時 |
⭕ | 暗号通貨モナコイン用アドレス |
github.username |
git config --global user.name |
setting.json 生成時 |
⭕ | GitHub |
github.email |
git config --global user.email |
setting.json 生成時 |
⭕ | GitHub |
github.token |
- | setting.json 生成時 |
⭕ | GitHub |
github.repo.name |
{{ルートディレクトリ名}}.Site |
setting.json 生成時 |
⭕ | GitHub |
github.repo.description |
著者のつぶやきサイトです。 |
setting.json 生成時 |
❌ | リポジトリ説明文 |
github.repo.homepage |
https://${username}.github.io/${repo.name}/ |
createRepo直前 | ❌ | リポジトリ関連URL |
github.repo.topics |
["website"] |
setting.json 生成時 |
❌ | リポジトリのトピックス |
今回はpush
をコメントアウトしてある。詳しくはsrc/js/renderer.js参照。
今回やったこと
setting.jsonまわりをリファクタリングし、デフォルト値をセットするようにした。
項目追加
前回までは以下のとおりだった。
{
"mona":{
"address":""
},
"github":{
"username":"",
"email":"",
"token":"",
"repo":""
}
}
それを以下のように追加した。
{
"mona":{
"address":""
},
"github":{
"username":"",
"email":"",
"token":"",
"repo":{
"name":"",
"description":"",
"homepage":"",
"topics":["", ""],
}
}
}
今回は以下の3項目を追加した。
- homepage
- description
- topics
デフォルト値を自動でセットするようにした
name
はデフォルト値を生成するようにした。ルートディレクトリ名+.Site
とする。description
- デフォルト値=
著者のつぶやきサイトです。
- README.mdにも同じテキストをセットする
- デフォルト値=
homepage
- 初回push時に空ならデフォルト値として
https://${username}.github.io/${repo.name}/
セットする - README.mdにも同じテキストをセットする
- 初回push時に空ならデフォルト値として
topics
はAPIの実装をしていない。値をセットしても反映されない。将来の拡張用に用意しただけで実装するかは未定
さらに次の項目を初回時デフォルト値として自動取得する。
username
:git config --global user.name
email
:git config --global user.email
以下は手動でセットすること。
token
: GitHubのsettingsページからアクセストークンを手動で作成し、その値をtoken
にセットすればgit push
できるaddress
: モナコイン用アドレスを作成し、address
にセットすれば投げモナボタンが表示される
新しいWebAPIは極力使わずに実装する方針
topics, updateRepo, deleteRepo, authorizationのような新しいWebAPIの使用が必要になりそうな部分を一切やらず、徹底的に避けた。どれもGitHubのページで同じことができるはずなので、実装する必要性が低いのが理由。代わりが効くのでそこに力を割きたくなかった。
topics
べつに必須項目ではない。リポジトリを探すときに使えるかもしれないというだけ。一応JSONデータに用意したがcreateRepoとは別のAPIを叩かねばならない。GitHubで同じことができるので実装する必要なしと判断した。
authorization
トークン生成はauthorizationを使えば自動化できそうにみえるが、現在はWeb Application flowとやらを経由せねばならないらしい。コマンドで自動化するこはできず、ユーザが手動で操作せねばならない。それならGitHubのsettingsページで作成するのと大差ない。よって各自で作成してもらうことにした。本当は自動化したかった……。昔はできたのに……。
createRepo, updateRepo, deleteRepo
description
, homepage
, topics
も画面UIが必要かと思った。しかし、それらはリモートリポジトリのメタデータであり、変更するときはGitHub API updateRepoを使う必要がありそう。面倒なのでそれを実装せず、初回createRepo時のみセットすることとする。もし画面UIとして表示してしまったら、いつでも変更できるかのように期待されそうなので画面UIも作らないようにした。
さらにいえばrepo.name
を変更すると、dst/
配下のディレクトリ名も変更しなおす必要がある。.git/config
の[remote "origin"]Url
のリポジトリ名部分も修正が必要。その後でgit
コマンドがちゃんと実行できるか未知数。
リポジトリ削除deleteRepoもできたら便利だと思う。でもそのためにはdelete_repo
スコープ権限をもつトークンが必要だし、新しいAPIを実行せねばならない。GitHubで同じことができるので実装する必要なし。