48 lines
773 B
Go
48 lines
773 B
Go
package cli
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
type RoutesClearDeps struct {
|
|
Clear func() (ok bool, message string)
|
|
Stdout io.Writer
|
|
Stderr io.Writer
|
|
}
|
|
|
|
func RunRoutesClear(args []string, deps RoutesClearDeps) int {
|
|
if deps.Clear == nil {
|
|
return 1
|
|
}
|
|
stdout := deps.Stdout
|
|
if stdout == nil {
|
|
stdout = os.Stdout
|
|
}
|
|
stderr := deps.Stderr
|
|
if stderr == nil {
|
|
stderr = os.Stderr
|
|
}
|
|
|
|
fs := flag.NewFlagSet("routes-clear", flag.ContinueOnError)
|
|
fs.SetOutput(stderr)
|
|
if err := fs.Parse(args); err != nil {
|
|
return 2
|
|
}
|
|
|
|
ok, message := deps.Clear()
|
|
if ok {
|
|
fmt.Fprintln(stdout, strings.TrimSpace(message))
|
|
return 0
|
|
}
|
|
msg := strings.TrimSpace(message)
|
|
if msg == "" {
|
|
msg = "routes clear failed"
|
|
}
|
|
fmt.Fprintln(stderr, msg)
|
|
return 1
|
|
}
|