過去に作ったgoのコードを書き直して、hatenaのアップローダーにprofileオプションを追加したりした

過去に作ったgoのコードを書き直して、hatenaのアップローダーにprofileオプションを追加したりした。

過去に作ったgoのコードというのは以下の2つのこと。

selfishの方はgistへのアップローダー。goの勉強を初めた当初に習作として作ったもの。習作としてつくったものの一番日常的に使われているコマンドのような気がする。hatenaの方はhatenaへのアップローダー。どちらも概ね同じ仕組みで設定などを管理しているのだけれど。それぞれのコードが独立していた。なんとなくだるかったので共通で扱う感じのライブラリを作ってそれに依存させることにした。

新しく作ったライブラリは以下のもの。

内部的な機能は今の所以下の2つ。

  • 良い感じのconfigのload/save
  • 操作のcreate,updateを良い感じに扱う機能

良い感じのconfigのload/save

defaultで ~/.config/<name>/config.json に設定ファイルを期待するようなコード。元々は ~/.<name>/config.json を見る感じだったけれど。 ~/.config 以下に置くほうが今風かも?ということで変えた。

ついでにprofileに対応することでhatenaのアップローダーが -profile オプションに対応することができた。なので他のブログにも手軽にアップロードできるようになった(今までは設定を1つしか持てなかった)。

ちなみに -profile foo などprofileオプションを追加して実行すると ~/<name>/foo.config.json などを見るようになる。

# defaultのprofileでupload (~/.config/hatnea/config.jsonを見る)
$ hatena my-article.md

# sandboxのprofileでupload (~/.config/hatnea/sandbox.config.jsonを見る)
$ hatena -profile sandbox my-article.md

操作のcreate,updateを良い感じに扱う機能

操作のcreate,updateを良い感じに扱う機能というのは以下のようなもの。

  • aliasが指定されていた場合には、update
  • aliasが無い場合あるいは未知のaliasは、create
  • aliasの指定が無い場合には head というaliasで操作が記録される。

なので例えばhatenaのアップローダーで一度投稿した記事を以下のようにして追記を繰り返せる。

$ hatena my-article.md # create
$ hatena -alias head my-article.md # update
$ hatena -alias head my-article.md # update