@cryptotaxi247 / kubo / commits / 39c2e0126

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