ls: skip size for directories
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
Jan 11, 2019 at 13:16 UTC
39c2e0126dca0f516edc370e40e44382285d6475
5 files changed
+55
-41
core/commands/ls.go
+17
-4
@@ -235,6 +235,7 @@ func makeLsLink(req *cmds.Request, dserv ipld.DAGService, resolveType bool, reso
235
case cid.Raw:
236
// No need to check with raw leaves
237
t = unixfs.TFile
238
+ size = link.Size
239
case cid.DagProtobuf:
240
linkNode, err := link.GetNode(req.Context, dserv)
241
if err == ipld.ErrNotFound && !resolveType && !resolveSize {
@@ -268,6 +269,7 @@ func makeLsLink(req *cmds.Request, dserv ipld.DAGService, resolveType bool, reso
269
func tabularOutput(req *cmds.Request, w io.Writer, out *LsOutput, lastObjectHash string, ignoreBreaks bool) string {
270
headers, _ := req.Options[lsHeadersOptionNameTime].(bool)
271
stream, _ := req.Options[lsStreamOptionName].(bool)
272
+ size, _ := req.Options[lsSizeOptionName].(bool)
273
// in streaming mode we can't automatically align the tabs
274
// so we take a best guess
275
var minTabWidth int
@@ -291,17 +293,28 @@ func tabularOutput(req *cmds.Request, w io.Writer, out *LsOutput, lastObjectHash
293
fmt.Fprintf(tw, "%s:\n", object.Hash)
294
}
295
if headers {
294
- fmt.Fprintln(tw, "Hash\tSize\tName")
296
+ s := "Hash\tName"
297
+ if size {
298
+ s = "Hash\tSize\tName"
299
+ }
300
+ fmt.Fprintln(tw, s)
301
}
302
lastObjectHash = object.Hash
303
}
304
305
for _, link := range object.Links {
300
- if link.Type == unixfs.TDirectory {
301
- link.Name += "/"
306
+ s := "%[1]s\t%[3]s\n"
307
+
308
+ switch {
309
+ case link.Type == unixfs.TDirectory && size:
310
+ s = "%[1]s\t\t%[3]s/\n"
311
+ case link.Type == unixfs.TDirectory && !size:
312
+ s = "%[1]s\t%[3]s/\n"
313
+ case size:
314
+ s = "%s\t%v\t%s\n"
315
}
316
304
- fmt.Fprintf(tw, "%s\t%v\t%s\n", link.Hash, link.Size, link.Name)
317
+ fmt.Fprintf(tw, s, link.Hash, link.Size, link.Name)
318
}
319
}
320
tw.Flush()
core/coreapi/interface/tests/unixfs.go
+2
-2
@@ -704,8 +704,8 @@ func (tp *provider) TestLs(t *testing.T) {
704
if len(links) != 1 {
705
t.Fatalf("expected 1 link, got %d", len(links))
706
}
707
- if links[0].Size != 15 {
708
- t.Fatalf("expected size = 15, got %d", links[0].Size)
707
+ if links[0].Size != 23 {
708
+ t.Fatalf("expected size = 23, got %d", links[0].Size)
709
}
710
if links[0].Name != "name-of-file" {
711
t.Fatalf("expected name = name-of-file, got %s", links[0].Name)
test/sharness/t0045-ls.sh
+31
-31
@@ -62,7 +62,7 @@ EOF
62
'
63
64
test_expect_success "'ipfs ls --size=false <three dir hashes>' succeeds" '
65
- ipfs ls --resolve-size QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls
65
+ ipfs ls --size=false QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls
66
'
67
68
test_expect_success "'ipfs ls <three dir hashes>' output looks good" '
@@ -147,24 +147,24 @@ EOF
147
test_expect_success "'ipfs ls --stream <three dir hashes>' output looks good" '
148
cat <<-\EOF >expected_ls_stream &&
149
QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj:
150
-QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
151
-QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
152
-QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
153
-QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
150
+QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
151
+QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
152
+QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
153
+QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
154
155
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy:
156
-QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
157
-QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
156
+QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
157
+QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
158
159
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss:
160
-QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
161
-QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
160
+QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
161
+QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
162
EOF
163
test_cmp expected_ls_stream actual_ls_stream
164
'
165
166
test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' succeeds" '
167
- ipfs ls --resolve-size --stream QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls_stream
167
+ ipfs ls --size=false --stream QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls_stream
168
'
169
170
test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' output looks good" '
@@ -193,21 +193,21 @@ EOF
193
test_expect_success "'ipfs ls --stream --headers <three dir hashes>' output looks good" '
194
cat <<-\EOF >expected_ls_stream_headers &&
195
QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj:
196
-Hash Size Name
197
-QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
198
-QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
199
-QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 13 f1
200
-QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 13 f2
196
+Hash Size Name
197
+QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
198
+QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
199
+QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
200
+QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
201
202
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy:
203
-Hash Size Name
204
-QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1035 1024
205
-QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 14 a
203
+Hash Size Name
204
+QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
205
+QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
206
207
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss:
208
-Hash Size Name
209
-QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 139 128
210
-QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 14 a
208
+Hash Size Name
209
+QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
210
+QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
211
EOF
212
test_cmp expected_ls_stream_headers actual_ls_stream_headers
213
'
@@ -225,21 +225,21 @@ test_ls_cmd_raw_leaves() {
225
}
226
227
test_ls_object() {
228
- test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
228
+ test_expect_success "ipfs add medium size file then 'ipfs ls --size=false' works as expected" '
229
random 500000 2 > somefile &&
230
HASH=$(ipfs add somefile -q) &&
231
- echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262158 " > ls-expect &&
232
- echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237870 " >> ls-expect &&
233
- ipfs ls $HASH > ls-actual &&
231
+ echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 " > ls-expect &&
232
+ echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri " >> ls-expect &&
233
+ ipfs ls --size=false $HASH > ls-actual &&
234
test_cmp ls-actual ls-expect
235
'
236
237
- test_expect_success "ipfs add medium size file then 'ipfs ls --resolve-size' works as expected" '
237
+ test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
238
random 500000 2 > somefile &&
239
HASH=$(ipfs add somefile -q) &&
240
echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262144 " > ls-expect &&
241
echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237856 " >> ls-expect &&
242
- ipfs ls --resolve-size $HASH > ls-actual &&
242
+ ipfs ls $HASH > ls-actual &&
243
test_cmp ls-actual ls-expect
244
'
245
}
@@ -248,7 +248,7 @@ test_ls_object() {
248
test_ls_cmd
249
test_ls_cmd_streaming
250
test_ls_cmd_raw_leaves
251
-test_ls_cmd_raw_leaves --resolve-size
251
+test_ls_cmd_raw_leaves --size
252
test_ls_object
253
254
# should work online
@@ -256,7 +256,7 @@ test_launch_ipfs_daemon
256
test_ls_cmd
257
test_ls_cmd_streaming
258
test_ls_cmd_raw_leaves
259
-test_ls_cmd_raw_leaves --resolve-size
259
+test_ls_cmd_raw_leaves --size
260
test_kill_ipfs_daemon
261
test_ls_object
262
@@ -317,8 +317,8 @@ test_launch_ipfs_daemon
317
# it does it should eventually fail as the content is random and
318
# should not exist on the network, but we don't want to wait for a
319
# timeout so we will kill the request after a few seconds
320
-test_expect_success "'ipfs ls --resolve-type=false' ok and does not hang" '
321
- go-timeout 2 ipfs ls --resolve-type=false $DIR
320
+test_expect_success "'ipfs ls --resolve-type=false --size=false' ok and does not hang" '
321
+ go-timeout 2 ipfs ls --resolve-type=false --size=false $DIR
322
'
323
324
test_kill_ipfs_daemon
test/sharness/t0051-object.sh
+1
-1
@@ -292,7 +292,7 @@ test_object_cmd() {
292
'
293
294
test_expect_success "output looks good" '
295
- echo "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4 foo/" > patched_exp &&
295
+ echo "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn foo/" > patched_exp &&
296
test_cmp patched_exp patched_output
297
'
298
test/sharness/t0260-sharding.sh
+4
-3
@@ -65,15 +65,16 @@ test_expect_success "ipfs cat error output the same" '
65
test_cmp sharded_err unsharded_err
66
'
67
68
-test_expect_success "'ipfs ls --resolve-type=false' admits missing block" '
68
+test_expect_success "'ipfs ls --resolve-type=false --size=false' admits missing block" '
69
ipfs ls "$SHARDED" | head -1 > first_file &&
70
+ ipfs ls --size=false "$SHARDED" | sort > sharded_out_nosize &&
71
read -r HASH _ NAME <first_file &&
72
ipfs pin rm "$SHARDED" "$UNSHARDED" && # To allow us to remove the block
73
ipfs block rm "$HASH" &&
74
test_expect_code 1 ipfs cat "$SHARDED/$NAME" &&
75
test_expect_code 1 ipfs ls "$SHARDED" &&
75
- ipfs ls --resolve-type=false "$SHARDED" | sort > missing_out &&
76
- test_cmp sharded_out missing_out
76
+ ipfs ls --resolve-type=false --size=false "$SHARDED" | sort > missing_out &&
77
+ test_cmp sharded_out_nosize missing_out
78
'
79
80
test_launch_ipfs_daemon