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.nameemail: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で同じことができるので実装する必要なし。