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-unixfs
Commits
2806260f
Commit
2806260f
authored
Oct 18, 2014
by
Henry
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use inconshreveable's go-update to check for updates
parent
1e623f88
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
66 deletions
+23
-66
cmd/ipfs/ipfs.go
cmd/ipfs/ipfs.go
+10
-10
updates/updates.go
updates/updates.go
+13
-56
No files found.
cmd/ipfs/ipfs.go
View file @
2806260f
...
...
@@ -7,6 +7,7 @@ import (
"runtime/pprof"
flag
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/gonuts/flag"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/inconshreveable/go-update/check"
commander
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/commander"
ma
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr"
...
...
@@ -126,18 +127,17 @@ func localNode(confdir string, online bool) (*core.IpfsNode, error) {
}
if
cfg
.
Version
.
ShouldCheckForUpdate
()
{
obsolete
:=
updates
.
CheckForUpdate
s
()
if
obsolete
!=
nil
{
if
cfg
.
Version
.
Check
==
config
.
CheckError
{
return
nil
,
obsolete
}
_
,
err
:=
updates
.
CheckForUpdate
()
if
err
!=
nil
{
if
err
!=
check
.
NoUpdateAvailable
{
log
.
Error
(
"Error while checking for update: %v
\n
"
,
err
)
return
nil
,
err
// when "warn" version.check mode we just show warning message
log
.
Warning
(
fmt
.
Sprintf
(
"%v"
,
obsolete
))
}
else
{
// update most recent check timestamp in config
config
.
RecordUpdateCheck
(
cfg
,
filename
)
}
log
.
Notice
(
"No update available"
)
}
config
.
RecordUpdateCheck
(
cfg
,
filename
)
}
return
core
.
NewIpfsNode
(
cfg
,
online
)
...
...
updates/updates.go
View file @
2806260f
package
updates
import
(
"encoding/json"
"fmt"
"net/http"
"os"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/coreos/go-semver/semver"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/inconshreveable/go-update"
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/inconshreveable/go-update/check"
u
"github.com/jbenet/go-ipfs/util"
)
const
(
Version
=
"0.1.0"
// actual current application's version literal
EndpointURLLatestReleases
=
"https://api.github.com/repos/jbenet/go-ipfs/tags"
VersionErrorShort
=
`Warning: You are running version %s of go-ipfs. The latest version is %s.`
VersionErrorLong
=
`
Warning: You are running version %s of go-ipfs. The latest version is %s.
Since this is alpha software, it is strongly recommended you update.
You can update go-ipfs by running
ipfs version update
You can silence this message by running
ipfs config update.check ignore
`
Version
=
"0.1.0"
// actual current application's version literal
UpdateEndpointURL
=
"https://api.equinox.io/1/Updates"
UpdateAppID
=
"ap_ywkPmAR40q4EfdikN9Jh2hgIHi"
)
var
log
=
u
.
Logger
(
"updates"
)
...
...
@@ -45,42 +31,13 @@ func init() {
func
parseVersion
()
(
*
semver
.
Version
,
error
)
{
return
semver
.
NewVersion
(
Version
)
}
func
CheckForUpdates
()
error
{
resp
,
err
:=
http
.
Get
(
EndpointURLLatestReleases
)
if
err
!=
nil
{
// can't reach the endpoint, coud be firewall, or no internet connection or something else
log
.
Error
(
"update check: error connecting to API endpoint for newer versions: %v"
,
err
)
return
nil
}
var
body
interface
{}
_
=
json
.
NewDecoder
(
resp
.
Body
)
.
Decode
(
&
body
)
releases
,
ok
:=
body
.
([]
interface
{})
if
!
ok
{
// the response body does not seem to meet specified Github API format
// https://developer.github.com/v3/repos/#list-tags
log
.
Error
(
"update check: API endpoint for newer versions does not seem to be in Github API specified format"
)
return
nil
}
for
_
,
r
:=
range
releases
{
release
,
ok
:=
r
.
(
map
[
string
]
interface
{})
if
!
ok
{
continue
}
tagName
,
ok
:=
release
[
"name"
]
.
(
string
)
if
!
ok
{
continue
}
if
len
(
tagName
)
>
0
&&
tagName
[
0
]
==
'v'
{
// both 'v0.1.0' and '0.1.0' semver tagname conventions can be encountered
tagName
=
tagName
[
1
:
]
}
releaseVersion
,
err
:=
semver
.
NewVersion
(
tagName
)
if
err
!=
nil
{
continue
}
if
currentVersion
.
LessThan
(
*
releaseVersion
)
{
return
fmt
.
Errorf
(
VersionErrorLong
,
Version
,
tagName
)
}
func
CheckForUpdate
()
(
*
check
.
Result
,
error
)
{
param
:=
check
.
Params
{
AppVersion
:
Version
,
AppId
:
UpdateAppID
,
Channel
:
"stable"
,
}
return
nil
return
param
.
CheckForUpdate
(
UpdateEndpointURL
,
update
.
New
())
}
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