fixes to make interface more usable
Jeromy committed
Sep 10, 2014 at 20:56 UTC
b5fd9492d70527dddc49482a2ff536d22403b6e2
6 files changed
+46
-9
core/commands/add.go
+10
@@ -103,6 +103,16 @@ func addFile(n *core.IpfsNode, fpath string, depth int) (*dag.Node, error) {
103
return nil, err
104
}
105
106
+ k, err := root.Key()
107
+ if err != nil {
108
+ return nil, err
109
+ }
110
+
111
+ log.Info("Adding file: %s = %s\n", fpath, k.Pretty())
112
+ for _, l := range root.Links {
113
+ log.Info("SubBlock: %s\n", l.Hash.B58String())
114
+ }
115
+
116
return root, addNode(n, root, fpath)
117
}
118
core/commands/commands.go
+4
@@ -4,6 +4,10 @@ import (
4
"io"
5
6
"github.com/jbenet/go-ipfs/core"
7
+
8
+ logging "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/op/go-logging"
9
)
10
11
+var log = logging.MustGetLogger("commands")
12
+
13
type CmdFunc func(*core.IpfsNode, []string, map[string]interface{}, io.Writer) error
core/core.go
+1
@@ -16,6 +16,7 @@ import (
16
exchange "github.com/jbenet/go-ipfs/exchange"
17
bitswap "github.com/jbenet/go-ipfs/exchange/bitswap"
18
merkledag "github.com/jbenet/go-ipfs/merkledag"
19
+ namesys "github.com/jbenet/go-ipfs/namesys"
20
inet "github.com/jbenet/go-ipfs/net"
21
mux "github.com/jbenet/go-ipfs/net/mux"
22
netservice "github.com/jbenet/go-ipfs/net/service"
fuse/readonly/readonly_unix.go
+24
-7
@@ -14,6 +14,8 @@ import (
14
"syscall"
15
"time"
16
17
+ "code.google.com/p/goprotobuf/proto"
18
+
19
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse"
20
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse/fs"
21
core "github.com/jbenet/go-ipfs/core"
@@ -72,20 +74,35 @@ func (*Root) ReadDir(intr fs.Intr) ([]fuse.Dirent, fuse.Error) {
74
75
// Node is the core object representing a filesystem tree node.
76
type Node struct {
75
- Ipfs *core.IpfsNode
76
- Nd *mdag.Node
77
- fd *mdag.DagReader
77
+ Ipfs *core.IpfsNode
78
+ Nd *mdag.Node
79
+ fd *mdag.DagReader
80
+ cached *mdag.PBData
81
+}
82
+
83
+func (s *Node) loadData() error {
84
+ s.cached = new(mdag.PBData)
85
+ return proto.Unmarshal(s.Nd.Data, s.cached)
86
}
87
88
// Attr returns the attributes of a given node.
89
func (s *Node) Attr() fuse.Attr {
90
u.DOut("Node attr.\n")
83
- if len(s.Nd.Links) > 0 {
91
+ if s.cached == nil {
92
+ s.loadData()
93
+ }
94
+ switch s.cached.GetType() {
95
+ case mdag.PBData_Directory:
96
+ u.DOut("this is a directory.\n")
97
return fuse.Attr{Mode: os.ModeDir | 0555}
98
+ case mdag.PBData_File, mdag.PBData_Raw:
99
+ u.DOut("this is a file.\n")
100
+ size, _ := s.Nd.Size()
101
+ return fuse.Attr{Mode: 0444, Size: uint64(size)}
102
+ default:
103
+ u.PErr("Invalid data type.")
104
+ return fuse.Attr{}
105
}
86
-
87
- size, _ := s.Nd.Size()
88
- return fuse.Attr{Mode: 0444, Size: uint64(size)}
106
}
107
108
// Lookup performs a lookup under this node.
merkledag/merkledag.go
+6
-2
@@ -3,7 +3,8 @@ package merkledag
3
import (
4
"fmt"
5
6
- "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
6
+ proto "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
7
+ logging "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/op/go-logging"
8
9
mh "github.com/jbenet/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
10
blocks "github.com/jbenet/go-ipfs/blocks"
@@ -11,6 +12,8 @@ import (
12
u "github.com/jbenet/go-ipfs/util"
13
)
14
15
+var log = logging.MustGetLogger("commands")
16
+
17
// NodeMap maps u.Keys to Nodes.
18
// We cannot use []byte/Multihash for keys :(
19
// so have to convert Multihash bytes to string (u.Key)
@@ -105,7 +108,7 @@ type DAGService struct {
108
// Add adds a node to the DAGService, storing the block in the BlockService
109
func (n *DAGService) Add(nd *Node) (u.Key, error) {
110
k, _ := nd.Key()
108
- u.DOut("DagService Add [%s]\n", k.Pretty())
111
+ log.Debug("DagService Add [%s]\n", k.Pretty())
112
if n == nil {
113
return "", fmt.Errorf("DAGService is nil")
114
}
@@ -126,6 +129,7 @@ func (n *DAGService) Add(nd *Node) (u.Key, error) {
129
func (n *DAGService) AddRecursive(nd *Node) error {
130
_, err := n.Add(nd)
131
if err != nil {
132
+ log.Info("AddRecursive Error: %s\n", err)
133
return err
134
}
135
routing/dht/routing.go
+1
@@ -101,6 +101,7 @@ func (dht *IpfsDHT) Provide(ctx context.Context, key u.Key) error {
101
dht.providers.AddProvider(key, dht.self)
102
peers := dht.routingTables[0].NearestPeers(kb.ConvertKey(key), PoolSize)
103
if len(peers) == 0 {
104
+ // Early out for no targets
105
return nil
106
}
107