简介

kingpin-ABC
./cli --method A
./cli --method B
./cli --method C
--methodkingpin
./cli A
./cli B
./cli C

节省了很多输入操作。

使用方法

go get gopkg.in/alecthomas/kingpin.v2
go mod vendor
go.modvendor
package main

import (
    "fmt"
    "gopkg.in/alecthomas/kingpin.v2"
    "net/http"
)

func main() {
    var (
        listenAddress = kingpin.Flag(
            "web.listen-address",
            "Address on which to expose metrics and web interface.",
        ).Default(":18001").String()
        metricsPath = kingpin.Flag(
            "web.telemetry-path",
            "Path under which to expose metrics.",
        ).Default("/metrics").String()

    )
    kingpin.HelpFlag.Short('h')
    kingpin.Parse()

    conf.ApiMtncUrl = *apiMtncPath

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte(`<html>
            <head><title>Node Exporter</title></head>
            <body>
            <h1>xxx Exporter</h1>
            <p><a href=" ` + *metricsPath + ` ">Metrics</a></p>
            </body>
            </html>`))
    })

    http.Handle("/metrics", XXXX.Handler())

    if err := http.ListenAndServe(*listenAddress, nil); err != nil {
        fmt.Printf("Error occur when start server %v", err)
    }
}

官方文档参考 package kingpin

引用

Golang命令行参数解析库kingpin