やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubアップローダの初期処理について考えてみた

ざっくりとしたイメージ。

前回まで

http://ytyaru.hatenablog.com/entry/2017/09/29/000000

GitHubアップローダCUI対話でリポジトリをadd,commit,pushするツール。

全体像

  1. 準備
  2. 初期処理
  3. GitHubアップロード
  4. 新アカウント追加

1. 準備

2. 初期処理

初めて実行した時に行うこと。

  1. マスターDB生成
  2. 有効なアカウントを入力する(ユーザ名とパスワード)
  3. 必要なAccessTokenを自動作成する
  4. SSH鍵を生成し、鍵ファイル、~/.ssh/configファイル、GitHubSSH設定をする
  5. アカウントの全リポジトリ情報を取得する

対話イメージ

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は存在するはずだから無視される。

不足

やるべきことが山のようにある。

  • AccessTokenまわり全て
  • SSH鍵まわり全て
  • CUIまわり全て

もろもろ結合した既存コードのリファクタリングも終わっていない。

所感

整理できていないのに、追加したい欲求がわいてくる。大変そう。