Add flags to only run a specific part
Now we can specify to only run part1 or part2 of the given day(s). Just in case we need some super focused testing or debugging!
This commit is contained in:
46
main.go
46
main.go
@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
@ -24,6 +25,11 @@ const (
|
|||||||
part2Header = utilities.ColorGreen + "Part2:" + utilities.TextReset
|
part2Header = utilities.ColorGreen + "Part2:" + utilities.TextReset
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
flagPart1 = flag.Bool("part1", false, "whether to run part1 or not; if no flags are present, all parts are run")
|
||||||
|
flagPart2 = flag.Bool("part2", false, "whether to run part2 or not; if no flags are present, all parts are run")
|
||||||
|
)
|
||||||
|
|
||||||
var dayMap = []day{
|
var dayMap = []day{
|
||||||
&days.Day01{},
|
&days.Day01{},
|
||||||
&days.Day02{},
|
&days.Day02{},
|
||||||
@ -32,9 +38,12 @@ var dayMap = []day{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
arg := strconv.Itoa(len(dayMap))
|
arg := strconv.Itoa(len(dayMap))
|
||||||
if len(os.Args) > 1 && len(os.Args[1]) > 0 {
|
flagArgs := flag.Args()
|
||||||
arg = os.Args[1]
|
if len(flagArgs) > 0 && len(flagArgs[0]) > 0 {
|
||||||
|
arg = flagArgs[0]
|
||||||
}
|
}
|
||||||
if strings.ToLower(arg) == "all" {
|
if strings.ToLower(arg) == "all" {
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
@ -61,25 +70,42 @@ func main() {
|
|||||||
func solve(d day) {
|
func solve(d day) {
|
||||||
fmt.Printf("%sDay %d%s\n", utilities.ColorCyan, d.Num(), utilities.TextReset)
|
fmt.Printf("%sDay %d%s\n", utilities.ColorCyan, d.Num(), utilities.TextReset)
|
||||||
|
|
||||||
|
runPart1 := (!*flagPart1 && !*flagPart2) || *flagPart1
|
||||||
|
runPart2 := (!*flagPart1 && !*flagPart2) || *flagPart2
|
||||||
|
|
||||||
parseStart := time.Now()
|
parseStart := time.Now()
|
||||||
d.Parse()
|
d.Parse()
|
||||||
parseTime := time.Since(parseStart)
|
parseTime := time.Since(parseStart)
|
||||||
|
|
||||||
part1Start := time.Now()
|
part1Start := time.Now()
|
||||||
part1Text := d.Part1()
|
var part1Text string
|
||||||
|
if runPart1 {
|
||||||
|
part1Text = d.Part1()
|
||||||
|
}
|
||||||
part1Time := time.Since(part1Start)
|
part1Time := time.Since(part1Start)
|
||||||
|
|
||||||
part2Start := time.Now()
|
part2Start := time.Now()
|
||||||
part2Text := d.Part2()
|
var part2Text string
|
||||||
|
if runPart2 {
|
||||||
|
part2Text = d.Part2()
|
||||||
|
}
|
||||||
part2Time := time.Since(part2Start)
|
part2Time := time.Since(part2Start)
|
||||||
|
|
||||||
fmt.Println(part1Header)
|
if runPart1 {
|
||||||
fmt.Println(part1Text)
|
fmt.Println(part1Header)
|
||||||
fmt.Println(part2Header)
|
fmt.Println(part1Text)
|
||||||
fmt.Println(part2Text)
|
}
|
||||||
|
if runPart2 {
|
||||||
|
fmt.Println(part2Header)
|
||||||
|
fmt.Println(part2Text)
|
||||||
|
}
|
||||||
fmt.Print(utilities.ColorBrightBlack)
|
fmt.Print(utilities.ColorBrightBlack)
|
||||||
fmt.Println("Parsed in", parseTime)
|
fmt.Println("Parsed in", parseTime)
|
||||||
fmt.Println("Part01 in", part1Time)
|
if runPart1 {
|
||||||
fmt.Println("Part02 in", part2Time)
|
fmt.Println("Part01 in", part1Time)
|
||||||
|
}
|
||||||
|
if runPart2 {
|
||||||
|
fmt.Println("Part02 in", part2Time)
|
||||||
|
}
|
||||||
fmt.Println(utilities.TextReset)
|
fmt.Println(utilities.TextReset)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user