GoでCLI兼ライブラリを作る

GoでCLI兼ライブラリを作る方法について書いてゆく。

Goのエントリポイント

Goのエントリポイントはmain.goのmain関数になっている。 つまり、このファイルと関数が無い場合は ライブラリとして扱われるという事になる。

GoでCLI兼ライブラリを作る方法

まず以下のようなディレクトリ構造を作成する。以下はChunoの例。

.
├── chuno.go
├── cmd
│   └── chuno
│       └── main.go <- cliツールのエントリポイント
├── css.go
├── go.mod
├── go.sum
├── README.ja.md
├── README.md
├── render.go
└── watch.go

ライブラリのリポジトリに/cmd/ライブラリ名/main.goというファイルを作成し、そこにcliツールのプログラムを書いてゆく。 ただしmain.goでライブラリ自身(上の例の場合はChuno)を読み込む場合はgithub.comから始まる形式で読み込む必要がある。

以下はChunoの場合(関係ない部分は省いている)

package main

import (
    "flag"
    "fmt"
    "log"
    "os"

    "github.com/Comamoca/chuno"
)

func main() {
    flag.Parse()

    args := flag.Args()

    log.Println(args)

    if len(args) == 0 {
        // red
        help()
        log.Fatal("No file specified to preview!!")
        os.Exit(1)
    }

    path := args[0]

    var isDark = false

    if contain(args, "--dark") {
        isDark = true
    }

    err := chuno.LaunchPreviewServer(path,
    3535, isDark)
    if err != nil {
        log.Fatal(err)
        os.Exit(1)
    }
}

results matching ""

    No results matching ""