@cryptotaxi247 / kubo / commits / 84101c8a2

go test passes, sharness fails

pass API path to cmds, fix options in add. License: MIT Signed-off-by: keks <keks@cryptoscope.com>

keks committed Dec 1, 2017 at 10:40 UTC 84101c8a2aa45a223492f0aa73a9f863f5686f93
29 files changed +255 -59
cmd/ipfs/daemon.go
+4 -4
@@ -18,16 +18,16 @@ import (
18 corehttp "github.com/ipfs/go-ipfs/core/corehttp"
19 corerepo "github.com/ipfs/go-ipfs/core/corerepo"
20 nodeMount "github.com/ipfs/go-ipfs/fuse/node"
21 - config "github.com/ipfs/go-ipfs/repo/config"
21 + //config "github.com/ipfs/go-ipfs/repo/config"
22 fsrepo "github.com/ipfs/go-ipfs/repo/fsrepo"
23 migrate "github.com/ipfs/go-ipfs/repo/fsrepo/migrations"
24
25 "gx/ipfs/QmSGL5Uoa6gKHgBBwQG8u1CWKUC8ZnwaZiLgFVTFBR2bxr/go-multiaddr-net"
26 mprome "gx/ipfs/QmSk46nSD78YiuNojYMS8NW6hSCjH95JajqqzzoychZgef/go-metrics-prometheus"
27 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
27 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
28 ma "gx/ipfs/QmW8s4zTsUoX1Q6CeYxVKPyqSKbF7H1YDUyTostBtZ8DaG/go-multiaddr"
29 "gx/ipfs/QmX3QZ5jHEPidwUrymXV1iSCSUhdGxj15sm2gP4jKMef7B/client_golang/prometheus"
30 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
31 iconn "gx/ipfs/Qmf82zCaYV8bkztRRoGwwSHVkaYtP2UKBnhpjJz1uFGJjQ/go-libp2p-interface-conn"
32 )
33
@@ -434,8 +434,8 @@ func serveHTTPApi(req *cmds.Request, cctx *oldcmds.Context) (error, <-chan error
434 var opts = []corehttp.ServeOption{
435 corehttp.MetricsCollectionOption("api"),
436 corehttp.CommandsOption(*cctx),
437 - corehttp.CheckVersionOption(),
438 - corehttp.ServerNameOption("go-ipfs/" + config.CurrentVersionNumber),
437 + //corehttp.CheckVersionOption(),
438 + //corehttp.ServerNameOption("go-ipfs/" + config.CurrentVersionNumber),
439 corehttp.WebUIOption,
440 gatewayOpt,
441 corehttp.VersionOption(),
cmd/ipfs/ipfs.go
+1 -1
@@ -6,7 +6,7 @@ import (
6 commands "github.com/ipfs/go-ipfs/core/commands"
7
8 lgc "github.com/ipfs/go-ipfs/commands/legacy"
9 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
9 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
10 )
11
12 // This is the CLI root, used for executing commands accessible to CLI clients.
cmd/ipfs/main.go
+9 -8
@@ -21,6 +21,7 @@ import (
21 oldcmds "github.com/ipfs/go-ipfs/commands"
22 core "github.com/ipfs/go-ipfs/core"
23 coreCmds "github.com/ipfs/go-ipfs/core/commands"
24 + corehttp "github.com/ipfs/go-ipfs/core/corehttp"
25 "github.com/ipfs/go-ipfs/plugin/loader"
26 repo "github.com/ipfs/go-ipfs/repo"
27 config "github.com/ipfs/go-ipfs/repo/config"
@@ -30,12 +31,12 @@ import (
31 manet "gx/ipfs/QmSGL5Uoa6gKHgBBwQG8u1CWKUC8ZnwaZiLgFVTFBR2bxr/go-multiaddr-net"
32 logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
33 loggables "gx/ipfs/QmSvcDkiRwB8LuMhUtnvhum2C851Mproo75ZDD19jx43tD/go-libp2p-loggables"
33 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
34 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/cli"
35 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/http"
34 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
35 ma "gx/ipfs/QmW8s4zTsUoX1Q6CeYxVKPyqSKbF7H1YDUyTostBtZ8DaG/go-multiaddr"
36 osh "gx/ipfs/QmXuBJ7DR6k3rmUEKtvVMhwjmXDuJgXXPUt4LQXKBMsU93/go-os-helper"
37 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
38 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/cli"
39 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/http"
40 )
41
42 // log is the command logger
@@ -269,11 +270,11 @@ func (i *cmdInvocation) Parse(ctx context.Context, args []string) error {
270
271 // if no encoding was specified by user, default to plaintext encoding
272 // (if command doesn't support plaintext, use JSON instead)
272 - if enc := i.req.Options[cmds.EncShort]; enc == "" {
273 + if enc := i.req.Options[cmds.EncLong]; enc == "" {
274 if i.req.Command.Encoders != nil && i.req.Command.Encoders[cmds.Text] != nil {
274 - i.req.SetOption(cmds.EncShort, cmds.Text)
275 + i.req.SetOption(cmds.EncLong, cmds.Text)
276 } else {
276 - i.req.SetOption(cmds.EncShort, cmds.JSON)
277 + i.req.SetOption(cmds.EncLong, cmds.JSON)
278 }
279 }
280
@@ -313,7 +314,7 @@ func callCommand(ctx context.Context, req *cmds.Request, root *cmds.Command, cct
314 return err
315 }
316
316 - encTypeStr, _ := req.Options[cmds.EncShort].(string)
317 + encTypeStr, _ := req.Options[cmds.EncLong].(string)
318 encType := cmds.EncodingType(encTypeStr)
319
320 var (
@@ -658,7 +659,7 @@ func apiClientForAddr(addr ma.Multiaddr) (http.Client, error) {
659 return nil, err
660 }
661
661 - return http.NewClient(host), nil
662 + return http.NewClient(host, http.ClientWithAPIPrefix(corehttp.APIPath)), nil
663 }
664
665 func isConnRefused(err error) bool {
commands/command.go
+1 -1
@@ -17,8 +17,8 @@ import (
17 "github.com/ipfs/go-ipfs/path"
18
19 logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
20 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
20 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
21 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
22 )
23
24 var log = logging.Logger("command")
commands/command_test.go
+2 -2
@@ -3,8 +3,8 @@ package commands
3 import (
4 "testing"
5
6 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
6 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
7 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
8 )
9
10 func noop(req Request, res Response) {
@@ -59,7 +59,7 @@ func TestOptionValidation(t *testing.T) {
59 }
60
61 req, _ = NewRequest(nil, nil, nil, nil, nil, opts)
62 - req.SetOption(cmds.EncShort, "json")
62 + req.SetOption(cmds.EncLong, "json")
63 res = cmd.Call(req)
64 if res.Error() != nil {
65 t.Error("Should have passed")
commands/legacy/command.go
+1 -1
@@ -3,7 +3,7 @@ package legacy
3 import (
4 "io"
5
6 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
6 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
7
8 oldcmds "github.com/ipfs/go-ipfs/commands"
9 logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
commands/legacy/legacy.go
+1 -1
@@ -4,7 +4,7 @@ import (
4 "io"
5 "runtime/debug"
6
7 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
7 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
8
9 oldcmds "github.com/ipfs/go-ipfs/commands"
10 )
commands/legacy/legacy_test.go
+1 -1
@@ -7,8 +7,8 @@ import (
7 "testing"
8
9 oldcmds "github.com/ipfs/go-ipfs/commands"
10 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
10 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
11 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
12 )
13
14 type WriteNopCloser struct {
commands/legacy/request.go
+1 -1
@@ -7,9 +7,9 @@ import (
7 "os"
8 "reflect"
9
10 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
10 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
11 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit/files"
12 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
13
14 oldcmds "github.com/ipfs/go-ipfs/commands"
15 )
commands/legacy/response.go
+3 -1
@@ -7,8 +7,8 @@ import (
7 "reflect"
8 "sync"
9
10 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
10 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
11 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
12
13 oldcmds "github.com/ipfs/go-ipfs/commands"
14 )
@@ -47,6 +47,8 @@ func (rw *responseWrapper) Output() interface{} {
47 case io.Reader:
48 // if it's a reader, set it
49 rw.out = v
50 + case cmds.Single:
51 + rw.out = v.Value
52 default:
53 // if it is something else, create a channel and copy values from next in there
54 ch := make(chan interface{})
commands/response.go
+2 -2
@@ -9,8 +9,8 @@ import (
9 "os"
10 "strings"
11
12 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
12 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
13 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
14 )
15
16 // ErrorType signfies a category of errors
@@ -149,7 +149,7 @@ func (r *response) Marshal() (io.Reader, error) {
149 return bytes.NewReader([]byte{}), nil
150 }
151
152 - enc, found, err := r.req.Option(cmds.EncShort).String()
152 + enc, found, err := r.req.Option(cmds.EncLong).String()
153 if err != nil {
154 return nil, err
155 }
commands/response_test.go
+2 -2
@@ -6,8 +6,8 @@ import (
6 "strings"
7 "testing"
8
9 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
9 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
10 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
11 )
12
13 type TestOutput struct {
@@ -29,7 +29,7 @@ func TestMarshalling(t *testing.T) {
29 t.Error("Should have failed (no encoding type specified in request)")
30 }
31
32 - req.SetOption(cmds.EncShort, JSON)
32 + req.SetOption(cmds.EncLong, JSON)
33
34 reader, err := res.Marshal()
35 if err != nil {
core/commands/add.go
+10 -6
@@ -18,10 +18,10 @@ import (
18 mfs "github.com/ipfs/go-ipfs/mfs"
19 ft "github.com/ipfs/go-ipfs/unixfs"
20
21 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
21 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
22 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit/files"
23 mh "gx/ipfs/QmYeKnKpubCMRiq3PGZcTREErthbb5Q9cXsCoSkD9bjEBd/go-multihash"
24 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
25 "gx/ipfs/QmeWjRodbcZFKe5tMN7poEx3izym6osrLSnTLf9UjJZBbs/pb"
26 )
27
@@ -162,7 +162,6 @@ You can now check what blocks have been created by:
162 return nil
163 },
164 Run: func(req *cmds.Request, res cmds.ResponseEmitter, env interface{}) {
165 - fmt.Printf("%#v\n", req)
165 n, err := GetNode(env)
166 if err != nil {
167 res.SetError(err, cmdkit.ErrNormal)
@@ -202,6 +201,15 @@ You can now check what blocks have been created by:
201 return
202 }
203
204 + if hfset && hashFunStr != "sha2-256" && cidVer == 0 {
205 + cidVer = 1
206 + }
207 +
208 + if cidVer > 0 && !rbset {
209 + rawblks = true
210 + }
211 +
212 + // if rawblocks is not explicitly set but nocopy is, set rawblocks
213 if nocopy && !rbset {
214 rawblks = true
215 }
@@ -211,10 +219,6 @@ You can now check what blocks have been created by:
219 return
220 }
221
214 - if hfset && hashFunStr != "sha2-256" && cidVer == 0 {
215 - cidVer = 1
216 - }
217 -
222 prefix, err := dag.PrefixForCidVersion(cidVer)
223 if err != nil {
224 res.SetError(err, cmdkit.ErrNormal)
core/commands/bitswap.go
+1 -1
@@ -12,9 +12,9 @@ import (
12 decision "github.com/ipfs/go-ipfs/exchange/bitswap/decision"
13
14 "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize"
15 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
15 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
16 peer "gx/ipfs/QmWNY7dV54ZDYmTA1ykVdwNCqC11mpU4zSUp6XDpLTH9eG/go-libp2p-peer"
17 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
18 cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
19 )
20
core/commands/block.go
+1 -1
@@ -11,9 +11,9 @@ import (
11 util "github.com/ipfs/go-ipfs/blocks/blockstore/util"
12 e "github.com/ipfs/go-ipfs/core/commands/e"
13
14 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
14 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
15 mh "gx/ipfs/QmYeKnKpubCMRiq3PGZcTREErthbb5Q9cXsCoSkD9bjEBd/go-multihash"
16 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
17 blocks "gx/ipfs/QmYsEQydGrsxNZfAiskvQ76N2xE9hDQtSAkRSynwMiUK3c/go-block-format"
18 cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
19 )
core/commands/cat.go
+1 -1
@@ -9,8 +9,8 @@ import (
9 core "github.com/ipfs/go-ipfs/core"
10 coreunix "github.com/ipfs/go-ipfs/core/coreunix"
11
12 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
12 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
13 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
14 )
15
16 const progressBarMinSize = 1024 * 1024 * 8 // show progress bar for outputs > 8MiB
core/commands/commands.go
+1 -1
@@ -14,8 +14,8 @@ import (
14 // oldcmds "github.com/ipfs/go-ipfs/commands"
15 e "github.com/ipfs/go-ipfs/core/commands/e"
16
17 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
17 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
18 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
19 )
20
21 type commandEncoder struct {
core/commands/commands_test.go new
+188
@@ -0,0 +1,188 @@
1 +package commands
2 +
3 +import (
4 + "strings"
5 + "testing"
6 +
7 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
8 +)
9 +
10 +func collectPaths(prefix string, cmd *cmds.Command, out map[string]struct{}) {
11 + for name, sub := range cmd.Subcommands {
12 + path := prefix + "/" + name
13 + out[path] = struct{}{}
14 + collectPaths(path, sub, out)
15 + }
16 +}
17 +
18 +func TestCommands(t *testing.T) {
19 + list := []string{
20 + "/add",
21 + "/bitswap",
22 + "/bitswap/ledger",
23 + "/bitswap/reprovide",
24 + "/bitswap/stat",
25 + "/bitswap/unwant",
26 + "/bitswap/wantlist",
27 + "/block",
28 + "/block/get",
29 + "/block/put",
30 + "/block/rm",
31 + "/block/stat",
32 + "/bootstrap",
33 + "/bootstrap/add",
34 + "/bootstrap/add/default",
35 + "/bootstrap/list",
36 + "/bootstrap/rm",
37 + "/bootstrap/rm/all",
38 + "/cat",
39 + "/commands",
40 + "/config",
41 + "/config/edit",
42 + "/config/replace",
43 + "/config/show",
44 + "/dag",
45 + "/dag/get",
46 + "/dag/put",
47 + "/dag/resolve",
48 + "/dht",
49 + "/dht/findpeer",
50 + "/dht/findprovs",
51 + "/dht/get",
52 + "/dht/provide",
53 + "/dht/put",
54 + "/dht/query",
55 + "/diag",
56 + "/diag/cmds",
57 + "/diag/cmds/clear",
58 + "/diag/cmds/set-time",
59 + "/diag/sys",
60 + "/dns",
61 + "/file",
62 + "/file/ls",
63 + "/files",
64 + "/files/chcid",
65 + "/files/cp",
66 + "/files/flush",
67 + "/files/ls",
68 + "/files/mkdir",
69 + "/files/mv",
70 + "/files/read",
71 + "/files/rm",
72 + "/files/stat",
73 + "/filestore",
74 + "/filestore/dups",
75 + "/filestore/ls",
76 + "/filestore/verify",
77 + "/files/write",
78 + "/get",
79 + "/id",
80 + "/key",
81 + "/key/gen",
82 + "/key/list",
83 + "/key/rename",
84 + "/key/rm",
85 + "/log",
86 + "/log/level",
87 + "/log/ls",
88 + "/log/tail",
89 + "/ls",
90 + "/mount",
91 + "/name",
92 + "/name/publish",
93 + "/name/pubsub",
94 + "/name/pubsub/state",
95 + "/name/pubsub/subs",
96 + "/name/pubsub/cancel",
97 + "/name/resolve",
98 + "/object",
99 + "/object/data",
100 + "/object/diff",
101 + "/object/get",
102 + "/object/links",
103 + "/object/new",
104 + "/object/patch",
105 + "/object/patch/add-link",
106 + "/object/patch/append-data",
107 + "/object/patch/rm-link",
108 + "/object/patch/set-data",
109 + "/object/put",
110 + "/object/stat",
111 + "/p2p",
112 + "/p2p/listener",
113 + "/p2p/listener/close",
114 + "/p2p/listener/ls",
115 + "/p2p/listener/open",
116 + "/p2p/stream",
117 + "/p2p/stream/close",
118 + "/p2p/stream/dial",
119 + "/p2p/stream/ls",
120 + "/pin",
121 + "/pin/add",
122 + "/ping",
123 + "/pin/ls",
124 + "/pin/rm",
125 + "/pin/update",
126 + "/pin/verify",
127 + "/pubsub",
128 + "/pubsub/ls",
129 + "/pubsub/peers",
130 + "/pubsub/pub",
131 + "/pubsub/sub",
132 + "/refs",
133 + "/refs/local",
134 + "/repo",
135 + "/repo/fsck",
136 + "/repo/gc",
137 + "/repo/stat",
138 + "/repo/verify",
139 + "/repo/version",
140 + "/resolve",
141 + "/shutdown",
142 + "/stats",
143 + "/stats/bitswap",
144 + "/stats/bw",
145 + "/stats/repo",
146 + "/swarm",
147 + "/swarm/addrs",
148 + "/swarm/addrs/listen",
149 + "/swarm/addrs/local",
150 + "/swarm/connect",
151 + "/swarm/disconnect",
152 + "/swarm/filters",
153 + "/swarm/filters/add",
154 + "/swarm/filters/rm",
155 + "/swarm/peers",
156 + "/tar",
157 + "/tar/add",
158 + "/tar/cat",
159 + "/update",
160 + "/version",
161 + }
162 +
163 + cmdSet := make(map[string]struct{})
164 + collectPaths("", Root, cmdSet)
165 +
166 + for _, path := range list {
167 + if _, ok := cmdSet[path]; !ok {
168 + t.Errorf("%q not in result", path)
169 + } else {
170 + delete(cmdSet, path)
171 + }
172 + }
173 +
174 + for path := range cmdSet {
175 + t.Errorf("%q in result but shouldn't be", path)
176 + }
177 +
178 + for _, path := range list {
179 + path = path[1:] // remove leading slash
180 + split := strings.Split(path, "/")
181 + sub, err := Root.Get(split)
182 + if err != nil {
183 + t.Errorf("error getting subcommand %q: %v", path, err)
184 + } else if sub == nil {
185 + t.Errorf("subcommand %q is nil even though there was no error", path)
186 + }
187 + }
188 +}
core/commands/filestore.go
+1 -1
@@ -12,8 +12,8 @@ import (
12 "github.com/ipfs/go-ipfs/filestore"
13
14 lgc "github.com/ipfs/go-ipfs/commands/legacy"
15 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
15 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
16 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
17 cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
18 )
19
core/commands/get.go
+1 -1
@@ -16,8 +16,8 @@ import (
16 tar "github.com/ipfs/go-ipfs/thirdparty/tar"
17 uarchive "github.com/ipfs/go-ipfs/unixfs/archive"
18
19 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
19 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
20 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
21 "gx/ipfs/QmeWjRodbcZFKe5tMN7poEx3izym6osrLSnTLf9UjJZBbs/pb"
22 )
23
core/commands/get_test.go
+1 -1
@@ -4,8 +4,8 @@ import (
4 "context"
5 "testing"
6
7 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
7 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
8 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
9 )
10
11 func TestGetOutputPath(t *testing.T) {
core/commands/helptext_test.go
+1 -1
@@ -4,7 +4,7 @@ import (
4 "strings"
5 "testing"
6
7 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
7 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
8 )
9
10 func checkHelptextRecursive(t *testing.T, name []string, c *cmds.Command) {
core/commands/pubsub.go
+1 -1
@@ -12,9 +12,9 @@ import (
12 core "github.com/ipfs/go-ipfs/core"
13
14 floodsub "gx/ipfs/QmP1T1SGU6276R2MHKP2owbck37Fnzd6ZkpyNJvnG2LoTG/go-libp2p-floodsub"
15 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
15 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
16 pstore "gx/ipfs/QmYijbtjCxFEjSXaudaQAUz3LN5VKLssm8WCUsRoqzXmQR/go-libp2p-peerstore"
17 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
18 blocks "gx/ipfs/QmYsEQydGrsxNZfAiskvQ76N2xE9hDQtSAkRSynwMiUK3c/go-block-format"
19 cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
20 )
core/commands/repo.go
+1 -1
@@ -18,8 +18,8 @@ import (
18 lockfile "github.com/ipfs/go-ipfs/repo/fsrepo/lock"
19
20 lgc "github.com/ipfs/go-ipfs/commands/legacy"
21 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
21 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
22 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
23 cid "gx/ipfs/QmeSrf6pzut73u6zLQkRFQ3ygt3k6XFT2kjdYP8Tnkwwyg/go-cid"
24 )
25
core/commands/root.go
+1 -1
@@ -13,8 +13,8 @@ import (
13
14 lgc "github.com/ipfs/go-ipfs/commands/legacy"
15 logging "gx/ipfs/QmSpJByNKFX1sCsHBEp3R73FL4NF6FnQTEGyNAXHm2GS52/go-log"
16 - "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
16 "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
17 + "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
18 )
19
20 var log = logging.Logger("core/commands")
core/commands/stat.go
+1 -1
@@ -8,9 +8,9 @@ import (
8 "time"
9
10 humanize "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize"
11 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
11 cmdkit "gx/ipfs/QmVD1W3MC8Hk1WZgFQPWWmBECJ3X72BgUYf9eCQ4PGzPps/go-ipfs-cmdkit"
12 peer "gx/ipfs/QmWNY7dV54ZDYmTA1ykVdwNCqC11mpU4zSUp6XDpLTH9eG/go-libp2p-peer"
13 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
14 protocol "gx/ipfs/QmZNkThpqfVXs9GNbexPrfBbXSLNYeKrE7jwFM2oqHbyqN/go-libp2p-protocol"
15 metrics "gx/ipfs/QmaL2WYJGbWKqHoLujoi9GQ5jj4JVFrBqHUBWmEYzJPVWT/go-libp2p-metrics"
16 )
core/corehttp/commands.go
+15 -14
@@ -15,15 +15,14 @@ import (
15 path "github.com/ipfs/go-ipfs/path"
16 config "github.com/ipfs/go-ipfs/repo/config"
17
18 - cmds "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds"
19 - cmdsHttp "gx/ipfs/QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K/go-ipfs-cmds/http"
18 + cmds "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds"
19 + cmdsHttp "gx/ipfs/QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps/go-ipfs-cmds/http"
20 )
21
22 var (
23 errApiVersionMismatch = errors.New("api version mismatch")
24 )
25
26 -const apiPath = "/api/v0"
26 const originEnvKey = "API_ORIGIN"
27 const originEnvKeyDeprecate = `You are using the ` + originEnvKey + `ENV Variable.
28 This functionality is deprecated, and will be removed in future versions.
@@ -116,6 +115,7 @@ func commandsOption(cctx oldcmds.Context, command *cmds.Command) ServeOption {
115
116 cfg := cmdsHttp.NewServerConfig()
117 cfg.SetAllowedMethods("GET", "POST", "PUT")
118 + cfg.APIPath = APIPath
119 rcfg, err := n.Repo.Config()
120 if err != nil {
121 return nil, err
@@ -127,7 +127,7 @@ func commandsOption(cctx oldcmds.Context, command *cmds.Command) ServeOption {
127 patchCORSVars(cfg, l.Addr())
128
129 cmdHandler := cmdsHttp.NewHandler(&cctx, command, cfg)
130 - mux.Handle(APIPath, cmdHandler)
130 + mux.Handle(APIPath+"/", cmdHandler)
131 return mux, nil
132 }
133 }
@@ -146,21 +146,22 @@ func CheckVersionOption() ServeOption {
146
147 return ServeOption(func(n *core.IpfsNode, l net.Listener, next *http.ServeMux) (*http.ServeMux, error) {
148 mux := http.NewServeMux()
149 - mux.HandleFunc(APIPath+"/", func(w http.ResponseWriter, r *http.Request) {
150 - pth := path.SplitList(r.URL.Path[len(APIPath):])
151 - // backwards compatibility to previous version check
152 - if pth[1] != "version" {
153 - clientVersion := r.UserAgent()
154 - // skips check if client is not go-ipfs
155 - if clientVersion != "" && strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion {
156 - http.Error(w, fmt.Sprintf("%s (%s != %s)", errApiVersionMismatch, daemonVersion, clientVersion), http.StatusBadRequest)
157 - return
149 + mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
150 + if strings.HasPrefix(r.URL.Path, APIPath) {
151 + pth := path.SplitList(r.URL.Path[len(APIPath):])
152 + // backwards compatibility to previous version check
153 + if pth[1] != "version" {
154 + clientVersion := r.UserAgent()
155 + // skips check if client is not go-ipfs
156 + if clientVersion != "" && strings.Contains(clientVersion, "/go-ipfs/") && daemonVersion != clientVersion {
157 + http.Error(w, fmt.Sprintf("%s (%s != %s)", errApiVersionMismatch, daemonVersion, clientVersion), http.StatusBadRequest)
158 + return
159 + }
160 }
161 }
162
163 next.ServeHTTP(w, r)
164 })
163 - mux.HandleFunc("/", next.ServeHTTP)
165
166 return mux, nil
167 })
package.json
+1 -1
@@ -414,7 +414,7 @@
414 "version": "2.1.2"
415 },
416 {
417 - "hash": "QmTwKPLyeRKuDawuy6CAn1kRj1FVoqBEM8sviAUWN7NW9K",
417 + "hash": "QmYopJAcV7R9SbxiPBCvqhnt8EusQpWPHewoZakCMt8hps",
418 "name": "go-ipfs-cmds",
419 "version": "0.5.0-dev"
420 },
test/sharness/t0040-add-and-cat.sh
+1 -1
@@ -554,7 +554,7 @@ test_add_cat_expensive "--cid-version=1" "zdj7WcatQrtuE4WMkS4XsfsMixuQN2po4irkYh
554 # encoded with the blake2b-256 hash funtion
555 test_add_cat_expensive '--hash=blake2b-256' "zDMZof1kwndounDzQCANUHjiE3zt1mPEgx7RE3JTHoZrRRa79xcv"
556
557 -test_add_named_pipe " Post http://$API_ADDR/api/v0/add?encoding=json&progress=true&r=true&stream-channels=true:"
557 +test_add_named_pipe " Post http://$API_ADDR/api/v0/add?chunker=size-262144&cid-version=0&encoding=json&hash=sha2-256&pin=true&progress=true&recursive=true&stream-channels=true:"
558
559 test_add_pwd_is_symlink
560