ざっくりとしたイメージ。
前回まで
http://ytyaru.hatenablog.com/entry/2017/09/29/000000
GitHubアップローダ。CUI対話でリポジトリをadd,commit,pushするツール。
全体像
- 準備
- 初期処理
- GitHubアップロード
- 新アカウント追加
1. 準備
2. 初期処理
初めて実行した時に行うこと。
- マスターDB生成
- 有効なアカウントを入力する(ユーザ名とパスワード)
- 必要なAccessTokenを自動作成する
- SSH鍵を生成し、鍵ファイル、~/.ssh/configファイル、GitHubSSH設定をする
- アカウントの全リポジトリ情報を取得する
対話イメージ
python3 GitHubUploader.py
マスターDBを作成します。 ... マスターDBを作成しました。 GitHubアカウントが1件もありません。作成してから以下に入力してください。 https://github.com/join?source=login GitHubユーザ名> user1 パスワード> pass1 メールアドレス> user1@mail.com (以下の処理で有効なアカウントか確認する) (以下のTokenがすでに存在するなら不要) このツールで必要なAccessTokenを作ります。よろしいですか?(yを入力しEnterキー押下で進む) リポジトリ操作: repo, public_repo, delete_repo SSH鍵操作: read:public_key, write:public_key, admin:public_key y/n> y 生成しました。 (エラー時は、ユーザ名とパスワードも表示する。) (エラーになったらアカウント登録しない。Token取得できたアカウントはDBに登録する) (SSHがすでに存在するなら不要) GitHubへPushするためにSSH公開鍵を作成します。 すでに公開鍵のファイルパスがあるなら以下に入力してください。 無いなら何も入力せずEnterキーを押下してください。 SSH公開鍵ファイルパス> * SSH鍵ファイル生成 * ~/.ssh/config生成 * 通信確認 アカウント[user1]の全リポジトリ情報を取得します。名前、作成日時、ライセンス、使用プログラミング言語とファイルサイズなど。 全件: nnn リポジトリ |----------------- | nn% 累計サイズ: nnnn Byte 1位 C++ nnn Byte 2位 C# nnn Byte 取得しました。 初期設定終了です。データは``にあるSQLite3ファイル内にあります。 `GitHub.Accounts.sqlite`ファイルにはパスワードなど秘密データが含まれます。 外部への公開などはしないよう取り扱いにご注意ください。 アカウント設定やアップロードの仕方はヘルプで見れます。 $ hup.py -h
3. GitHubアップロード
あとはGitHubのリポジトリにしたいディレクトリにcd
コマンドで移動し、以下のようなコマンドを実行する。
python3 GitHubUploader.py `pwd` -u username -d "リポジトリ説明。" -l http://abc
ディレクトリにスクリプトファイルを配置して実行するなら以下。
bash up.sh
up.sh
USER=GitHubユーザ名 DESC="リポジトリ説明文。" HOME=http://リポジトリの関連URL PATH_SCRIPT=/home/user/GitHubUploader/GitHubUploader.py PATH_DIR_PJ=$(cd $(dirname $0) && pwd) python3 ${PATH_SCRIPT} ${PATH_DIR_PJ} -u ${USER} -d "${DESC}" -l "${HOME}"
あとはCUI操作する。Commitメッセージとか入れたり。
4. 新アカウント追加
SQLite3でDBを操作すればいいだけなのだが、SQLでの操作が面倒くさい。
もうセキュリティ無視してアカウント操作用のCUIを作ってしまうか。
新しいアカウントを追加するときは、ユーザ名とパスワードを入力するだけで簡単に追加できるようにしたい。。
python3 GitHubUploader.py account -u new_user -p password
python3 GitHubUploader.py account "./add_accounts.tsv"
python3 GitHubUploader.py account 新しく追加するGitHubのアカウント情報を入力してください。 GitHubユーザ名> user1 パスワード> user1 (以下、Token作成、SSH設定、リポジトリ情報取得)
処理する内容は初期処理とおなじ。SSH鍵を作るとか。マスターDBは存在するはずだから無視される。
不足
やるべきことが山のようにある。
もろもろ結合した既存コードのリファクタリングも終わっていない。
所感
整理できていないのに、追加したい欲求がわいてくる。大変そう。