all repos — erl @ 6c854334bc9ee7338771dd0d034f3f48f0980674

Execute Reload Loop

feat: enable short and long command-line arguments

Alan Pearce
commit

6c854334bc9ee7338771dd0d034f3f48f0980674

parent

0050b8866f010cccee83caa020957b3aa199151f

1 file changed, 21 insertions(+), 11 deletions(-)

changed files
M main.gomain.go
@@ -2,7 +2,7 @@ package main
import ( "context" - "flag" + "errors" "io" "log" "os"
@@ -14,17 +14,18 @@ "syscall"
"time" "github.com/fsnotify/fsnotify" + "github.com/jessevdk/go-flags" "alin.ovh/erl/command" "alin.ovh/erl/state" "alin.ovh/erl/watcher" ) -var ( - Exec = flag.String("exec", "", "command to execute on file change") - Quiet = flag.Bool("quiet", false, "suppress own output") - Verbose = flag.Bool("verbose", false, "verbose output (print events)") -) +type Options struct { + Exec string `short:"x" long:"exec" description:"command to execute on file change"` + Quiet bool `short:"q" long:"quiet" description:"suppress own output"` + Verbose bool `short:"v" long:"verbose" description:"verbose output (print events)"` +} func Start(ctx context.Context, verbose *log.Logger, w watcher.Watcher, sm *state.StateMachine) { var wg sync.WaitGroup
@@ -102,11 +103,20 @@ wg.Wait()
} func main() { + var opts Options log.SetFlags(log.Lmsgprefix) - flag.Parse() + + fp := flags.NewParser(&opts, flags.Default) + args, err := fp.Parse() + if err != nil { + if errors.Is(err, flags.ErrHelp) { + os.Exit(0) + } + + log.Fatalf("failed to parse flags: %v", err) + } - program := *Exec - args := flag.Args() + program := opts.Exec if program == "" { program = "go"
@@ -132,12 +142,12 @@ )
defer cancel() copts := command.Options{} - if *Quiet { + if opts.Quiet { copts.Output = io.Discard } var logger *log.Logger - if *Verbose { + if opts.Verbose { logger = log.New(os.Stderr, "", 0) } else { logger = log.New(io.Discard, "", 0)