From 9326593844e636dd589922b136bf2d1f07a2bad8 Mon Sep 17 00:00:00 2001 From: Jake Hillion Date: Thu, 25 Mar 2021 13:45:24 +0000 Subject: [PATCH] Added flags --- flags/flags.go | 33 +++++++++++++++++++++++++++++++++ flags/locs_freebsd.go | 4 ++++ flags/locs_linux.go | 4 ++++ go.mod | 1 + go.sum | 7 ++++--- 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 flags/flags.go create mode 100644 flags/locs_freebsd.go create mode 100644 flags/locs_linux.go diff --git a/flags/flags.go b/flags/flags.go new file mode 100644 index 0000000..52608e7 --- /dev/null +++ b/flags/flags.go @@ -0,0 +1,33 @@ +package flags + +import ( + "fmt" + "github.com/jessevdk/go-flags" +) + +type Options struct { + Config string `short:"c" long:"config" description:"Configuration file location" value-name:"FILE"` + PidFile string `short:"p" long:"pid" description:"PID file location"` + + InterfaceName string +} + +func ParseFlags() (*Options, error) { + o := new(Options) + args, err := flags.Parse(o) + if err != nil { + return nil, err + } + + if len(args) > 0 { + o.InterfaceName = args[0] + if o.Config == "" { + o.Config = fmt.Sprintf(DefaultConfigFile, o.InterfaceName) + } + if o.PidFile == "" { + o.PidFile = fmt.Sprintf(DefaultPidFile, o.InterfaceName) + } + } + + return o, err +} diff --git a/flags/locs_freebsd.go b/flags/locs_freebsd.go new file mode 100644 index 0000000..13bbda0 --- /dev/null +++ b/flags/locs_freebsd.go @@ -0,0 +1,4 @@ +package flags + +const DefaultConfigFile = "/usr/local/etc/netcombiner/%s" +const DefaultPidFile = "/var/run/netcombiner/%s.pid" diff --git a/flags/locs_linux.go b/flags/locs_linux.go new file mode 100644 index 0000000..82a7f21 --- /dev/null +++ b/flags/locs_linux.go @@ -0,0 +1,4 @@ +package flags + +const DefaultConfigFile = "/etc/netcombiner/%s" +const DefaultPidFile = "/var/run/netcombiner/%s.pid" diff --git a/go.mod b/go.mod index edfdcc1..1157795 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.15 require ( github.com/JakeHillion/taptun v0.0.0-20210320133200-cf0ef75b1bff github.com/go-playground/validator/v10 v10.4.1 + github.com/jessevdk/go-flags v1.5.0 github.com/smartystreets/goconvey v1.6.4 // indirect github.com/stretchr/testify v1.4.0 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 diff --git a/go.sum b/go.sum index cc4beb1..91065b9 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,3 @@ -github.com/JakeHillion/taptun v0.0.0-20160424131934-bbbd335672ab h1:/UB98lLA11PJZOqhdzqeITMTMz6eiTjti9Z9kYq1SWQ= -github.com/JakeHillion/taptun v0.0.0-20160424131934-bbbd335672ab/go.mod h1:8WBFCKR7ZdT+WVtgyiSPJf6gqXiNZUvfglN8vwkoyBE= github.com/JakeHillion/taptun v0.0.0-20210320133200-cf0ef75b1bff h1:O+wiKpOHS2BidwDz6ZuR3dVQNsrD55raE9mY4yub6Wc= github.com/JakeHillion/taptun v0.0.0-20210320133200-cf0ef75b1bff/go.mod h1:8WBFCKR7ZdT+WVtgyiSPJf6gqXiNZUvfglN8vwkoyBE= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= @@ -14,6 +12,8 @@ github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7a github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= @@ -33,8 +33,9 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4 h1:EZ2mChiOa8udjfp6rRmswTbtZN/QzUQp4ptM4rnjHvc= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=