feat!: remove external dependencies

Remove the kingpin external dependency, and instead just use Go's stdlib
flag package.

BREAKING CHANGE: Long versions of command line flags are no longer supported.
This commit is contained in:
2022-11-14 18:58:04 +00:00
parent 2e7557a9aa
commit 9a904fee99
5 changed files with 36 additions and 55 deletions

58
main.go
View File

@@ -2,35 +2,35 @@ package main
import (
"bytes"
"flag"
"fmt"
"log"
"net/http"
"os"
"strconv"
"strings"
"time"
"gopkg.in/alecthomas/kingpin.v2"
)
var (
version = "dev"
commit = "unknown"
)
const (
name = "casecmp"
version = "dev"
commit = "unknown"
date = "unknown"
defaultPort = "8080"
defaultPort = 8080
defaultBind = "0.0.0.0"
)
// Argument parsing setup.
var (
portFlag = kingpin.Flag("port", "Port to listen to.").Short('p').
Default("").String()
bindFlag = kingpin.Flag("bind", "Bind address.").Short('b').
Default("0.0.0.0").String()
forceHTTPSFlag = kingpin.Flag(
"force-https", "Use https:// in example curl commands",
).Bool()
versionFlag = kingpin.Flag("version", "Print version info.").
Short('v').Bool()
portFlag = flag.Int("p", defaultPort, "Port to listen on")
bindFlag = flag.String("b", defaultBind, "Bind address")
forceHTTPSFlag = flag.Bool(
"f", false, "Use https:// in example curl commands",
)
versionFlag = flag.Bool("v", false, "Print version info")
)
func indexHandler(w http.ResponseWriter, r *http.Request) {
@@ -105,13 +105,16 @@ func printVersion() {
fmt.Println(buffer.String())
}
func startServer() {
if *portFlag == "" {
func startServer() error {
if *portFlag == defaultPort {
envPort := os.Getenv("PORT")
if envPort != "" {
*portFlag = envPort
} else {
*portFlag = defaultPort
v, err := strconv.Atoi(envPort)
if err != nil {
return err
}
*portFlag = v
}
}
@@ -119,8 +122,9 @@ func startServer() {
*forceHTTPSFlag = true
}
address := *bindFlag + ":" + *portFlag
address := fmt.Sprintf("%s:%d", *bindFlag, *portFlag)
fmt.Printf("Listening on %s\n", address)
srv := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 5 * time.Second,
@@ -129,15 +133,19 @@ func startServer() {
Addr: address,
}
log.Fatal(srv.ListenAndServe())
return srv.ListenAndServe()
}
func main() {
kingpin.Parse()
flag.Parse()
if *versionFlag {
printVersion()
} else {
startServer()
return
}
err := startServer()
if err != nil {
log.Fatal(err)
}
}