From d1f1d2f5bf2adcc726856de0c681b24ba8fc6651 Mon Sep 17 00:00:00 2001
From: Matt Bell <mappum@gmail.com>
Date: Sun, 16 Nov 2014 23:28:28 -0800
Subject: [PATCH] core/commands2: Fixed commands to use string arguments

---
 cmd/ipfs2/tour.go           | 10 ++--------
 core/commands2/block.go     |  5 +----
 core/commands2/bootstrap.go | 13 ++-----------
 core/commands2/cat.go       |  8 +-------
 core/commands2/config.go    | 13 ++-----------
 core/commands2/log.go       |  6 +-----
 core/commands2/ls.go        |  6 +-----
 core/commands2/object.go    | 29 +++++++----------------------
 core/commands2/pin.go       | 15 ++-------------
 core/commands2/publish.go   |  4 ++--
 core/commands2/refs.go      |  8 +-------
 core/commands2/resolve.go   |  7 +------
 12 files changed, 23 insertions(+), 101 deletions(-)

diff --git a/cmd/ipfs2/tour.go b/cmd/ipfs2/tour.go
index 94cd9aaf6..72fc4c77f 100644
--- a/cmd/ipfs2/tour.go
+++ b/cmd/ipfs2/tour.go
@@ -9,7 +9,6 @@ import (
 
 	cmds "github.com/jbenet/go-ipfs/commands"
 	config "github.com/jbenet/go-ipfs/config"
-	internal "github.com/jbenet/go-ipfs/core/commands2/internal"
 	tour "github.com/jbenet/go-ipfs/tour"
 )
 
@@ -43,14 +42,9 @@ func tourRunFunc(req cmds.Request) (interface{}, error) {
 		return nil, err
 	}
 
-	strs, err := internal.CastToStrings(req.Arguments())
-	if err != nil {
-		return nil, err
-	}
-
 	id := tour.TopicID(cfg.Tour.Last)
-	if len(strs) > 0 {
-		id = tour.TopicID(strs[0])
+	if len(req.Arguments()) > 0 {
+		id = tour.TopicID(req.Arguments()[0])
 	}
 
 	var w bytes.Buffer
diff --git a/core/commands2/block.go b/core/commands2/block.go
index a8cf2b923..3efee084a 100644
--- a/core/commands2/block.go
+++ b/core/commands2/block.go
@@ -52,10 +52,7 @@ It outputs to stdout, and <key> is a base58 encoded multihash.
 			return nil, err
 		}
 
-		key, ok := req.Arguments()[0].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
+		key := req.Arguments()[0]
 
 		if !u.IsValidHash(key) {
 			return nil, cmds.Error{"Not a valid hash", cmds.ErrClient}
diff --git a/core/commands2/bootstrap.go b/core/commands2/bootstrap.go
index 825310c8e..4b68a67c6 100644
--- a/core/commands2/bootstrap.go
+++ b/core/commands2/bootstrap.go
@@ -184,16 +184,7 @@ func bootstrapWritePeers(w io.Writer, prefix string, peers []*config.BootstrapPe
 	return nil
 }
 
-func bootstrapInputToPeers(input []interface{}) ([]*config.BootstrapPeer, error) {
-	inputAddrs := make([]string, len(input))
-	for i, v := range input {
-		addr, ok := v.(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
-		inputAddrs[i] = addr
-	}
-
+func bootstrapInputToPeers(input []string) ([]*config.BootstrapPeer, error) {
 	split := func(addr string) (string, string) {
 		idx := strings.LastIndex(addr, "/")
 		if idx == -1 {
@@ -203,7 +194,7 @@ func bootstrapInputToPeers(input []interface{}) ([]*config.BootstrapPeer, error)
 	}
 
 	peers := []*config.BootstrapPeer{}
-	for _, addr := range inputAddrs {
+	for _, addr := range input {
 		addrS, peeridS := split(addr)
 
 		// make sure addrS parses as a multiaddr.
diff --git a/core/commands2/cat.go b/core/commands2/cat.go
index 3bd760269..dd5187a10 100644
--- a/core/commands2/cat.go
+++ b/core/commands2/cat.go
@@ -5,7 +5,6 @@ import (
 
 	cmds "github.com/jbenet/go-ipfs/commands"
 	core "github.com/jbenet/go-ipfs/core"
-	"github.com/jbenet/go-ipfs/core/commands2/internal"
 	uio "github.com/jbenet/go-ipfs/unixfs/io"
 )
 
@@ -29,12 +28,7 @@ it contains.
 
 		readers := make([]io.Reader, 0, len(req.Arguments()))
 
-		paths, err := internal.CastToStrings(req.Arguments())
-		if err != nil {
-			return nil, err
-		}
-
-		readers, err = cat(node, paths)
+		readers, err = cat(node, req.Arguments())
 		if err != nil {
 			return nil, err
 		}
diff --git a/core/commands2/config.go b/core/commands2/config.go
index 8a4b1bdb6..2e58622d0 100644
--- a/core/commands2/config.go
+++ b/core/commands2/config.go
@@ -55,11 +55,7 @@ Set the value of the 'datastore.path' key:
 	},
 	Run: func(req cmds.Request) (interface{}, error) {
 		args := req.Arguments()
-
-		key, ok := args[0].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
+		key := args[0]
 
 		filename, err := config.Filename(req.Context().ConfigRoot)
 		if err != nil {
@@ -68,12 +64,7 @@ Set the value of the 'datastore.path' key:
 
 		var value string
 		if len(args) == 2 {
-			var ok bool
-			value, ok = args[1].(string)
-			if !ok {
-				return nil, u.ErrCast()
-			}
-
+			value = args[1]
 			return setConfig(filename, key, value)
 
 		} else {
diff --git a/core/commands2/log.go b/core/commands2/log.go
index 1c821dbdc..a5b494943 100644
--- a/core/commands2/log.go
+++ b/core/commands2/log.go
@@ -31,11 +31,7 @@ output of a running daemon.
 	Run: func(req cmds.Request) (interface{}, error) {
 
 		args := req.Arguments()
-		subsystem, ok1 := args[0].(string)
-		level, ok2 := args[1].(string)
-		if !ok1 || !ok2 {
-			return nil, u.ErrCast()
-		}
+		subsystem, level := args[0], args[1]
 
 		if subsystem == logAllKeyword {
 			subsystem = "*"
diff --git a/core/commands2/ls.go b/core/commands2/ls.go
index c849825de..7b3db8eb5 100644
--- a/core/commands2/ls.go
+++ b/core/commands2/ls.go
@@ -4,7 +4,6 @@ import (
 	"fmt"
 
 	cmds "github.com/jbenet/go-ipfs/commands"
-	"github.com/jbenet/go-ipfs/core/commands2/internal"
 	merkledag "github.com/jbenet/go-ipfs/merkledag"
 )
 
@@ -42,10 +41,7 @@ it contains, with the following format:
 			return nil, err
 		}
 
-		paths, err := internal.CastToStrings(req.Arguments())
-		if err != nil {
-			return nil, err
-		}
+		paths := req.Arguments()
 
 		dagnodes := make([]*merkledag.Node, 0)
 		for _, path := range paths {
diff --git a/core/commands2/object.go b/core/commands2/object.go
index fe3925de4..b4f34e318 100644
--- a/core/commands2/object.go
+++ b/core/commands2/object.go
@@ -12,7 +12,6 @@ import (
 	cmds "github.com/jbenet/go-ipfs/commands"
 	core "github.com/jbenet/go-ipfs/core"
 	dag "github.com/jbenet/go-ipfs/merkledag"
-	u "github.com/jbenet/go-ipfs/util"
 )
 
 // ErrObjectTooLarge is returned when too much data was read from stdin. current limit 512k
@@ -74,11 +73,7 @@ output is the raw data of the object.
 			return nil, err
 		}
 
-		key, ok := req.Arguments()[0].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
-
+		key := req.Arguments()[0]
 		return objectData(n, key)
 	},
 }
@@ -102,11 +97,7 @@ multihash.
 			return nil, err
 		}
 
-		key, ok := req.Arguments()[0].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
-
+		key := req.Arguments()[0]
 		return objectLinks(n, key)
 	},
 	Marshalers: cmds.MarshalerMap{
@@ -148,10 +139,7 @@ This command outputs data in the following encodings:
 			return nil, err
 		}
 
-		key, ok := req.Arguments()[0].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
+		key := req.Arguments()[0]
 
 		object, err := objectGet(n, key)
 		if err != nil {
@@ -214,15 +202,12 @@ Data should be in the format specified by <encoding>.
 			return nil, err
 		}
 
-		input, ok := req.Arguments()[0].(io.Reader)
-		if !ok {
-			return nil, u.ErrCast()
+		input, err := req.Files().NextFile()
+		if err != nil && err != io.EOF {
+			return nil, err
 		}
 
-		encoding, ok := req.Arguments()[1].(string)
-		if !ok {
-			return nil, u.ErrCast()
-		}
+		encoding := req.Arguments()[0]
 
 		output, err := objectPut(n, input, encoding)
 		if err != nil {
diff --git a/core/commands2/pin.go b/core/commands2/pin.go
index 3790f5167..33060de60 100644
--- a/core/commands2/pin.go
+++ b/core/commands2/pin.go
@@ -5,7 +5,6 @@ import (
 
 	cmds "github.com/jbenet/go-ipfs/commands"
 	"github.com/jbenet/go-ipfs/core"
-	"github.com/jbenet/go-ipfs/core/commands2/internal"
 	"github.com/jbenet/go-ipfs/merkledag"
 )
 
@@ -50,12 +49,7 @@ on disk.
 			recursive = false
 		}
 
-		paths, err := internal.CastToStrings(req.Arguments())
-		if err != nil {
-			return nil, err
-		}
-
-		_, err = pin(n, paths, recursive)
+		_, err = pin(n, req.Arguments(), recursive)
 		if err != nil {
 			return nil, err
 		}
@@ -95,12 +89,7 @@ collected if needed.
 			recursive = false // default
 		}
 
-		paths, err := internal.CastToStrings(req.Arguments())
-		if err != nil {
-			return nil, err
-		}
-
-		_, err = unpin(n, paths, recursive)
+		_, err = unpin(n, req.Arguments(), recursive)
 		if err != nil {
 			return nil, err
 		}
diff --git a/core/commands2/publish.go b/core/commands2/publish.go
index f7e76ba0a..f7165394e 100644
--- a/core/commands2/publish.go
+++ b/core/commands2/publish.go
@@ -67,11 +67,11 @@ Publish a <ref> to another public key:
 		switch len(args) {
 		case 2:
 			// name = args[0]
-			ref = args[1].(string)
+			ref = args[1]
 			return nil, errors.New("keychains not yet implemented")
 		case 1:
 			// name = n.Identity.ID.String()
-			ref = args[0].(string)
+			ref = args[0]
 		}
 
 		// TODO n.Keychain.Get(name).PrivKey
diff --git a/core/commands2/refs.go b/core/commands2/refs.go
index d3c243405..a40b3f57e 100644
--- a/core/commands2/refs.go
+++ b/core/commands2/refs.go
@@ -6,7 +6,6 @@ import (
 	mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
 	cmds "github.com/jbenet/go-ipfs/commands"
 	"github.com/jbenet/go-ipfs/core"
-	"github.com/jbenet/go-ipfs/core/commands2/internal"
 	dag "github.com/jbenet/go-ipfs/merkledag"
 	u "github.com/jbenet/go-ipfs/util"
 )
@@ -57,12 +56,7 @@ Note: list all refs recursively with -r.
 			recursive = false
 		}
 
-		paths, err := internal.CastToStrings(req.Arguments())
-		if err != nil {
-			return nil, err
-		}
-
-		return getRefs(n, paths, unique, recursive)
+		return getRefs(n, req.Arguments(), unique, recursive)
 	},
 	Type: &RefsOutput{},
 	Marshalers: cmds.MarshalerMap{
diff --git a/core/commands2/resolve.go b/core/commands2/resolve.go
index db67cfc86..70ee9735e 100644
--- a/core/commands2/resolve.go
+++ b/core/commands2/resolve.go
@@ -4,7 +4,6 @@ import (
 	"errors"
 
 	cmds "github.com/jbenet/go-ipfs/commands"
-	u "github.com/jbenet/go-ipfs/util"
 )
 
 var resolveCmd = &cmds.Command{
@@ -59,11 +58,7 @@ Resolve te value of another name:
 			name = n.Identity.ID().String()
 
 		} else {
-			var ok bool
-			name, ok = req.Arguments()[0].(string)
-			if !ok {
-				return nil, u.ErrCast()
-			}
+			name = req.Arguments()[0]
 		}
 
 		output, err := n.Namesys.Resolve(name)
-- 
GitLab