Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3-config
Commits
297b85cb
Commit
297b85cb
authored
Jun 15, 2020
by
Steven Allen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add WithDefault for flag/priority
This makes it easier to resolve these fields.
parent
a3038592
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
66 additions
and
0 deletions
+66
-0
types.go
types.go
+30
-0
types_test.go
types_test.go
+36
-0
No files found.
types.go
View file @
297b85cb
...
@@ -55,6 +55,19 @@ const (
...
@@ -55,6 +55,19 @@ const (
True
Flag
=
1
True
Flag
=
1
)
)
func
(
f
Flag
)
WithDefault
(
defaultValue
bool
)
bool
{
switch
f
{
case
False
:
return
false
case
Default
:
return
defaultValue
case
True
:
return
true
default
:
panic
(
fmt
.
Sprintf
(
"invalid flag value %d"
,
f
))
}
}
func
(
f
Flag
)
MarshalJSON
()
([]
byte
,
error
)
{
func
(
f
Flag
)
MarshalJSON
()
([]
byte
,
error
)
{
switch
f
{
switch
f
{
case
Default
:
case
Default
:
...
@@ -110,6 +123,23 @@ const (
...
@@ -110,6 +123,23 @@ const (
Disabled
Priority
=
-
1
Disabled
Priority
=
-
1
)
)
// WithDefault resolves the priority with the given default.
//
// If `defaultPriority` is Default/0, this function will return 0.
func
(
p
Priority
)
WithDefault
(
defaultPriority
Priority
)
(
priority
int64
,
enabled
bool
)
{
switch
p
{
case
Disabled
:
return
0
,
false
case
DefaultPriority
:
if
defaultPriority
<
0
{
return
0
,
false
}
return
int64
(
defaultPriority
),
true
default
:
return
int64
(
p
),
true
}
}
func
(
p
Priority
)
MarshalJSON
()
([]
byte
,
error
)
{
func
(
p
Priority
)
MarshalJSON
()
([]
byte
,
error
)
{
// > 0 == Priority
// > 0 == Priority
if
p
>
0
{
if
p
>
0
{
...
...
types_test.go
View file @
297b85cb
...
@@ -91,6 +91,30 @@ func TestFlag(t *testing.T) {
...
@@ -91,6 +91,30 @@ func TestFlag(t *testing.T) {
t
.
Errorf
(
"expected default flag to be %q, got %q"
,
Default
,
defaultFlag
)
t
.
Errorf
(
"expected default flag to be %q, got %q"
,
Default
,
defaultFlag
)
}
}
if
defaultFlag
.
WithDefault
(
true
)
!=
true
{
t
.
Error
(
"expected default & true to be true"
)
}
if
defaultFlag
.
WithDefault
(
false
)
!=
false
{
t
.
Error
(
"expected default & false to be false"
)
}
if
True
.
WithDefault
(
false
)
!=
true
{
t
.
Error
(
"default should only apply to default"
)
}
if
False
.
WithDefault
(
true
)
!=
false
{
t
.
Error
(
"default should only apply to default"
)
}
if
True
.
WithDefault
(
true
)
!=
true
{
t
.
Error
(
"true & true is true"
)
}
if
False
.
WithDefault
(
true
)
!=
false
{
t
.
Error
(
"false & false is false"
)
}
for
jsonStr
,
goValue
:=
range
map
[
string
]
Flag
{
for
jsonStr
,
goValue
:=
range
map
[
string
]
Flag
{
"null"
:
Default
,
"null"
:
Default
,
"true"
:
True
,
"true"
:
True
,
...
@@ -135,6 +159,18 @@ func TestPriority(t *testing.T) {
...
@@ -135,6 +159,18 @@ func TestPriority(t *testing.T) {
t
.
Errorf
(
"expected default priority to be %q, got %q"
,
DefaultPriority
,
defaultPriority
)
t
.
Errorf
(
"expected default priority to be %q, got %q"
,
DefaultPriority
,
defaultPriority
)
}
}
if
_
,
ok
:=
defaultPriority
.
WithDefault
(
Disabled
);
ok
{
t
.
Error
(
"should have been disabled"
)
}
if
p
,
ok
:=
defaultPriority
.
WithDefault
(
1
);
!
ok
||
p
!=
1
{
t
.
Errorf
(
"priority should have been 1, got %d"
,
p
)
}
if
p
,
ok
:=
defaultPriority
.
WithDefault
(
DefaultPriority
);
!
ok
||
p
!=
0
{
t
.
Errorf
(
"priority should have been 0, got %d"
,
p
)
}
for
jsonStr
,
goValue
:=
range
map
[
string
]
Priority
{
for
jsonStr
,
goValue
:=
range
map
[
string
]
Priority
{
"null"
:
DefaultPriority
,
"null"
:
DefaultPriority
,
"false"
:
Disabled
,
"false"
:
Disabled
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment