1.调试入口
在go-ipfs/cmd/ipfs/runmain_test中加上参数,开始调试
args := []string{"add","./init.go"}
2.进入core
在go-ipfs/core/add.go 里面有add命令的执行函数AddCmd,主要有prerun,run和postrun,如果调试的时候没有开启ipfs daemon,那么这三个函数均在本地执行,如果这个时候开启了daemon,本地执行的是prerun,postrun。而run则由daemon来执行。其中run和postrun是并发执行的(详见ipfs/go-ipfs-cmds/exector.go),如下图
3.add命令参数
add命令参数很多,prerun和run里面大部分都是进行参数初始化的操作。
4.api add
for addit.Next() {
_, dir := addit.Node().(files.Directory)
go func() {
var err error
defer close(events)
_, err = api.Unixfs().Add(req.Context, addit.Node(), opts...)
errCh <- err
}()
for event :=