Parse args with urfave/cli instead of flag
This commit is contained in:
69
args.go
69
args.go
@ -1,69 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
|
||||
"github.com/caarlos0/env"
|
||||
)
|
||||
|
||||
type botOptions struct {
|
||||
Debug bool `env:"BOT_DEBUG" envDefault:"false"`
|
||||
LogConvIDStr string `env:"BOT_LOG_CONVID" envDefault:""`
|
||||
HomePath string `envDefault:""`
|
||||
JSON bool `env:"BOT_LOG_JSON" envDefault:"false"`
|
||||
RedditUser string `env:"BOT_REDDIT_USER" envDefault:""`
|
||||
RedditPass string `env:"BOT_REDDIT_PASS" envDefault:""`
|
||||
Owner string `env:"BOT_OWNER" envDefault:""`
|
||||
KvStoreTeam string `env:"BOT_KVSTORE_TEAM" envDefault:""`
|
||||
}
|
||||
|
||||
func parseArgs(args []string) botOptions {
|
||||
// parse environment
|
||||
opts := botOptions{}
|
||||
if err := env.Parse(&opts); err != nil {
|
||||
log.Fatalf("Unable to parse env vars: %+v", err)
|
||||
}
|
||||
// parse CLI
|
||||
flags := flag.NewFlagSet(args[0], flag.ExitOnError)
|
||||
cliOpts := botOptions{}
|
||||
flags.BoolVar(&cliOpts.Debug, "debug", false, "enables debugging")
|
||||
flags.BoolVar(&cliOpts.JSON, "json", false, "enables JSON logging")
|
||||
flags.StringVar(&cliOpts.LogConvIDStr, "log-convid", "", "set the keybase conversation log id")
|
||||
flags.StringVar(&cliOpts.HomePath, "kbhome", "", "sets alternate keybase home folder for debugging")
|
||||
flags.StringVar(&cliOpts.RedditUser, "reddit-user", "", "sets the reddit auth user")
|
||||
flags.StringVar(&cliOpts.RedditPass, "reddit-pass", "", "sets the reddit auth password")
|
||||
flags.StringVar(&cliOpts.Owner, "owner", "", "sets the keybase username of the bot owner")
|
||||
flags.StringVar(&cliOpts.KvStoreTeam, "kvstore-team", "", "sets the kvstore team if you want to save configs")
|
||||
if err := flags.Parse(args[1:]); err != nil {
|
||||
log.Fatalf("Unable to parse cli args: %+v", err)
|
||||
}
|
||||
//overwrite ENV with CLI
|
||||
if flags.NFlag() > 0 {
|
||||
if cliOpts.Debug == true {
|
||||
opts.Debug = true
|
||||
}
|
||||
if cliOpts.JSON == true {
|
||||
opts.JSON = true
|
||||
}
|
||||
if cliOpts.HomePath != "" {
|
||||
opts.HomePath = cliOpts.HomePath
|
||||
}
|
||||
if cliOpts.LogConvIDStr != "" {
|
||||
opts.LogConvIDStr = cliOpts.LogConvIDStr
|
||||
}
|
||||
if cliOpts.RedditUser != "" {
|
||||
opts.RedditUser = cliOpts.RedditUser
|
||||
}
|
||||
if cliOpts.RedditPass != "" {
|
||||
opts.RedditPass = cliOpts.RedditPass
|
||||
}
|
||||
if cliOpts.Owner != "" {
|
||||
opts.Owner = cliOpts.Owner
|
||||
}
|
||||
if cliOpts.KvStoreTeam != "" {
|
||||
opts.KvStoreTeam = cliOpts.KvStoreTeam
|
||||
}
|
||||
}
|
||||
return opts
|
||||
}
|
||||
3
go.mod
3
go.mod
@ -6,14 +6,13 @@ require (
|
||||
github.com/PuerkitoBio/goquery v1.6.1
|
||||
github.com/andybalholm/cascadia v1.2.0 // indirect
|
||||
github.com/beefsack/go-rate v0.0.0-20200827232406-6cde80facd47 // indirect
|
||||
github.com/caarlos0/env v3.5.0+incompatible
|
||||
github.com/golang/protobuf v1.4.3 // indirect
|
||||
github.com/google/go-querystring v1.0.0 // indirect
|
||||
github.com/google/uuid v1.1.5
|
||||
github.com/jzelinskie/geddit v0.0.0-20200521013404-78c28c13fba2
|
||||
github.com/kf5grd/keybasebot v1.4.1
|
||||
github.com/stretchr/testify v1.7.0 // indirect
|
||||
github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125
|
||||
github.com/urfave/cli/v2 v2.3.0
|
||||
golang.org/x/net v0.0.0-20201224014010-6772e930b67b // indirect
|
||||
golang.org/x/oauth2 v0.0.0-20210113205817-d3ed898aa8a3 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
|
||||
47
go.sum
47
go.sum
@ -41,14 +41,14 @@ github.com/andybalholm/cascadia v1.2.0 h1:vuRCkM5Ozh/BfmsaTm26kbjm0mIOM3yS5Ek/F5
|
||||
github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
|
||||
github.com/beefsack/go-rate v0.0.0-20200827232406-6cde80facd47 h1:M57m0xQqZIhx7CEJgeLSvRFKEK1RjzRuIXiA3HfYU7g=
|
||||
github.com/beefsack/go-rate v0.0.0-20200827232406-6cde80facd47/go.mod h1:6YNgTHLutezwnBvyneBbwvB8C82y3dcoOj5EQJIdGXA=
|
||||
github.com/caarlos0/env v3.5.0+incompatible h1:Yy0UN8o9Wtr/jGHZDpCBLpNrzcFLLM2yixi/rBrKyJs=
|
||||
github.com/caarlos0/env v3.5.0+incompatible/go.mod h1:tdCsowwCzMLdkqRYDlHpZCp2UooDD3MspDBjZ2AD02Y=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
@ -93,6 +93,7 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
|
||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
|
||||
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
@ -112,39 +113,11 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/haukened/keybasebot v1.3.0 h1:GS66YERAnRqPVjmFfZlPMDMpKshus/+3rYYZ0S+6pcA=
|
||||
github.com/haukened/keybasebot v1.3.0/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.2 h1:0/sLWS45p5lGvcXlYSQHzSnarOwu+9OK9nAHtydR4/U=
|
||||
github.com/haukened/keybasebot v1.3.2/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.3 h1:5oNmF7z51enSl/3bWt5ZryKJROitxSYXYosIRzJWDv4=
|
||||
github.com/haukened/keybasebot v1.3.3/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.4 h1:8jl/HHDqrzx+6NiYXp6uQjmJDF7qOMH+tpw7oLYUqok=
|
||||
github.com/haukened/keybasebot v1.3.4/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.5 h1:CSBI9B45d7Jo+IL1if5yYXbXVD1AQIenkpcLTA6oO1o=
|
||||
github.com/haukened/keybasebot v1.3.5/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.6 h1:3f04Wc+wbi7PIPvdnSocO9y7sC2xE2vqJSlPOHCqluo=
|
||||
github.com/haukened/keybasebot v1.3.6/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/haukened/keybasebot v1.3.7 h1:7gCinJPFktUXSN/NaXzH6lgr8lgk67SeF6uWl9QQh3s=
|
||||
github.com/haukened/keybasebot v1.3.7/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/jzelinskie/geddit v0.0.0-20200521013404-78c28c13fba2 h1:kiU2zluXsjQ0QmeG0n1zXMGf/7+Fb8+Pn0xzzIeIpGs=
|
||||
github.com/jzelinskie/geddit v0.0.0-20200521013404-78c28c13fba2/go.mod h1:KiUhpHWSO6xCSPYKhRXa1LDLtbxZKaFH4NINTP3Lm2Q=
|
||||
github.com/kf5grd/keybasebot v1.2.0 h1:X/+dpP64G9mLLGEyZJ5oYK0l2yk8jDk1BVByxVKSo7M=
|
||||
github.com/kf5grd/keybasebot v1.2.0/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/kf5grd/keybasebot v1.3.0 h1:XWr96H4UmZQnHrvR5whuVJxrrUkqrJm/puGnckyqLFc=
|
||||
github.com/kf5grd/keybasebot v1.3.0/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210114174004-0f0b435f9f41 h1:EC0XypakLOr0Ob87vii0XFJURzSQJ0ICATzy+dLEdKk=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210114174004-0f0b435f9f41/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115152456-e9098b6373e7 h1:uUjyh919GupSHb8IyrsGk4yRjFKWNK9igW33pgO/a0Y=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115152456-e9098b6373e7/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115153557-55a46e5206dc h1:vO5YkfgOxBLdpOLHewDBOcZdRolQLMJbh0aoQJIyiI4=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115153557-55a46e5206dc/go.mod h1:aLjlXVBN7JQuBkKfUK/VT6fgXY8Gt4TlnNZGd3iPQXg=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115215309-970123606dc4 h1:ONxFFsoV0AYMbpt5G1hCDh3ZWMGI82JLD80i4a2cwOQ=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115215309-970123606dc4/go.mod h1:8T07cWZZrl2G6hTRsL9x2SBwaH8gEZocF9NRknSU3dY=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115222331-9060677d0119 h1:t2INVIjxt/kq4AszGOYCl0LmHJnvU7f28UA+1ouimVA=
|
||||
github.com/kf5grd/keybasebot v1.3.1-0.20210115222331-9060677d0119/go.mod h1:8T07cWZZrl2G6hTRsL9x2SBwaH8gEZocF9NRknSU3dY=
|
||||
github.com/kf5grd/keybasebot v1.4.1 h1:6VTcDnCiYWtEtxSOEFvKF5R7VwabR3pSEONWV81WS+Q=
|
||||
github.com/kf5grd/keybasebot v1.4.1/go.mod h1:8T07cWZZrl2G6hTRsL9x2SBwaH8gEZocF9NRknSU3dY=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
@ -155,13 +128,17 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB1JpVZouslJpI3GBNoiqW7+wb0Rz7w=
|
||||
github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0=
|
||||
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
@ -327,6 +304,7 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||
@ -409,8 +387,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
@ -421,7 +398,5 @@ honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
samhofi.us/x/keybase/v2 v2.0.6 h1:gLluTcyjbwckQxSarF1ig2klL4Li7O/THdxsgo1dUvw=
|
||||
samhofi.us/x/keybase/v2 v2.0.6/go.mod h1:lJivwhzMSV+WUg+XUbatszStjjFVcuLGl+xcQpqQ5GQ=
|
||||
samhofi.us/x/keybase/v2 v2.0.8 h1:hmGZa8v1peHuWBvePI09EXh5vahxbDPqNAXtztLDQzM=
|
||||
samhofi.us/x/keybase/v2 v2.0.8/go.mod h1:lJivwhzMSV+WUg+XUbatszStjjFVcuLGl+xcQpqQ5GQ=
|
||||
|
||||
104
main.go
104
main.go
@ -1,7 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
@ -11,29 +11,90 @@ import (
|
||||
|
||||
"github.com/kf5grd/keybasebot"
|
||||
"github.com/kf5grd/keybasebot/pkg/kvstore"
|
||||
"github.com/urfave/cli/v2"
|
||||
"samhofi.us/x/keybase/v2"
|
||||
"samhofi.us/x/keybase/v2/types/chat1"
|
||||
)
|
||||
|
||||
var version string
|
||||
|
||||
func main() {
|
||||
opts := parseArgs(os.Args)
|
||||
b := keybasebot.New("", keybase.SetHomePath(opts.HomePath))
|
||||
b.Debug = opts.Debug
|
||||
b.JSON = opts.JSON
|
||||
b.LogWriter = os.Stdout
|
||||
b.LogConv = chat1.ConvIDStr(opts.LogConvIDStr)
|
||||
// set the bot owner for private commands
|
||||
if opts.Owner != "" {
|
||||
b.Meta["owner"] = opts.Owner
|
||||
app := cli.NewApp()
|
||||
app.Name = "ssh0le"
|
||||
app.Version = version
|
||||
app.HideVersion = false
|
||||
app.Usage = "A general Keybase chat bot"
|
||||
app.Writer = os.Stdout
|
||||
app.HideVersion = false
|
||||
|
||||
app.Flags = []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "home",
|
||||
Aliases: []string{"H"},
|
||||
Usage: "Keybase Home Folder",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "debug",
|
||||
Usage: "Enables debugging",
|
||||
EnvVars: []string{"BOT_DEBUG"},
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "json",
|
||||
Usage: "Enables JSON logging",
|
||||
EnvVars: []string{"BOT_LOG_JSON"},
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "log-convid",
|
||||
Usage: "Set the Keybase log conversation id",
|
||||
EnvVars: []string{"BOT_LOG_CONVID"},
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "reddit-user",
|
||||
Usage: "Set the Reddit auth user",
|
||||
EnvVars: []string{"BOT_REDDIT_USER"},
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "reddit-pass",
|
||||
Usage: "Set the Reddit auth password",
|
||||
EnvVars: []string{"BOT_REDDIT_PASS"},
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "owner",
|
||||
Usage: "Set the Keybase username of the bot owner",
|
||||
EnvVars: []string{"BOT_OWNER"},
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "kvstore-team",
|
||||
Usage: "Set the kvstore team if you want to save configs",
|
||||
EnvVars: []string{"BOT_KVSTORE_TEAM"},
|
||||
},
|
||||
}
|
||||
if opts.KvStoreTeam != "" {
|
||||
b.Meta["kvstore"] = opts.KvStoreTeam
|
||||
|
||||
app.Action = run
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func run(c *cli.Context) error {
|
||||
b := keybasebot.New("", keybase.SetHomePath(c.String("home")))
|
||||
b.Debug = c.Bool("debug")
|
||||
b.JSON = c.Bool("json")
|
||||
b.LogWriter = os.Stdout
|
||||
b.LogConv = chat1.ConvIDStr(c.String("log-convid"))
|
||||
// set the bot owner for private commands
|
||||
if c.String("owner") != "" {
|
||||
b.Meta["owner"] = c.String("owner")
|
||||
}
|
||||
if c.String("kbstore-team") != "" {
|
||||
b.Meta["kvstore"] = c.String("kvstore-team")
|
||||
loadNsfwAllowed(b)
|
||||
}
|
||||
// set reddit login, which enables reddit commands
|
||||
if opts.RedditUser != "" && opts.RedditPass != "" {
|
||||
b.Meta["reddit-user"] = opts.RedditUser
|
||||
b.Meta["reddit-pass"] = opts.RedditPass
|
||||
if c.String("reddit-user") != "" && c.String("reddit-pass") != "" {
|
||||
b.Meta["reddit-user"] = c.String("reddit-user")
|
||||
b.Meta["reddit-pass"] = c.String("reddit-user")
|
||||
}
|
||||
|
||||
// register the bot commands
|
||||
@ -86,7 +147,7 @@ func main() {
|
||||
},
|
||||
)
|
||||
// if there are reddit credentials add the reddit commands
|
||||
if opts.RedditPass != "" && opts.RedditUser != "" {
|
||||
if c.String("reddit-user") != "" && c.String("reddit-pass") != "" {
|
||||
b.Commands = append(b.Commands,
|
||||
keybasebot.BotCommand{
|
||||
Name: "eyebleach",
|
||||
@ -108,14 +169,13 @@ func main() {
|
||||
),
|
||||
},
|
||||
)
|
||||
fmt.Printf("%+v\n", opts)
|
||||
}
|
||||
|
||||
// catch ctrl-c so we can clean up
|
||||
c := make(chan os.Signal)
|
||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||
ch := make(chan os.Signal)
|
||||
signal.Notify(ch, os.Interrupt, syscall.SIGTERM)
|
||||
go func() {
|
||||
<-c
|
||||
<-ch
|
||||
b.Logger.Info("Caught SIGINT, cleaning up.")
|
||||
b.KB.ClearCommands()
|
||||
b.Logger.Info("Cleared command adverts. Bye.")
|
||||
@ -124,6 +184,8 @@ func main() {
|
||||
}()
|
||||
// then run
|
||||
b.Run()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func loadNsfwAllowed(b *keybasebot.Bot) {
|
||||
@ -142,4 +204,4 @@ func loadNsfwAllowed(b *keybasebot.Bot) {
|
||||
b.Meta["nsfwAllowed"] = allowedTeams
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user