refactor: minimise the main package
All checks were successful
REUSE Compliance Check / check (push) Successful in 5s

Minimise the main package by moving all flag parsing to the Execute
function.
This commit is contained in:
Dan Anglin 2024-08-18 07:18:57 +01:00
parent 6e5e0c4c5a
commit 3c8633ff04
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 62 additions and 50 deletions

View file

@ -11,22 +11,46 @@ package executor
{{ print "" }}
{{ print "" }}
import "fmt"
import "flag"
import "os"
import "codeflow.dananglin.me.uk/apollo/enbas/internal/config"
import internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag"
import "codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
import "codeflow.dananglin.me.uk/apollo/enbas/internal/usage"
{{ print "" }}
{{ print "" }}
func Execute(
command string,
args []string,
noColor bool,
configDir string,
) error {
func Execute() error {
var (
configDir string
noColorFlag internalFlag.BoolPtrValue
noColor bool
enbasConfig *config.Config
enbasPrinter *printer.Printer
err error
)
flag.StringVar(&configDir, "config-dir", "", "The path to your configuration directory")
flag.Var(&noColorFlag, "no-color", "Set to true to disable ANSI colour output when displaying text on screen")
flag.Usage = usage.AppUsageFunc()
flag.Parse()
if flag.NArg() < 1 {
flag.Usage()
return nil
}
if noColorFlag.Value != nil {
noColor = *noColorFlag.Value
} else if os.Getenv("NO_COLOR") != "" {
noColor = true
}
command := flag.Arg(0)
args := flag.Args()[1:]
switch command {
case "init", "version":
enbasPrinter = printer.NewPrinter(noColor, "", 0)
@ -94,7 +118,7 @@ func execute(
exe, ok := executorMap[command]
if !ok {
return UnknownCommandError{Command: command}
return UnknownCommandError{command: command}
}
if err := exe.Parse(args); err != nil {

View file

@ -1,49 +1,13 @@
package main
import (
"flag"
"os"
"codeflow.dananglin.me.uk/apollo/enbas/internal/executor"
internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag"
"codeflow.dananglin.me.uk/apollo/enbas/internal/usage"
)
func main() {
if err := run(); err != nil {
if err := executor.Execute(); err != nil {
os.Exit(1)
}
}
func run() error {
var (
configDir string
noColorFlag internalFlag.BoolPtrValue
)
flag.StringVar(&configDir, "config-dir", "", "Specify your config directory")
flag.Var(&noColorFlag, "no-color", "Disable ANSI colour output when displaying text on screen")
flag.Usage = usage.AppUsageFunc()
flag.Parse()
if flag.NArg() < 1 {
flag.Usage()
return nil
}
var noColor bool
if noColorFlag.Value != nil {
noColor = *noColorFlag.Value
} else if os.Getenv("NO_COLOR") != "" {
noColor = true
}
command := flag.Arg(0)
args := flag.Args()[1:]
return executor.Execute(command, args, noColor, configDir) //nolint:wrapcheck
}

View file

@ -6,24 +6,48 @@
package executor
import (
"flag"
"fmt"
"os"
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag"
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
"codeflow.dananglin.me.uk/apollo/enbas/internal/usage"
)
func Execute(
command string,
args []string,
noColor bool,
configDir string,
) error {
func Execute() error {
var (
configDir string
noColorFlag internalFlag.BoolPtrValue
noColor bool
enbasConfig *config.Config
enbasPrinter *printer.Printer
err error
)
flag.StringVar(&configDir, "config-dir", "", "The path to your configuration directory")
flag.Var(&noColorFlag, "no-color", "Set to true to disable ANSI colour output when displaying text on screen")
flag.Usage = usage.AppUsageFunc()
flag.Parse()
if flag.NArg() < 1 {
flag.Usage()
return nil
}
if noColorFlag.Value != nil {
noColor = *noColorFlag.Value
} else if os.Getenv("NO_COLOR") != "" {
noColor = true
}
command := flag.Arg(0)
args := flag.Args()[1:]
switch command {
case "init", "version":
enbasPrinter = printer.NewPrinter(noColor, "", 0)