spiegel-im-spiegel/ml v0.3.0 をリリースした
…ついカッとなってやった。 反省はしない…
みなさま,あけましておめでとうございます。 本年も「書きたくないときには書かない」「他人の評価など気にしない」をモットーに,ゆるゆるとやっていく所存です。
という記事を眺めてて
と思いついてしまい,(たぶん私しか使ってないであろう)Markdown 形式のリンクを生成するツールに手を入れることにした。 その結果を v0.3.0 としてリリースしている。
今回の変更は以下の3つ。
- リポジトリ名を
mklink
からml
に変更する - spiegel-im-spiegel/ml リポジトリ直下に
main.go
を移動し,コマンドライン・ツールとして構成し直す - 対話モードでの入力を nyaosorg/go-readline-ny パッケージで書き直す
最初のはメインマシンを Ubuntu に換装した関係で先延ばしにしていたやつ。
Windows の内部コマンドに mklink
てのがあって(シンボリックリンク操作のコマンド),それと名前が被ってたのだ。
実際には GitHub のリポジトリ設定から簡単にリネームできた(簡単ならとっととやれってば)。
旧 URL からのリダイレクトもやってくれている。
感謝。
2番めは,近年私がよくやる変更。 昔は「Go コード用の外部パッケージとして書いて,その実装例としてコマンドラインツールも書く」というスタンスで構成していたが,機能がニッチ過ぎて汎用で再利用しづらいため「じゃあ最初からコマンドラインツールとして構成すればいいぢゃん」と考えを改めた。
一応
package main
import (
"context"
"fmt"
"io"
"os"
"github.com/spiegel-im-spiegel/ml/makelink"
)
func main() {
lnk, err := makelink.New(context.Background(), "https://git.io/vFR5M")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
_, _ = io.Copy(os.Stdout, lnk.Encode(makelink.StyleMarkdown))
// Output:
// [GitHub - spiegel-im-spiegel/ml: Make Link with Markdown Format](https://github.com/spiegel-im-spiegel/ml)
}
のように Go のコードに組み込むことも可能。
3番目の nyaosorg/go-readline-ny パッケージの組み込みはマジでやってよかった。 ざっと見た感じ,このパッケージの特徴は以下の通り。
- エコーバック(?)の
Writer
を指定できる - 簡易ヒストリ機能を付けられる
Ctrl+C
およびCtrl+D
を正しく拾ってエラー(readline.CtrlC
およびio.EOF
)として返してくれる(上位レイヤでの SIGNAL 操作が不要)
たとえばこんな感じに書けるらしい。
というわけで,拙作の spiegel-im-spiegel/ml でも対話モードのプロンプトに簡易ヒストリが使えるようにした。 めっさ便利!
nyaosorg/go-readline-ny パッケージは元々 NYAGOS をターゲットに書かれたもののようだが,私の Ubuntu 環境でも問題なく動作している。
うんうん。 よかったよかった。
ブックマーク
参考図書
- プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
- 丸善出版 2016-06-20
- 単行本(ソフトカバー)
- 4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
- 評価
著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。