コマンドラインからググる

no extension

面白いツールが公開されている。

もちろん Windows のコマンドプロンプトでも使える。 たとえば

$ ggr -i ググレカス

と打ち込めば,既定のブラウザが開いて

ググレカス
ググレカス

などと表示される。 ちょっとしたことなんだけどね。 キャラクタ端末メインで仕事してる時はこういうのが便利だったりする。 面白いのでうちの子として迎え入れることにした。

コードを見たら main.go に全部入っていて,それはそれで全然いいんだけど,折角なので fork してパッケージ化してみることにした。

これで main 関数(ggr/cli.go)はこうなる。

package main

import (
    "flag"
    "os"

    "github.com/spiegel-im-spiegel/ggr"
    "github.com/toqueteos/webbrowser"
)

// sample url
// https://www.google.co.jp/search?q=test&ie=utf-8&oe=utf-8&hl=ja

func main() {
    var (
        imageFlag bool
        newsFlag  bool
        shopFlag  bool
    )

    f := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
    f.BoolVar(&imageFlag, "i", false, "image flag")
    f.BoolVar(&newsFlag, "n", false, "new flag")
    f.BoolVar(&shopFlag, "s", false, "shop flag")

    f.Parse(os.Args[1:])
    q := f.Args()

    t := ggr.TypeNormal
    if imageFlag {
        t = ggr.TypeImage
    } else if newsFlag {
        t = ggr.TypeNews
    } else if shopFlag {
        t = ggr.TypeShop
    }

    g := ggr.NewGgr(ggr.LangJa, t, q)
    webbrowser.Open(g.GetSearchURL())
}

まぁ,パッケージ化していいことがあるかと言われれば微妙なんだけど,最近は CLI ツールでもロジック(DDD で言うところのドメイン・レイヤ)はパッケージとして独立させたほうが何かと使い勝手がいいような気がしている。

というわけで,絶賛中断中の gpgpdump は全面的に書きなおす予定。

いやぁ,最近仕事(Java アプリケーション)で煮詰まってたので,いい気分転換になったよ。 やはり自分の自由に書けるコードは楽しい。

(ちなみに,いつものようにブランチでの作業を GitHub 上で自分に PR しようとして間違えて作者様に PR してしまったのは内緒だ。 Fork したリポジトリからの PR は必ず Fork 元に飛んじゃんだね。もうしません。反省)

photo
プログラミング言語Go
Alan A.A. Donovan Brian W. Kernighan 柴田 芳樹
丸善出版 2016-06-15

Go言語によるWebアプリケーション開発 マイクロサービスアーキテクチャ ハイパフォーマンスPython The Go Programming Language (Addison-Wesley Professional Computing Series) Vim script テクニックバイブル ~Vim使いの魔法の杖

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。買おうかどうか悩み中。

reviewed by Spiegel on 2016-03-12 (powered by G-Tools)