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
Commits
afec2d3d
Commit
afec2d3d
authored
Oct 09, 2014
by
Juan Batiz-Benet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vendored go-semver
parent
b60f0d58
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
418 additions
and
1 deletion
+418
-1
Godeps/Godeps.json
Godeps/Godeps.json
+4
-0
Godeps/_workspace/src/github.com/coreos/go-semver/semver/semver.go
...orkspace/src/github.com/coreos/go-semver/semver/semver.go
+202
-0
Godeps/_workspace/src/github.com/coreos/go-semver/semver/semver_test.go
...ace/src/github.com/coreos/go-semver/semver/semver_test.go
+187
-0
Godeps/_workspace/src/github.com/coreos/go-semver/semver/sort.go
..._workspace/src/github.com/coreos/go-semver/semver/sort.go
+24
-0
updates/updates.go
updates/updates.go
+1
-1
No files found.
Godeps/Godeps.json
View file @
afec2d3d
...
...
@@ -46,6 +46,10 @@
"ImportPath"
:
"github.com/camlistore/lock"
,
"Rev"
:
"ae27720f340952636b826119b58130b9c1a847a0"
},
{
"ImportPath"
:
"github.com/coreos/go-semver/semver"
,
"Rev"
:
"6fe83ccda8fb9b7549c9ab4ba47f47858bc950aa"
},
{
"ImportPath"
:
"github.com/gonuts/flag"
,
"Rev"
:
"741a6cbd37a30dedc93f817e7de6aaf0ca38a493"
...
...
Godeps/_workspace/src/github.com/coreos/go-semver/semver/semver.go
0 → 100644
View file @
afec2d3d
package
semver
import
(
"bytes"
"errors"
"fmt"
"strconv"
"strings"
)
type
Version
struct
{
Major
int64
Minor
int64
Patch
int64
PreRelease
PreRelease
Metadata
string
}
type
PreRelease
string
func
splitOff
(
input
*
string
,
delim
string
)
(
val
string
)
{
parts
:=
strings
.
SplitN
(
*
input
,
delim
,
2
)
if
len
(
parts
)
==
2
{
*
input
=
parts
[
0
]
val
=
parts
[
1
]
}
return
val
}
func
NewVersion
(
version
string
)
(
*
Version
,
error
)
{
v
:=
Version
{}
dotParts
:=
strings
.
SplitN
(
version
,
"."
,
3
)
if
len
(
dotParts
)
!=
3
{
return
nil
,
errors
.
New
(
fmt
.
Sprintf
(
"%s is not in dotted-tri format"
,
version
))
}
v
.
Metadata
=
splitOff
(
&
dotParts
[
2
],
"+"
)
v
.
PreRelease
=
PreRelease
(
splitOff
(
&
dotParts
[
2
],
"-"
))
parsed
:=
make
([]
int64
,
3
,
3
)
for
i
,
v
:=
range
dotParts
[
:
3
]
{
val
,
err
:=
strconv
.
ParseInt
(
v
,
10
,
64
)
parsed
[
i
]
=
val
if
err
!=
nil
{
return
nil
,
err
}
}
v
.
Major
=
parsed
[
0
]
v
.
Minor
=
parsed
[
1
]
v
.
Patch
=
parsed
[
2
]
return
&
v
,
nil
}
func
(
v
*
Version
)
String
()
string
{
var
buffer
bytes
.
Buffer
base
:=
fmt
.
Sprintf
(
"%d.%d.%d"
,
v
.
Major
,
v
.
Minor
,
v
.
Patch
)
buffer
.
WriteString
(
base
)
if
v
.
PreRelease
!=
""
{
buffer
.
WriteString
(
fmt
.
Sprintf
(
"-%s"
,
v
.
PreRelease
))
}
if
v
.
Metadata
!=
""
{
buffer
.
WriteString
(
fmt
.
Sprintf
(
"+%s"
,
v
.
Metadata
))
}
return
buffer
.
String
()
}
func
(
v
*
Version
)
LessThan
(
versionB
Version
)
bool
{
versionA
:=
*
v
cmp
:=
recursiveCompare
(
versionA
.
Slice
(),
versionB
.
Slice
())
if
cmp
==
0
{
cmp
=
preReleaseCompare
(
versionA
,
versionB
)
}
if
cmp
==
-
1
{
return
true
}
return
false
}
/* Slice converts the comparable parts of the semver into a slice of strings */
func
(
v
*
Version
)
Slice
()
[]
int64
{
return
[]
int64
{
v
.
Major
,
v
.
Minor
,
v
.
Patch
}
}
func
(
p
*
PreRelease
)
Slice
()
[]
string
{
preRelease
:=
string
(
*
p
)
return
strings
.
Split
(
preRelease
,
"."
)
}
func
preReleaseCompare
(
versionA
Version
,
versionB
Version
)
int
{
a
:=
versionA
.
PreRelease
b
:=
versionB
.
PreRelease
/* Handle the case where if two versions are otherwise equal it is the
* one without a PreRelease that is greater */
if
len
(
a
)
==
0
&&
(
len
(
b
)
>
0
)
{
return
1
}
else
if
len
(
b
)
==
0
&&
(
len
(
a
)
>
0
)
{
return
-
1
}
// If there is a prelease, check and compare each part.
return
recursivePreReleaseCompare
(
a
.
Slice
(),
b
.
Slice
())
}
func
recursiveCompare
(
versionA
[]
int64
,
versionB
[]
int64
)
int
{
if
len
(
versionA
)
==
0
{
return
0
}
a
:=
versionA
[
0
]
b
:=
versionB
[
0
]
if
a
>
b
{
return
1
}
else
if
a
<
b
{
return
-
1
}
return
recursiveCompare
(
versionA
[
1
:
],
versionB
[
1
:
])
}
func
recursivePreReleaseCompare
(
versionA
[]
string
,
versionB
[]
string
)
int
{
// Handle slice length disparity.
if
len
(
versionA
)
==
0
{
// Nothing to compare too, so we return 0
return
0
}
else
if
len
(
versionB
)
==
0
{
// We're longer than versionB so return 1.
return
1
}
a
:=
versionA
[
0
]
b
:=
versionB
[
0
]
aInt
:=
false
;
bInt
:=
false
aI
,
err
:=
strconv
.
Atoi
(
versionA
[
0
])
if
err
==
nil
{
aInt
=
true
}
bI
,
err
:=
strconv
.
Atoi
(
versionB
[
0
])
if
err
==
nil
{
bInt
=
true
}
// Handle Integer Comparison
if
aInt
&&
bInt
{
if
aI
>
bI
{
return
1
}
else
if
aI
<
bI
{
return
-
1
}
}
// Handle String Comparison
if
a
>
b
{
return
1
}
else
if
a
<
b
{
return
-
1
}
return
recursivePreReleaseCompare
(
versionA
[
1
:
],
versionB
[
1
:
])
}
// BumpMajor increments the Major field by 1 and resets all other fields to their default values
func
(
v
*
Version
)
BumpMajor
()
{
v
.
Major
+=
1
v
.
Minor
=
0
v
.
Patch
=
0
v
.
PreRelease
=
PreRelease
(
""
)
v
.
Metadata
=
""
}
// BumpMinor increments the Minor field by 1 and resets all other fields to their default values
func
(
v
*
Version
)
BumpMinor
()
{
v
.
Minor
+=
1
v
.
Patch
=
0
v
.
PreRelease
=
PreRelease
(
""
)
v
.
Metadata
=
""
}
// BumpPatch increments the Patch field by 1 and resets all other fields to their default values
func
(
v
*
Version
)
BumpPatch
()
{
v
.
Patch
+=
1
v
.
PreRelease
=
PreRelease
(
""
)
v
.
Metadata
=
""
}
Godeps/_workspace/src/github.com/coreos/go-semver/semver/semver_test.go
0 → 100644
View file @
afec2d3d
package
semver
import
(
"math/rand"
"testing"
"time"
)
type
fixture
struct
{
greaterVersion
string
lesserVersion
string
}
var
fixtures
=
[]
fixture
{
fixture
{
"0.0.0"
,
"0.0.0-foo"
},
fixture
{
"0.0.1"
,
"0.0.0"
},
fixture
{
"1.0.0"
,
"0.9.9"
},
fixture
{
"0.10.0"
,
"0.9.0"
},
fixture
{
"0.99.0"
,
"0.10.0"
},
fixture
{
"2.0.0"
,
"1.2.3"
},
fixture
{
"0.0.0"
,
"0.0.0-foo"
},
fixture
{
"0.0.1"
,
"0.0.0"
},
fixture
{
"1.0.0"
,
"0.9.9"
},
fixture
{
"0.10.0"
,
"0.9.0"
},
fixture
{
"0.99.0"
,
"0.10.0"
},
fixture
{
"2.0.0"
,
"1.2.3"
},
fixture
{
"0.0.0"
,
"0.0.0-foo"
},
fixture
{
"0.0.1"
,
"0.0.0"
},
fixture
{
"1.0.0"
,
"0.9.9"
},
fixture
{
"0.10.0"
,
"0.9.0"
},
fixture
{
"0.99.0"
,
"0.10.0"
},
fixture
{
"2.0.0"
,
"1.2.3"
},
fixture
{
"1.2.3"
,
"1.2.3-asdf"
},
fixture
{
"1.2.3"
,
"1.2.3-4"
},
fixture
{
"1.2.3"
,
"1.2.3-4-foo"
},
fixture
{
"1.2.3-5-foo"
,
"1.2.3-5"
},
fixture
{
"1.2.3-5"
,
"1.2.3-4"
},
fixture
{
"1.2.3-5-foo"
,
"1.2.3-5-Foo"
},
fixture
{
"3.0.0"
,
"2.7.2+asdf"
},
fixture
{
"3.0.0+foobar"
,
"2.7.2"
},
fixture
{
"1.2.3-a.10"
,
"1.2.3-a.5"
},
fixture
{
"1.2.3-a.b"
,
"1.2.3-a.5"
},
fixture
{
"1.2.3-a.b"
,
"1.2.3-a"
},
fixture
{
"1.2.3-a.b.c.10.d.5"
,
"1.2.3-a.b.c.5.d.100"
},
fixture
{
"1.0.0"
,
"1.0.0-rc.1"
},
fixture
{
"1.0.0-rc.2"
,
"1.0.0-rc.1"
},
fixture
{
"1.0.0-rc.1"
,
"1.0.0-beta.11"
},
fixture
{
"1.0.0-beta.11"
,
"1.0.0-beta.2"
},
fixture
{
"1.0.0-beta.2"
,
"1.0.0-beta"
},
fixture
{
"1.0.0-beta"
,
"1.0.0-alpha.beta"
},
fixture
{
"1.0.0-alpha.beta"
,
"1.0.0-alpha.1"
},
fixture
{
"1.0.0-alpha.1"
,
"1.0.0-alpha"
},
}
func
TestCompare
(
t
*
testing
.
T
)
{
for
_
,
v
:=
range
fixtures
{
gt
,
err
:=
NewVersion
(
v
.
greaterVersion
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
lt
,
err
:=
NewVersion
(
v
.
lesserVersion
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
if
gt
.
LessThan
(
*
lt
)
==
true
{
t
.
Errorf
(
"%s should not be less than %s"
,
gt
,
lt
)
}
}
}
func
testString
(
t
*
testing
.
T
,
orig
string
,
version
*
Version
)
{
if
orig
!=
version
.
String
()
{
t
.
Errorf
(
"%s != %s"
,
orig
,
version
)
}
}
func
TestString
(
t
*
testing
.
T
)
{
for
_
,
v
:=
range
fixtures
{
gt
,
err
:=
NewVersion
(
v
.
greaterVersion
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
testString
(
t
,
v
.
greaterVersion
,
gt
)
lt
,
err
:=
NewVersion
(
v
.
lesserVersion
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
testString
(
t
,
v
.
lesserVersion
,
lt
)
}
}
func
shuffleStringSlice
(
src
[]
string
)
[]
string
{
dest
:=
make
([]
string
,
len
(
src
))
rand
.
Seed
(
time
.
Now
()
.
Unix
())
perm
:=
rand
.
Perm
(
len
(
src
))
for
i
,
v
:=
range
perm
{
dest
[
v
]
=
src
[
i
]
}
return
dest
}
func
TestSort
(
t
*
testing
.
T
)
{
sortedVersions
:=
[]
string
{
"1.0.0"
,
"1.0.2"
,
"1.2.0"
,
"3.1.1"
}
unsortedVersions
:=
shuffleStringSlice
(
sortedVersions
)
semvers
:=
[]
*
Version
{}
for
_
,
v
:=
range
unsortedVersions
{
sv
,
err
:=
NewVersion
(
v
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
semvers
=
append
(
semvers
,
sv
)
}
Sort
(
semvers
)
for
idx
,
sv
:=
range
semvers
{
if
sv
.
String
()
!=
sortedVersions
[
idx
]
{
t
.
Fatalf
(
"incorrect sort at index %v"
,
idx
)
}
}
}
func
TestBumpMajor
(
t
*
testing
.
T
)
{
version
,
_
:=
NewVersion
(
"1.0.0"
)
version
.
BumpMajor
()
if
version
.
Major
!=
2
{
t
.
Fatalf
(
"bumping major on 1.0.0 resulted in %v"
,
version
)
}
version
,
_
=
NewVersion
(
"1.5.2"
)
version
.
BumpMajor
()
if
version
.
Minor
!=
0
&&
version
.
Patch
!=
0
{
t
.
Fatalf
(
"bumping major on 1.5.2 resulted in %v"
,
version
)
}
version
,
_
=
NewVersion
(
"1.0.0+build.1-alpha.1"
)
version
.
BumpMajor
()
if
version
.
PreRelease
!=
""
&&
version
.
PreRelease
!=
""
{
t
.
Fatalf
(
"bumping major on 1.0.0+build.1-alpha.1 resulted in %v"
,
version
)
}
}
func
TestBumpMinor
(
t
*
testing
.
T
)
{
version
,
_
:=
NewVersion
(
"1.0.0"
)
version
.
BumpMinor
()
if
version
.
Major
!=
1
{
t
.
Fatalf
(
"bumping minor on 1.0.0 resulted in %v"
,
version
)
}
if
version
.
Minor
!=
1
{
t
.
Fatalf
(
"bumping major on 1.0.0 resulted in %v"
,
version
)
}
version
,
_
=
NewVersion
(
"1.0.0+build.1-alpha.1"
)
version
.
BumpMinor
()
if
version
.
PreRelease
!=
""
&&
version
.
PreRelease
!=
""
{
t
.
Fatalf
(
"bumping major on 1.0.0+build.1-alpha.1 resulted in %v"
,
version
)
}
}
func
TestBumpPatch
(
t
*
testing
.
T
)
{
version
,
_
:=
NewVersion
(
"1.0.0"
)
version
.
BumpPatch
()
if
version
.
Major
!=
1
{
t
.
Fatalf
(
"bumping minor on 1.0.0 resulted in %v"
,
version
)
}
if
version
.
Minor
!=
0
{
t
.
Fatalf
(
"bumping major on 1.0.0 resulted in %v"
,
version
)
}
if
version
.
Patch
!=
1
{
t
.
Fatalf
(
"bumping major on 1.0.0 resulted in %v"
,
version
)
}
version
,
_
=
NewVersion
(
"1.0.0+build.1-alpha.1"
)
version
.
BumpPatch
()
if
version
.
PreRelease
!=
""
&&
version
.
PreRelease
!=
""
{
t
.
Fatalf
(
"bumping major on 1.0.0+build.1-alpha.1 resulted in %v"
,
version
)
}
}
Godeps/_workspace/src/github.com/coreos/go-semver/semver/sort.go
0 → 100644
View file @
afec2d3d
package
semver
import
(
"sort"
)
type
Versions
[]
*
Version
func
(
s
Versions
)
Len
()
int
{
return
len
(
s
)
}
func
(
s
Versions
)
Swap
(
i
,
j
int
)
{
s
[
i
],
s
[
j
]
=
s
[
j
],
s
[
i
]
}
func
(
s
Versions
)
Less
(
i
,
j
int
)
bool
{
return
s
[
i
]
.
LessThan
(
*
s
[
j
])
}
// Sort sorts the given slice of Version
func
Sort
(
versions
[]
*
Version
)
{
sort
.
Sort
(
Versions
(
versions
))
}
updates/updates.go
View file @
afec2d3d
...
...
@@ -6,7 +6,7 @@ import (
"net/http"
"os"
"github.com/coreos/go-semver/semver"
"github.com/
jbenet/go-ipfs/Godeps/_workspace/src/github.com/
coreos/go-semver/semver"
u
"github.com/jbenet/go-ipfs/util"
)
...
...
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