やってみる

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

GitHubアップローダに編集機能を実装した

CUI対話でリポジトリ名などを変更できるようにした。

成果物

GitHubGitHub.Upload.ByPython.EditRepo.201703101422

開発環境

前回まで

http://ytyaru.hatenablog.com/entry/2017/07/28/000000
http://ytyaru.hatenablog.com/entry/2017/07/29/000000

課題1

今回の編集機能をつかって説明文やHomepageを編集してしまうと、call.shの内容と整合性がとれなくなってしまう。

call.shのほかに、up.iniのファイルを作成する。

up.ini

[Repository]
username=ytyaru
description=説明文。
homepage=http://abc

編集後は、このiniファイルも編集する。

問題

しかし、余計なファイルIOを強いることになる。DBにデータが存在するのだから、DBデータを使って表示できればいいはず。

リポジトリを新規作成するときにCUI対話で入力させる案もある。

対策

  1. iniファイルとDBの連動
  2. DB取得+初回はCUI入力
  3. DB取得+初回はcall.sh取得
  4. DB取得+初回はcall.sh取得。call.shに説明文とHomepageがない初回時はCUI入力

AはファイルIOが生じてしまう。データ自体はDBにあるはずなのでiniファイル操作は無駄に思える。iniファイルとの整合性は犠牲にしてもいいのでは?

BならAの問題が解決する。ただ、初回アップロードするときにCUI入力の手間が生じる。それが面倒だからファイルに書く形式にしたのに。

Cが最善か。DBにまだ値がないときはcall.shの値を表示する。DBに値があるときはDB値を表示する。call.shの値は更新しないので整合性はとれない。call.shの引数は「初回のみCUI対話回避のための入力用データ」ということにして妥協するか。

DはBとCの合体版。もしcall.shに説明文とHomepageの引数がない状態で実行され、かつリポジトリ未作成のときは、CUI対話で入力させる。過剰な対応かもしれない。

課題2

ソースコードが散らかってきた。リファクタリングするか。

所感

思ったより面倒なことになってきた。