Refactored main.go to make the entry point clearer
This commit is contained in:
parent
32f7720069
commit
46c42cb67d
39
main.go
39
main.go
@ -17,6 +17,28 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
readerFactory, writerFactory, solverFactory, ok := parse_arguments()
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer utils.Timer("TOTAL", 1)()
|
||||||
|
reader := readerFactory.Get()
|
||||||
|
|
||||||
|
maze, err := parser.Parse(reader)
|
||||||
|
utils.Check(err, "Couldn't read maze")
|
||||||
|
|
||||||
|
solver := solverFactory.Get()
|
||||||
|
solved := solver.Solve(maze)
|
||||||
|
|
||||||
|
writer := writerFactory.Get(solved)
|
||||||
|
|
||||||
|
err = writer.Write()
|
||||||
|
utils.Check(err, "Couldn't write solved maze")
|
||||||
|
}
|
||||||
|
|
||||||
|
func parse_arguments() (*reader.ReaderFactory, *writer.WriterFactory, *solver.SolverFactory, bool) {
|
||||||
argparser := argparse.NewParser("maze-solver", "Solves the given maze (insane, right? who would've guessed?)")
|
argparser := argparse.NewParser("maze-solver", "Solves the given maze (insane, right? who would've guessed?)")
|
||||||
|
|
||||||
var verboseLevel *int = argparser.FlagCounter("v", "verbose", &argparse.Options{
|
var verboseLevel *int = argparser.FlagCounter("v", "verbose", &argparse.Options{
|
||||||
@ -124,7 +146,7 @@ func main() {
|
|||||||
|
|
||||||
if err := argparser.Parse(os.Args); err != nil {
|
if err := argparser.Parse(os.Args); err != nil {
|
||||||
fmt.Println(argparser.Usage(err))
|
fmt.Println(argparser.Usage(err))
|
||||||
return
|
return nil, nil, nil, false
|
||||||
}
|
}
|
||||||
utils.VERBOSE_LEVEL = *verboseLevel
|
utils.VERBOSE_LEVEL = *verboseLevel
|
||||||
|
|
||||||
@ -137,18 +159,5 @@ func main() {
|
|||||||
writerFactory.PathColor = color.RGBA{255, 255, 255, 255}
|
writerFactory.PathColor = color.RGBA{255, 255, 255, 255}
|
||||||
writerFactory.SolutionGradient = colorgrad.Warm()
|
writerFactory.SolutionGradient = colorgrad.Warm()
|
||||||
|
|
||||||
defer utils.Timer("TOTAL", 1)()
|
return &readerFactory, &writerFactory, &solverFactory, true
|
||||||
|
|
||||||
reader := readerFactory.Get()
|
|
||||||
|
|
||||||
maze, err := parser.Parse(reader)
|
|
||||||
utils.Check(err, "Couldn't read maze")
|
|
||||||
|
|
||||||
solver := solverFactory.Get()
|
|
||||||
solved := solver.Solve(maze)
|
|
||||||
|
|
||||||
writer := writerFactory.Get(solved)
|
|
||||||
|
|
||||||
err = writer.Write()
|
|
||||||
utils.Check(err, "Couldn't write solved maze")
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user