awl/main.go

60 lines
1.0 KiB
Go

// SPDX-License-Identifier: BSD-3-Clause
package main
import (
"errors"
"fmt"
"os"
"strings"
"git.froth.zone/sam/awl/cli"
"git.froth.zone/sam/awl/internal/helpers"
"git.froth.zone/sam/awl/query"
)
var version = "DEV"
func main() {
opts, err := cli.ParseCLI(version)
if err != nil {
// TODO: Make not ew
if errors.Is(err, cli.ErrNotError) || strings.Contains(err.Error(), "help requested") {
os.Exit(0)
}
opts.Logger.Error(err)
os.Exit(1)
}
var resp helpers.Response
// Retry queries if a query fails
for i := 0; i < opts.Request.Retries; i++ {
resp, err = query.CreateQuery(opts)
if err == nil {
break
} else {
opts.Logger.Warn("Retrying request, error:", err)
}
}
// Query failed, make it fail
if err != nil {
opts.Logger.Error(err)
os.Exit(9)
}
var str string
if opts.JSON || opts.XML || opts.YAML {
str, err = query.PrintSpecial(resp.DNS, opts)
if err != nil {
opts.Logger.Error("Special print:", err)
os.Exit(10)
}
} else {
str = query.ToString(resp, opts)
}
fmt.Println(str)
}