set up return codes

This commit is contained in:
Bryson Steck 2025-07-11 12:32:31 -06:00
parent c8b8149be0
commit baad47e981
Signed by: bryson
SSH key fingerprint: SHA256:XpKABw/nP4z8UVaH+weLaBnEOD86+cVwif+QjuYLGT4
2 changed files with 19 additions and 6 deletions

View file

@ -313,8 +313,9 @@ func startMessage(l Listen) {
}
}
func (l Listen) Run() {
func (l Listen) Run() int {
// catch ^C
ret := 0
quit := make(chan bool)
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
@ -344,6 +345,7 @@ func (l Listen) Run() {
for {
if !triggered {
fmt.Println()
ret = 130
break
}
<-c
@ -355,4 +357,5 @@ func (l Listen) Run() {
printStatus("& Exiting...\n")
}
return ret
}

20
main.go
View file

@ -66,7 +66,7 @@ func validateArgs(opts Options, commandLen int) error {
return nil
}
func setup(opts Options, command []string) {
func setup(opts Options, command []string) int {
var filesMap map[string]bool = make(map[string]bool)
var cksumMap map[string][]byte = make(map[string][]byte)
var intervalMap map[string]time.Time = make(map[string]time.Time)
@ -104,11 +104,14 @@ func setup(opts Options, command []string) {
if success {
l := Listen{filesMap, cksumMap, intervalMap, opts.Condition, opts.NoChecksum, intervalDuration, command, opts.Quiet, opts.RunFirst}
l.Run()
return l.Run()
}
return -1
}
func main() {
ret := 0
opts := Options{}
parser := flags.NewParser(&opts, flags.Default)
parser.Usage = "[OPTIONS] -- [COMMAND]"
@ -116,8 +119,12 @@ func main() {
defer func() {
if err := recover(); err != nil {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
switch ret {
case -1:
os.Exit(5)
default:
os.Exit(ret)
}
}
}()
@ -125,7 +132,10 @@ func main() {
if opts.Version {
fmt.Printf("listen %s\n", VERSION)
} else if err := validateArgs(opts, len(remaining)); err == nil {
setup(opts, remaining)
ret = setup(opts, remaining)
if ret != 0 {
panic(ret)
}
}
}