From 4f5d622e1cfdb73aee85729ae2d9a48f4c7d04d4 Mon Sep 17 00:00:00 2001 From: Fan DANG Date: Mon, 18 Mar 2024 16:51:54 +0800 Subject: [PATCH] Add an option named "SkipParsingArgs" for skipping the command line arguments parsing. Parsing the command line can be extremely slow when the config file is large. --- main.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index 89be75fb2..fabea79ee 100644 --- a/main.go +++ b/main.go @@ -210,6 +210,9 @@ type Options struct { // Print DNSProxy version (just for the help) Version bool `yaml:"version" long:"version" description:"Prints the program version"` + + // SkipParsingArgs is used to skip the command line arguments parsing. + SkipParsingArgs bool `yaml:"skip-parsing-args" long:"skip-parsing-args" description:"If present, skips the command line arguments parsing" optional:"yes" optional-value:"false"` } const ( @@ -245,14 +248,16 @@ func main() { } } - parser := goFlags.NewParser(options, goFlags.Default) - _, err := parser.Parse() - if err != nil { - if flagsErr, ok := err.(*goFlags.Error); ok && flagsErr.Type == goFlags.ErrHelp { - os.Exit(0) - } + if !options.SkipParsingArgs { + parser := goFlags.NewParser(options, goFlags.Default) + _, err := parser.Parse() + if err != nil { + if flagsErr, ok := err.(*goFlags.Error); ok && flagsErr.Type == goFlags.ErrHelp { + os.Exit(0) + } - os.Exit(1) + os.Exit(1) + } } run(options)