Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
bde95077
提交
bde95077
authored
10月 27, 2018
作者:
Overbool
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
commands/boostrap: use new cmds
License: MIT Signed-off-by:
Overbool
<
overbool.xu@gmail.com
>
上级
887be024
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
70 行增加
和
162 行删除
+70
-162
bootstrap.go
core/commands/bootstrap.go
+69
-161
root.go
core/commands/root.go
+1
-1
没有找到文件。
core/commands/bootstrap.go
浏览文件 @
bde95077
package
commands
import
(
"bytes"
"errors"
"io"
"sort"
cmds
"github.com/ipfs/go-ipfs/commands"
e
"github.com/ipfs/go-ipfs/core/commands/e"
oldcmds
"github.com/ipfs/go-ipfs/commands"
repo
"github.com/ipfs/go-ipfs/repo"
"github.com/ipfs/go-ipfs/repo/fsrepo"
fsrepo
"github.com/ipfs/go-ipfs/repo/fsrepo"
cmds
"gx/ipfs/QmSXUokcP4TJpFfqozT69AVAYRtzXVMUjzQVkYX41R9Svs/go-ipfs-cmds"
config
"gx/ipfs/QmbK4EmM2Xx5fmbqK38TGP3PpY66r3tkXLZTcc7dF9mFwM/go-ipfs-config"
"gx/ipfs/Qmde5VP1qUkyQXKCfmEUA7bP64V2HAptbJ7phuPp7jXWwg/go-ipfs-cmdkit"
)
...
...
@@ -30,7 +29,7 @@ Running 'ipfs bootstrap' with no arguments will run 'ipfs bootstrap list'.
},
Run
:
bootstrapListCmd
.
Run
,
Marshalers
:
bootstrapListCmd
.
Marshal
ers
,
Encoders
:
bootstrapListCmd
.
Encod
ers
,
Type
:
bootstrapListCmd
.
Type
,
Subcommands
:
map
[
string
]
*
cmds
.
Command
{
...
...
@@ -63,78 +62,54 @@ in the bootstrap list).
"default"
:
bootstrapAddDefaultCmd
,
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
deflt
,
_
,
err
:=
req
.
Option
(
defaultOptionName
)
.
Bool
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
}
Run
:
func
(
req
*
cmds
.
Request
,
res
cmds
.
ResponseEmitter
,
env
cmds
.
Environment
)
error
{
deflt
,
_
:=
req
.
Options
[
defaultOptionName
]
.
(
bool
)
var
inputPeers
[]
config
.
BootstrapPeer
if
deflt
{
// parse separately for meaningful, correct error.
defltPeers
,
err
:=
config
.
DefaultBootstrapPeers
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
inputPeers
=
defltPeers
}
else
{
parsedPeers
,
err
:=
config
.
ParseBootstrapPeers
(
req
.
Arguments
()
)
parsedPeers
,
err
:=
config
.
ParseBootstrapPeers
(
req
.
Arguments
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
inputPeers
=
parsedPeers
}
if
len
(
inputPeers
)
==
0
{
res
.
SetError
(
errors
.
New
(
"no bootstrap peers to add"
),
cmdkit
.
ErrClient
)
return
return
errors
.
New
(
"no bootstrap peers to add"
)
}
r
,
err
:=
fsrepo
.
Open
(
req
.
InvocContext
()
.
ConfigRoot
)
ctx
:=
env
.
(
*
oldcmds
.
Context
)
r
,
err
:=
fsrepo
.
Open
(
ctx
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
defer
r
.
Close
()
cfg
,
err
:=
r
.
Config
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
added
,
err
:=
bootstrapAdd
(
r
,
cfg
,
inputPeers
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
re
s
.
SetOutpu
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
added
)})
re
turn
res
.
Emi
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
added
)})
},
Type
:
BootstrapOutput
{},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
func
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
v
,
err
:=
unwrapOutput
(
res
.
Output
())
if
err
!=
nil
{
return
nil
,
err
}
out
,
ok
:=
v
.
(
*
BootstrapOutput
)
if
!
ok
{
return
nil
,
e
.
TypeErr
(
out
,
v
)
}
buf
:=
new
(
bytes
.
Buffer
)
if
err
:=
bootstrapWritePeers
(
buf
,
"added "
,
out
.
Peers
);
err
!=
nil
{
return
nil
,
err
}
return
buf
,
nil
},
Encoders
:
cmds
.
EncoderMap
{
cmds
.
Text
:
cmds
.
MakeTypedEncoder
(
func
(
req
*
cmds
.
Request
,
w
io
.
Writer
,
out
*
BootstrapOutput
)
error
{
return
bootstrapWritePeers
(
w
,
"added "
,
out
.
Peers
)
}),
},
}
...
...
@@ -144,54 +119,36 @@ var bootstrapAddDefaultCmd = &cmds.Command{
ShortDescription
:
`Outputs a list of peers that were added (that weren't already
in the bootstrap list).`
,
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
Run
:
func
(
req
*
cmds
.
Request
,
res
cmds
.
ResponseEmitter
,
env
cmds
.
Environment
)
error
{
defltPeers
,
err
:=
config
.
DefaultBootstrapPeers
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
r
,
err
:=
fsrepo
.
Open
(
req
.
InvocContext
()
.
ConfigRoot
)
ctx
:=
env
.
(
*
oldcmds
.
Context
)
r
,
err
:=
fsrepo
.
Open
(
ctx
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
defer
r
.
Close
()
cfg
,
err
:=
r
.
Config
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
added
,
err
:=
bootstrapAdd
(
r
,
cfg
,
defltPeers
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
re
s
.
SetOutpu
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
added
)})
re
turn
res
.
Emi
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
added
)})
},
Type
:
BootstrapOutput
{},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
func
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
v
,
err
:=
unwrapOutput
(
res
.
Output
())
if
err
!=
nil
{
return
nil
,
err
}
out
,
ok
:=
v
.
(
*
BootstrapOutput
)
if
!
ok
{
return
nil
,
e
.
TypeErr
(
out
,
v
)
}
buf
:=
new
(
bytes
.
Buffer
)
if
err
:=
bootstrapWritePeers
(
buf
,
"added "
,
out
.
Peers
);
err
!=
nil
{
return
nil
,
err
}
return
buf
,
nil
},
Encoders
:
cmds
.
EncoderMap
{
cmds
.
Text
:
cmds
.
MakeTypedEncoder
(
func
(
req
*
cmds
.
Request
,
w
io
.
Writer
,
out
*
BootstrapOutput
)
error
{
return
bootstrapWritePeers
(
w
,
"added "
,
out
.
Peers
)
}),
},
}
...
...
@@ -215,61 +172,42 @@ var bootstrapRemoveCmd = &cmds.Command{
Subcommands
:
map
[
string
]
*
cmds
.
Command
{
"all"
:
bootstrapRemoveAllCmd
,
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
all
,
_
,
err
:=
req
.
Option
(
bootstrapAllOptionName
)
.
Bool
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
}
Run
:
func
(
req
*
cmds
.
Request
,
res
cmds
.
ResponseEmitter
,
env
cmds
.
Environment
)
error
{
all
,
_
:=
req
.
Options
[
bootstrapAllOptionName
]
.
(
bool
)
r
,
err
:=
fsrepo
.
Open
(
req
.
InvocContext
()
.
ConfigRoot
)
ctx
:=
env
.
(
*
oldcmds
.
Context
)
r
,
err
:=
fsrepo
.
Open
(
ctx
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
defer
r
.
Close
()
cfg
,
err
:=
r
.
Config
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
var
removed
[]
config
.
BootstrapPeer
if
all
{
removed
,
err
=
bootstrapRemoveAll
(
r
,
cfg
)
}
else
{
input
,
perr
:=
config
.
ParseBootstrapPeers
(
req
.
Arguments
()
)
input
,
perr
:=
config
.
ParseBootstrapPeers
(
req
.
Arguments
)
if
perr
!=
nil
{
res
.
SetError
(
perr
,
cmdkit
.
ErrNormal
)
return
return
err
}
removed
,
err
=
bootstrapRemove
(
r
,
cfg
,
input
)
}
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
re
s
.
SetOutpu
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
removed
)})
re
turn
res
.
Emi
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
removed
)})
},
Type
:
BootstrapOutput
{},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
func
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
v
,
err
:=
unwrapOutput
(
res
.
Output
())
if
err
!=
nil
{
return
nil
,
err
}
out
,
ok
:=
v
.
(
*
BootstrapOutput
)
if
!
ok
{
return
nil
,
e
.
TypeErr
(
out
,
v
)
}
buf
:=
new
(
bytes
.
Buffer
)
err
=
bootstrapWritePeers
(
buf
,
"removed "
,
out
.
Peers
)
return
buf
,
err
},
Encoders
:
cmds
.
EncoderMap
{
cmds
.
Text
:
cmds
.
MakeTypedEncoder
(
func
(
req
*
cmds
.
Request
,
w
io
.
Writer
,
out
*
BootstrapOutput
)
error
{
return
bootstrapWritePeers
(
w
,
"removed "
,
out
.
Peers
)
}),
},
}
...
...
@@ -279,44 +217,30 @@ var bootstrapRemoveAllCmd = &cmds.Command{
ShortDescription
:
`Outputs the list of peers that were removed.`
,
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
r
,
err
:=
fsrepo
.
Open
(
req
.
InvocContext
()
.
ConfigRoot
)
Run
:
func
(
req
*
cmds
.
Request
,
res
cmds
.
ResponseEmitter
,
env
cmds
.
Environment
)
error
{
ctx
:=
env
.
(
*
oldcmds
.
Context
)
r
,
err
:=
fsrepo
.
Open
(
ctx
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
defer
r
.
Close
()
cfg
,
err
:=
r
.
Config
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
removed
,
err
:=
bootstrapRemoveAll
(
r
,
cfg
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
re
s
.
SetOutpu
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
removed
)})
re
turn
res
.
Emi
t
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
removed
)})
},
Type
:
BootstrapOutput
{},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
func
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
v
,
err
:=
unwrapOutput
(
res
.
Output
())
if
err
!=
nil
{
return
nil
,
err
}
out
,
ok
:=
v
.
(
*
BootstrapOutput
)
if
!
ok
{
return
nil
,
e
.
TypeErr
(
out
,
v
)
}
buf
:=
new
(
bytes
.
Buffer
)
err
=
bootstrapWritePeers
(
buf
,
"removed "
,
out
.
Peers
)
return
buf
,
err
},
Encoders
:
cmds
.
EncoderMap
{
cmds
.
Text
:
cmds
.
MakeTypedEncoder
(
func
(
req
*
cmds
.
Request
,
w
io
.
Writer
,
out
*
BootstrapOutput
)
error
{
return
bootstrapWritePeers
(
w
,
"removed "
,
out
.
Peers
)
}),
},
}
...
...
@@ -326,50 +250,34 @@ var bootstrapListCmd = &cmds.Command{
ShortDescription
:
"Peers are output in the format '<multiaddr>/<peerID>'."
,
},
Run
:
func
(
req
cmds
.
Request
,
res
cmds
.
Response
)
{
r
,
err
:=
fsrepo
.
Open
(
req
.
InvocContext
()
.
ConfigRoot
)
Run
:
func
(
req
*
cmds
.
Request
,
res
cmds
.
ResponseEmitter
,
env
cmds
.
Environment
)
error
{
ctx
:=
env
.
(
*
oldcmds
.
Context
)
r
,
err
:=
fsrepo
.
Open
(
ctx
.
ConfigRoot
)
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
defer
r
.
Close
()
cfg
,
err
:=
r
.
Config
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
peers
,
err
:=
cfg
.
BootstrapPeers
()
if
err
!=
nil
{
res
.
SetError
(
err
,
cmdkit
.
ErrNormal
)
return
return
err
}
res
.
SetOutput
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
peers
)})
return
res
.
Emit
(
&
BootstrapOutput
{
config
.
BootstrapPeerStrings
(
peers
)})
},
Type
:
BootstrapOutput
{},
Marshalers
:
cmds
.
MarshalerMap
{
cmds
.
Text
:
bootstrapMarshaler
,
Encoders
:
cmds
.
EncoderMap
{
cmds
.
Text
:
cmds
.
MakeTypedEncoder
(
func
(
req
*
cmds
.
Request
,
w
io
.
Writer
,
out
*
BootstrapOutput
)
error
{
return
bootstrapWritePeers
(
w
,
""
,
out
.
Peers
)
}),
},
}
func
bootstrapMarshaler
(
res
cmds
.
Response
)
(
io
.
Reader
,
error
)
{
v
,
err
:=
unwrapOutput
(
res
.
Output
())
if
err
!=
nil
{
return
nil
,
err
}
out
,
ok
:=
v
.
(
*
BootstrapOutput
)
if
!
ok
{
return
nil
,
e
.
TypeErr
(
out
,
v
)
}
buf
:=
new
(
bytes
.
Buffer
)
err
=
bootstrapWritePeers
(
buf
,
""
,
out
.
Peers
)
return
buf
,
err
}
func
bootstrapWritePeers
(
w
io
.
Writer
,
prefix
string
,
peers
[]
string
)
error
{
sort
.
Stable
(
sort
.
StringSlice
(
peers
))
for
_
,
peer
:=
range
peers
{
_
,
err
:=
w
.
Write
([]
byte
(
prefix
+
peer
+
"
\n
"
))
...
...
core/commands/root.go
浏览文件 @
bde95077
...
...
@@ -122,7 +122,7 @@ var rootSubcommands = map[string]*cmds.Command{
"pubsub"
:
PubsubCmd
,
"repo"
:
RepoCmd
,
"stats"
:
StatsCmd
,
"bootstrap"
:
lgc
.
NewCommand
(
BootstrapCmd
)
,
"bootstrap"
:
BootstrapCmd
,
"config"
:
ConfigCmd
,
"dag"
:
dag
.
DagCmd
,
"dht"
:
DhtCmd
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论