Move all variables to the controller interface.
This commit is contained in:
@ -11,61 +11,61 @@ import (
|
||||
func (flags *Flags) ParseFlags() {
|
||||
|
||||
// Define parameters
|
||||
flag.StringVar(&flags.Row1, "row1", "000000000", "1st row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row2, "row2", "000000000", "2nd row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row3, "row3", "000000000", "4rd row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row4, "row4", "000000000", "4th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row5, "row5", "000000000", "5th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row6, "row6", "000000000", "6th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row7, "row7", "000000000", "7th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
||||
flag.IntVar(&flags.NumCPUs, "numcpu", runtime.NumCPU(), "Number of CPU cores to assign to this task.")
|
||||
flag.IntVar(&flags.Split, "split", 1, "Split the tasks in n parts. This depends on the availability of the first row.")
|
||||
flag.IntVar(&flags.Part, "part", 1, "Process part x in n parts. Cannot be lower than 1, or higher than specified in split.")
|
||||
flag.StringVar(&flags.Controller.Row1, "row1", "000000000", "1st row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row2, "row2", "000000000", "2nd row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row3, "row3", "000000000", "4rd row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row4, "row4", "000000000", "4th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row5, "row5", "000000000", "5th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row6, "row6", "000000000", "6th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row7, "row7", "000000000", "7th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row8, "row8", "000000000", "8th row of the sudoku puzzle.")
|
||||
flag.StringVar(&flags.Controller.Row9, "row9", "000000000", "9th row of the sudoku puzzle.")
|
||||
flag.IntVar(&flags.Controller.NumCPUs, "numcpu", runtime.NumCPU(), "Number of CPU cores to assign to this task.")
|
||||
flag.IntVar(&flags.Controller.Split, "split", 1, "Split the tasks in n parts. This depends on the availability of the first row.")
|
||||
flag.IntVar(&flags.Controller.Part, "part", 1, "Process part x in n parts. Cannot be lower than 1, or higher than specified in split.")
|
||||
|
||||
// Parse the flags
|
||||
flag.Parse()
|
||||
|
||||
// Process any changes to the CPU usage.
|
||||
if flags.NumCPUs <= 0 {
|
||||
if flags.Controller.NumCPUs <= 0 {
|
||||
log.Printf("ERROR: Number of CPU cores must be 1 or higher.\n\n")
|
||||
flags.printUsage()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
if flags.NumCPUs != runtime.NumCPU() {
|
||||
runtime.GOMAXPROCS(flags.NumCPUs)
|
||||
if flags.Controller.NumCPUs != runtime.NumCPU() {
|
||||
runtime.GOMAXPROCS(flags.Controller.NumCPUs)
|
||||
}
|
||||
|
||||
// Process rows
|
||||
if flags.Row1 == "000000000" || flags.Row2 == "000000000" || flags.Row3 == "000000000" || flags.Row4 == "000000000" || flags.Row5 == "000000000" || flags.Row6 == "000000000" || flags.Row7 == "000000000" || flags.Row8 == "000000000" || flags.Row9 == "000000000" {
|
||||
if flags.Controller.Row1 == "000000000" || flags.Controller.Row2 == "000000000" || flags.Controller.Row3 == "000000000" || flags.Controller.Row4 == "000000000" || flags.Controller.Row5 == "000000000" || flags.Controller.Row6 == "000000000" || flags.Controller.Row7 == "000000000" || flags.Controller.Row8 == "000000000" || flags.Controller.Row9 == "000000000" {
|
||||
log.Printf("ERROR: All parameters must be entered.\n\n")
|
||||
flags.printUsage()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Validate the row (never trust user input)
|
||||
flags.validateRow("row1", flags.Row1)
|
||||
flags.validateRow("row2", flags.Row2)
|
||||
flags.validateRow("row3", flags.Row3)
|
||||
flags.validateRow("row4", flags.Row4)
|
||||
flags.validateRow("row5", flags.Row5)
|
||||
flags.validateRow("row6", flags.Row6)
|
||||
flags.validateRow("row7", flags.Row7)
|
||||
flags.validateRow("row8", flags.Row8)
|
||||
flags.validateRow("row9", flags.Row9)
|
||||
flags.validateRow("row1", flags.Controller.Row1)
|
||||
flags.validateRow("row2", flags.Controller.Row2)
|
||||
flags.validateRow("row3", flags.Controller.Row3)
|
||||
flags.validateRow("row4", flags.Controller.Row4)
|
||||
flags.validateRow("row5", flags.Controller.Row5)
|
||||
flags.validateRow("row6", flags.Controller.Row6)
|
||||
flags.validateRow("row7", flags.Controller.Row7)
|
||||
flags.validateRow("row8", flags.Controller.Row8)
|
||||
flags.validateRow("row9", flags.Controller.Row9)
|
||||
|
||||
// Process workload splitting
|
||||
// Ensure split and part are 1 or higher
|
||||
if flags.Split <= 0 || flags.Part <= 0 {
|
||||
if flags.Controller.Split <= 0 || flags.Controller.Part <= 0 {
|
||||
log.Printf("ERROR: '-split' and '-part' need to be 1 or higher.\n")
|
||||
flags.printUsage()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Ensure part is between 1 and split
|
||||
if flags.Part > flags.Split {
|
||||
if flags.Controller.Part > flags.Controller.Split {
|
||||
log.Printf("ERROR: '-part' cannot be bigger than `-split`.\n")
|
||||
flags.printUsage()
|
||||
os.Exit(1)
|
||||
|
@ -1,19 +0,0 @@
|
||||
package flags
|
||||
|
||||
import "gitea.ligthert.net/golang/sudoku-funpark/solver"
|
||||
|
||||
func (flags *Flags) TransferConfig(solver *solver.Solver) {
|
||||
// Parse variables parsed from the flags to solver
|
||||
solver.NumCPUs = flags.NumCPUs
|
||||
solver.Split = flags.Split
|
||||
solver.Part = flags.Part
|
||||
solver.Row1 = flags.Row1
|
||||
solver.Row2 = flags.Row2
|
||||
solver.Row3 = flags.Row3
|
||||
solver.Row4 = flags.Row4
|
||||
solver.Row5 = flags.Row5
|
||||
solver.Row6 = flags.Row6
|
||||
solver.Row7 = flags.Row7
|
||||
solver.Row8 = flags.Row8
|
||||
solver.Row9 = flags.Row9
|
||||
}
|
@ -1,16 +1,7 @@
|
||||
package flags
|
||||
|
||||
import "gitea.ligthert.net/golang/sudoku-funpark/controller"
|
||||
|
||||
type Flags struct {
|
||||
Row1 string
|
||||
Row2 string
|
||||
Row3 string
|
||||
Row4 string
|
||||
Row5 string
|
||||
Row6 string
|
||||
Row7 string
|
||||
Row8 string
|
||||
Row9 string
|
||||
NumCPUs int
|
||||
Split int
|
||||
Part int
|
||||
Controller *controller.Controller
|
||||
}
|
||||
|
Reference in New Issue
Block a user