-
Notifications
You must be signed in to change notification settings - Fork 34
/
opts.go
65 lines (52 loc) · 2.83 KB
/
opts.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package conf
import (
"fmt"
"github.com/jessevdk/go-flags"
"os"
)
type Opts struct {
ShowVersion bool `short:"V" long:"version" description:"Display version information and exit"`
DataDir string `long:"datadir" description:"specified program data dir"`
Reindex bool `long:"reindex" description:"reindex"`
// //Set -discover=0 in regtest framework
// Discover int `long:"discover" default:"1" description:"Discover own IP addresses (default: 1 when listening and no -externalip or -proxy) "`
RegTest bool `long:"regtest" description:"initiate regtest"`
TestNet bool `long:"testnet" description:"initiate testnet"`
UtxoHashStartHeigh int32 `long:"utxohashstartheight" default:"-1" description:"Which height begin logging out the utxos hash at"`
UtxoHashEndHeigh int32 `long:"utxohashendheight" default:"-1" description:"Which height finish logging out the utxos hash at"`
Whitelists []string `long:"whitelist" description:"whitelist"`
Excessiveblocksize uint64 `long:"excessiveblocksize" default:"32000000" description:"excessive block size"`
BanScore uint32 `long:"banscore" default:"100" description:"Threshold for disconnecting misbehaving peers"`
ReplayProtectionActivationTime int64 `long:"replayprotectionactivationtime" default:"-1"`
MagneticAnomalyTime int64 `long:"magneticanomalyactivationtime" default:"-1"`
StopAtHeight int32 `long:"stopatheight" default:"-1"`
PromiscuousMempoolFlags string `long:"promiscuousmempoolflags"`
Limitancestorcount int `long:"limitancestorcount" default:"50000"`
BlockVersion int32 `long:"blockversion" default:"-1" description:"regtest block version"`
MaxMempool int64 `long:"maxmempool" default:"300000000"`
SpendZeroConfChange uint8 `long:"spendzeroconfchange" default:"1"`
MaxTimeAdjustment uint64 `long:"maxtimeadjustment" default:"4200" description:"Maximum allowed median peer time offset adjustment. Local perspective of time may be influenced by peers forward or backward by this amount."`
MinimumChainWork string `long:"minimumchainwork"`
AssumeValid string `long:"assumevalid"`
}
func InitArgs(args []string) (*Opts, error) {
opts := new(Opts)
_, err := flags.NewParser(opts, flags.Default|flags.IgnoreUnknown).ParseArgs(args)
if err == nil {
if !opts.RegTest {
return strictParseArgs(err, args)
}
}
return opts, err
}
func strictParseArgs(err error, args []string) (*Opts, error) {
opts := new(Opts)
_, err = flags.NewParser(opts, flags.Default).ParseArgs(args)
if flasgErr, ok := err.(*flags.Error); ok && flasgErr.Type == flags.ErrHelp {
os.Exit(0)
}
return opts, err
}
func (opts *Opts) String() string {
return fmt.Sprintf("datadir:%s regtest:%v testnet:%v", opts.DataDir, opts.RegTest, opts.TestNet)
}