mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-07 05:42:42 +00:00
Refactoring: remove context switching, another way to catch panics, colored output. #96
This commit is contained in:
+17
-16
@@ -2,11 +2,10 @@ package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"github.com/smira/commander"
|
||||
)
|
||||
|
||||
func Run(cmd_args []string, exitOnPanic bool) {
|
||||
|
||||
func Run(cmd *commander.Command, cmd_args []string, initContext bool) (returnCode int) {
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
fatal, ok := r.(*FatalError)
|
||||
@@ -14,29 +13,31 @@ func Run(cmd_args []string, exitOnPanic bool) {
|
||||
panic(r)
|
||||
}
|
||||
fmt.Println("ERROR:", fatal.Message)
|
||||
if exitOnPanic {
|
||||
os.Exit(fatal.ReturnCode)
|
||||
}
|
||||
returnCode = fatal.ReturnCode
|
||||
}
|
||||
}()
|
||||
|
||||
command := RootCommand()
|
||||
returnCode = 0
|
||||
|
||||
flags, args, err := command.ParseFlags(cmd_args)
|
||||
flags, args, err := cmd.ParseFlags(cmd_args)
|
||||
if err != nil {
|
||||
Fatal(err)
|
||||
}
|
||||
|
||||
err = InitContext(flags)
|
||||
if err != nil {
|
||||
Fatal(err)
|
||||
}
|
||||
|
||||
defer ShutdownContext()
|
||||
|
||||
err = command.Dispatch(args)
|
||||
if initContext {
|
||||
err = InitContext(flags)
|
||||
if err != nil {
|
||||
Fatal(err)
|
||||
}
|
||||
defer ShutdownContext()
|
||||
}
|
||||
|
||||
context.UpdateFlags(flags)
|
||||
|
||||
err = cmd.Dispatch(args)
|
||||
if err != nil {
|
||||
Fatal(err)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user