2回目。
前回まで
10/11、http://ytyaru.hatenablog.com/entry/2017/10/11/000000
10/25、http://ytyaru.hatenablog.com/entry/2017/10/25/000000
前回、仮実装してみた。
python3 GitHubUploader.py account -u username -p password -m mailaddress -s ssh_public_key_file_path
今回
いろいろ考えると、前回のでは機能不足かもしれない。
実行形態について考えてみた
アップローダ起動。
python3 hub.py upload -u "GitHubUsername" -d "リポジトリ説明文" -l "http://リポジトリHomepage"
以下、アカウント関係。
- CUIによる対話で登録する
python3 hub.py account cui -u "GitHubUsername" -p "password" -m "mail@address.com"
- 対話なしで自動登録する
python3 hub.py account auto -u "GitHubUsername" -p "password" -m "mail@address.com"
- 一括処理
python3 hub.py account tsv "filepath.tsv"
- 編集
python3 hub.py account edit
サブコマンドがネストしてウザい。
アカウント操作機能を独立させる
アップローダと別にする。
ファイル名 | 略名 | 機能 |
---|---|---|
GitHubUploader.py | hup.py | GitHubにリポジトリをアップロードする。 |
GitHubAccountManager.py | ham.py | GitHubアカウントを管理する。 |
- CUIによる対話で登録する
python3 ham.py cui -u "GitHubUsername" -p "password" -m "mail@address.com"
- 対話なしで自動登録する(insert, delete, update)
python3 ham.py insert -u "GitHubUsername" -p "password" -m "mail@address.com"
- 一括処理
python3 ham.py tsv "filepath.tsv"
- CUI編集
python3 ham.py edit
編集はアカウントDBの閲覧や変更をするCUI。SQLite3を操作すればできることだが、CUI対話だけで簡単に修正できるようにしたい。
edit
,cui
,auto
などコマンドがわかりにくい。そもそも、アカウントを管理できるのはGitHubサイト管理者だけ。
アカウントの全体管理と1ユーザ単位操作を独立させる
ファイル名 | 略名 | 機能 |
---|---|---|
GitHubUploader.py | hup.py | GitHubにリポジトリをアップロードする。 |
GitHubUserRegister.py | hur.py | GitHubアカウントを登録する。 |
GitHubUserEditor.py | hue.py | GitHubアカウントDBを操作する。 |
GitHubUserRegister.py
サブコマンドありとなしの2パターンが考えられる。
サブコマンド | 説明 |
---|---|
なし | コマンド短縮できるが、意図しない動作になるかもしれない。 |
あり | コマンドどおりの動作になる。 |
「あり」を採用する。
サブコマンドなし
引数 | 説明 |
---|---|
なし | 新規登録。ユーザ名の入力から開始するCUI起動。 |
ユーザ名のみ | ユーザ名が既存なら削除。ないなら新規登録。 |
ユーザ名以外もある | ユーザ名が既存なら編集。ないなら新規登録。 |
python3 GitHubUserRegister.py
python3 GitHubUserRegister.py -u "GitHubUsername"
python3 GitHubUserRegister.py -u "GitHubUsername" -p "password" -m "mail@address.com"
-auto
フラグ引数があるときは、CUIでなく自動実行される。
python3 GitHubUserRegister.py -auto -u "GitHubUsername" -p "password" -m "mail@address.com"
-tsv
引数があるときは、CUIでなく自動実行される。1アカウントだけでなく、複数アカウントを一括処理できる。
-tsv
引数があるときは他の引数があっても無視してTSV一括挿入のみ実行される。
python3 GitHubUserRegister.py -tsv "accounts.tsv"
マージ方法をどうするか。
- まだないアカウントだけ新規挿入する
- 既存ユーザ名ならそのアカウントの他の値を変更する
- 既存ユーザ名とそれ以外の値が空値だったらそのアカウントを削除する
python3 GitHubUserRegister.py -tsv "accounts.tsv" -marge "insert,update,delete"
-method
または-marge
引数にてA,B,C任意の処理を組合せパターンで指定できる。デフォルトは-method "insert"
。既存ユーザ名のがあっても無視する。
既存アカウントをすべて削除し、完全にTSVの内容と一致させるdrop-create
も用意してもいいが、危険すぎる。
もっと複雑な更新パターンもあるが、難しそうなので却下。
- 既存ユーザ名ならそのアカウントの他の値を変更する(値が空値のときのみ。
update-null
) - 既存ユーザ名ならそのアカウントの他の値を変更する(指定アカウントの指定列の値が指定値のときのみ。)
サブコマンドあり
ヘルプが表示される。
python3 GitHubUserRegister.py
登録する。引数の分だけCUI入力を省ける。既存ユーザ名ならメッセージ通知して終了する。
python3 GitHubUserRegister.py insert -u "GitHubUsername" -p "password" -m "mail@address.com"
削除する。ユーザ名がなければ全ユーザ分削除する。危険なのでコマンドを作らないほうがいいかもしれない。
python3 GitHubUserRegister.py delete -u "GitHubUsername"
変更する。指定したユーザ名に紐づく各データを変更する。パスワード変更したときにDBも変更するときなどに使う。変更しない項目は引数不要。
python3 GitHubUserRegister.py update -u "GitHubUsername" -p "password" -m "mail@address.com"
-auto
フラグ引数があるときは、CUIでなく自動実行される。delete -auto
が危険すぎる。
python3 GitHubUserRegister.py [insert,delete,update] -auto -u "GitHubUsername" -p "password" -m "mail@address.com"
TSVファイルから一括登録する。
python3 GitHubUserRegister.py tsv "accounts.tsv"
python3 GitHubUserRegister.py tsv "accounts.tsv" -marge "insert,update,delete"
GitHubUserEditor.py
必要なのか疑問。GitHubUserRegister.py
で足りる。
- アカウント一覧表示
- 一覧から選択して編集、削除
ただのDB操作。GitHubAPIも使わないと思う。SQLite3でSQL操作すれば解決できることしかしない。
SQLどころかGitHubUserRegister.py
のupdate
,delete
コマンドさえも使いたくない人向け。
Username | Password | MailAddress | SSH-File-Path | 2FA-Secret | 2FA-Recovery-Code残数 | 2FA-Recovery-Code有効期限 |
---|---|---|---|---|---|---|
user1 | pass1 | mail1@addr.com | ~/.ssh/github_com_user1.pub | 16個1回限り | 1年間有効 | |
user2 | pass2 | mail2@addr.com | ~/.ssh/github_com_user2.pub | 16個1回限り | 1年間有効 | |
user3 | pass3 | mail3@addr.com | ~/.ssh/github_com_user3.pub | 16個1回限り | 1年間有効 |
アカウントごとに以下の操作をCUIでする。
- キー情報
余裕があればプロフィールも編集できるか調査。
所感
作り直し。