@@ -20,7 +20,6 @@ import (
20
20
"encoding"
21
21
"errors"
22
22
"flag"
23
- "fmt"
24
23
"math/big"
25
24
"os"
26
25
"os/user"
@@ -34,33 +33,44 @@ import (
34
33
// Custom type which is registered in the flags library which cli uses for
35
34
// argument parsing. This allows us to expand Value to an absolute path when
36
35
// the argument is parsed
37
- type DirectoryString struct {
38
- Value string
39
- }
36
+ type DirectoryString string
40
37
41
- func (self * DirectoryString ) String () string {
42
- return self . Value
38
+ func (s * DirectoryString ) String () string {
39
+ return string ( * s )
43
40
}
44
41
45
- func (self * DirectoryString ) Set (value string ) error {
46
- self . Value = expandPath (value )
42
+ func (s * DirectoryString ) Set (value string ) error {
43
+ * s = DirectoryString ( expandPath (value ) )
47
44
return nil
48
45
}
49
46
50
47
// Custom cli.Flag type which expand the received string to an absolute path.
51
48
// e.g. ~/.ethereum -> /home/username/.ethereum
52
49
type DirectoryFlag struct {
53
- Name string
54
- Value DirectoryString
55
- Usage string
50
+ Name string
51
+ Value DirectoryString
52
+ Usage string
53
+ EnvVar string
56
54
}
57
55
58
- func (self DirectoryFlag ) String () string {
59
- fmtString := "%s %v\t %v"
60
- if len (self .Value .Value ) > 0 {
61
- fmtString = "%s \" %v\" \t %v"
62
- }
63
- return fmt .Sprintf (fmtString , prefixedNames (self .Name ), self .Value .Value , self .Usage )
56
+ func (f DirectoryFlag ) String () string {
57
+ return cli .FlagStringer (f )
58
+ }
59
+
60
+ // called by cli library, grabs variable from environment (if in env)
61
+ // and adds variable to flag set for parsing.
62
+ func (f DirectoryFlag ) Apply (set * flag.FlagSet ) {
63
+ eachName (f .Name , func (name string ) {
64
+ set .Var (& f .Value , f .Name , f .Usage )
65
+ })
66
+ }
67
+
68
+ func (f DirectoryFlag ) GetName () string {
69
+ return f .Name
70
+ }
71
+
72
+ func (f * DirectoryFlag ) Set (value string ) {
73
+ f .Value .Set (value )
64
74
}
65
75
66
76
func eachName (longName string , fn func (string )) {
@@ -71,14 +81,6 @@ func eachName(longName string, fn func(string)) {
71
81
}
72
82
}
73
83
74
- // called by cli library, grabs variable from environment (if in env)
75
- // and adds variable to flag set for parsing.
76
- func (self DirectoryFlag ) Apply (set * flag.FlagSet ) {
77
- eachName (self .Name , func (name string ) {
78
- set .Var (& self .Value , self .Name , self .Usage )
79
- })
80
- }
81
-
82
84
type TextMarshaler interface {
83
85
encoding.TextMarshaler
84
86
encoding.TextUnmarshaler
@@ -103,17 +105,18 @@ func (v textMarshalerVal) Set(s string) error {
103
105
104
106
// TextMarshalerFlag wraps a TextMarshaler value.
105
107
type TextMarshalerFlag struct {
106
- Name string
107
- Value TextMarshaler
108
- Usage string
108
+ Name string
109
+ Value TextMarshaler
110
+ Usage string
111
+ EnvVar string
109
112
}
110
113
111
114
func (f TextMarshalerFlag ) GetName () string {
112
115
return f .Name
113
116
}
114
117
115
118
func (f TextMarshalerFlag ) String () string {
116
- return fmt . Sprintf ( "%s \" %v \" \t %v" , prefixedNames ( f . Name ), f . Value , f . Usage )
119
+ return cli . FlagStringer ( f )
117
120
}
118
121
119
122
func (f TextMarshalerFlag ) Apply (set * flag.FlagSet ) {
@@ -134,9 +137,10 @@ func GlobalTextMarshaler(ctx *cli.Context, name string) TextMarshaler {
134
137
// BigFlag is a command line flag that accepts 256 bit big integers in decimal or
135
138
// hexadecimal syntax.
136
139
type BigFlag struct {
137
- Name string
138
- Value * big.Int
139
- Usage string
140
+ Name string
141
+ Value * big.Int
142
+ Usage string
143
+ EnvVar string
140
144
}
141
145
142
146
// bigValue turns *big.Int into a flag.Value
@@ -163,11 +167,7 @@ func (f BigFlag) GetName() string {
163
167
}
164
168
165
169
func (f BigFlag ) String () string {
166
- fmtString := "%s %v\t %v"
167
- if f .Value != nil {
168
- fmtString = "%s \" %v\" \t %v"
169
- }
170
- return fmt .Sprintf (fmtString , prefixedNames (f .Name ), f .Value , f .Usage )
170
+ return cli .FlagStringer (f )
171
171
}
172
172
173
173
func (f BigFlag ) Apply (set * flag.FlagSet ) {
@@ -207,14 +207,6 @@ func prefixedNames(fullName string) (prefixed string) {
207
207
return
208
208
}
209
209
210
- func (self DirectoryFlag ) GetName () string {
211
- return self .Name
212
- }
213
-
214
- func (self * DirectoryFlag ) Set (value string ) {
215
- self .Value .Value = value
216
- }
217
-
218
210
// Expands a file path
219
211
// 1. replace tilde with users home dir
220
212
// 2. expands embedded environment variables
0 commit comments