mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-24 11:57:44 +08:00
ls: skip size for directories
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
This commit is contained in:
parent
e63c06c89d
commit
39c2e0126d
@ -235,6 +235,7 @@ func makeLsLink(req *cmds.Request, dserv ipld.DAGService, resolveType bool, reso
|
||||
case cid.Raw:
|
||||
// No need to check with raw leaves
|
||||
t = unixfs.TFile
|
||||
size = link.Size
|
||||
case cid.DagProtobuf:
|
||||
linkNode, err := link.GetNode(req.Context, dserv)
|
||||
if err == ipld.ErrNotFound && !resolveType && !resolveSize {
|
||||
@ -268,6 +269,7 @@ func makeLsLink(req *cmds.Request, dserv ipld.DAGService, resolveType bool, reso
|
||||
func tabularOutput(req *cmds.Request, w io.Writer, out *LsOutput, lastObjectHash string, ignoreBreaks bool) string {
|
||||
headers, _ := req.Options[lsHeadersOptionNameTime].(bool)
|
||||
stream, _ := req.Options[lsStreamOptionName].(bool)
|
||||
size, _ := req.Options[lsSizeOptionName].(bool)
|
||||
// in streaming mode we can't automatically align the tabs
|
||||
// so we take a best guess
|
||||
var minTabWidth int
|
||||
@ -291,17 +293,28 @@ func tabularOutput(req *cmds.Request, w io.Writer, out *LsOutput, lastObjectHash
|
||||
fmt.Fprintf(tw, "%s:\n", object.Hash)
|
||||
}
|
||||
if headers {
|
||||
fmt.Fprintln(tw, "Hash\tSize\tName")
|
||||
s := "Hash\tName"
|
||||
if size {
|
||||
s = "Hash\tSize\tName"
|
||||
}
|
||||
fmt.Fprintln(tw, s)
|
||||
}
|
||||
lastObjectHash = object.Hash
|
||||
}
|
||||
|
||||
for _, link := range object.Links {
|
||||
if link.Type == unixfs.TDirectory {
|
||||
link.Name += "/"
|
||||
s := "%[1]s\t%[3]s\n"
|
||||
|
||||
switch {
|
||||
case link.Type == unixfs.TDirectory && size:
|
||||
s = "%[1]s\t\t%[3]s/\n"
|
||||
case link.Type == unixfs.TDirectory && !size:
|
||||
s = "%[1]s\t%[3]s/\n"
|
||||
case size:
|
||||
s = "%s\t%v\t%s\n"
|
||||
}
|
||||
|
||||
fmt.Fprintf(tw, "%s\t%v\t%s\n", link.Hash, link.Size, link.Name)
|
||||
fmt.Fprintf(tw, s, link.Hash, link.Size, link.Name)
|
||||
}
|
||||
}
|
||||
tw.Flush()
|
||||
|
||||
@ -704,8 +704,8 @@ func (tp *provider) TestLs(t *testing.T) {
|
||||
if len(links) != 1 {
|
||||
t.Fatalf("expected 1 link, got %d", len(links))
|
||||
}
|
||||
if links[0].Size != 15 {
|
||||
t.Fatalf("expected size = 15, got %d", links[0].Size)
|
||||
if links[0].Size != 23 {
|
||||
t.Fatalf("expected size = 23, got %d", links[0].Size)
|
||||
}
|
||||
if links[0].Name != "name-of-file" {
|
||||
t.Fatalf("expected name = name-of-file, got %s", links[0].Name)
|
||||
|
||||
@ -62,7 +62,7 @@ EOF
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs ls --size=false <three dir hashes>' succeeds" '
|
||||
ipfs ls --resolve-size QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls
|
||||
ipfs ls --size=false QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs ls <three dir hashes>' output looks good" '
|
||||
@ -147,24 +147,24 @@ EOF
|
||||
test_expect_success "'ipfs ls --stream <three dir hashes>' output looks good" '
|
||||
cat <<-\EOF >expected_ls_stream &&
|
||||
QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj:
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
|
||||
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
|
||||
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
|
||||
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
|
||||
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
|
||||
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy:
|
||||
QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
|
||||
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
|
||||
QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
|
||||
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
|
||||
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss:
|
||||
QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
|
||||
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
|
||||
QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
|
||||
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
|
||||
EOF
|
||||
test_cmp expected_ls_stream actual_ls_stream
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' succeeds" '
|
||||
ipfs ls --resolve-size --stream QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls_stream
|
||||
ipfs ls --size=false --stream QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss >actual_ls_stream
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs ls --size=false --stream <three dir hashes>' output looks good" '
|
||||
@ -193,21 +193,21 @@ EOF
|
||||
test_expect_success "'ipfs ls --stream --headers <three dir hashes>' output looks good" '
|
||||
cat <<-\EOF >expected_ls_stream_headers &&
|
||||
QmfNy183bXiRVyrhyWtq3TwHn79yHEkiAGFr18P7YNzESj:
|
||||
Hash Size Name
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
|
||||
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 13 f1
|
||||
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 13 f2
|
||||
Hash Size Name
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss d1/
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy d2/
|
||||
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
|
||||
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2
|
||||
|
||||
QmR3jhV4XpxxPjPT3Y8vNnWvWNvakdcT3H6vqpRBsX1MLy:
|
||||
Hash Size Name
|
||||
QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1035 1024
|
||||
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 14 a
|
||||
Hash Size Name
|
||||
QmbQBUSRL9raZtNXfpTDeaxQapibJEG6qEY8WqAN22aUzd 1024 1024
|
||||
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6 a
|
||||
|
||||
QmSix55yz8CzWXf5ZVM9vgEvijnEeeXiTSarVtsqiiCJss:
|
||||
Hash Size Name
|
||||
QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 139 128
|
||||
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 14 a
|
||||
Hash Size Name
|
||||
QmQNd6ubRXaNG6Prov8o6vk3bn6eWsj9FxLGrAVDUAGkGe 128 128
|
||||
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6 a
|
||||
EOF
|
||||
test_cmp expected_ls_stream_headers actual_ls_stream_headers
|
||||
'
|
||||
@ -225,21 +225,21 @@ test_ls_cmd_raw_leaves() {
|
||||
}
|
||||
|
||||
test_ls_object() {
|
||||
test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
|
||||
test_expect_success "ipfs add medium size file then 'ipfs ls --size=false' works as expected" '
|
||||
random 500000 2 > somefile &&
|
||||
HASH=$(ipfs add somefile -q) &&
|
||||
echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262158 " > ls-expect &&
|
||||
echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237870 " >> ls-expect &&
|
||||
ipfs ls $HASH > ls-actual &&
|
||||
echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 " > ls-expect &&
|
||||
echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri " >> ls-expect &&
|
||||
ipfs ls --size=false $HASH > ls-actual &&
|
||||
test_cmp ls-actual ls-expect
|
||||
'
|
||||
|
||||
test_expect_success "ipfs add medium size file then 'ipfs ls --resolve-size' works as expected" '
|
||||
test_expect_success "ipfs add medium size file then 'ipfs ls' works as expected" '
|
||||
random 500000 2 > somefile &&
|
||||
HASH=$(ipfs add somefile -q) &&
|
||||
echo "QmPrM8S5T7Q3M8DQvQMS7m41m3Aq4jBjzAzvky5fH3xfr4 262144 " > ls-expect &&
|
||||
echo "QmdaAntAzQqqVMo4B8V69nkQd5d918YjHXUe2oF6hr72ri 237856 " >> ls-expect &&
|
||||
ipfs ls --resolve-size $HASH > ls-actual &&
|
||||
ipfs ls $HASH > ls-actual &&
|
||||
test_cmp ls-actual ls-expect
|
||||
'
|
||||
}
|
||||
@ -248,7 +248,7 @@ test_ls_object() {
|
||||
test_ls_cmd
|
||||
test_ls_cmd_streaming
|
||||
test_ls_cmd_raw_leaves
|
||||
test_ls_cmd_raw_leaves --resolve-size
|
||||
test_ls_cmd_raw_leaves --size
|
||||
test_ls_object
|
||||
|
||||
# should work online
|
||||
@ -256,7 +256,7 @@ test_launch_ipfs_daemon
|
||||
test_ls_cmd
|
||||
test_ls_cmd_streaming
|
||||
test_ls_cmd_raw_leaves
|
||||
test_ls_cmd_raw_leaves --resolve-size
|
||||
test_ls_cmd_raw_leaves --size
|
||||
test_kill_ipfs_daemon
|
||||
test_ls_object
|
||||
|
||||
@ -317,8 +317,8 @@ test_launch_ipfs_daemon
|
||||
# it does it should eventually fail as the content is random and
|
||||
# should not exist on the network, but we don't want to wait for a
|
||||
# timeout so we will kill the request after a few seconds
|
||||
test_expect_success "'ipfs ls --resolve-type=false' ok and does not hang" '
|
||||
go-timeout 2 ipfs ls --resolve-type=false $DIR
|
||||
test_expect_success "'ipfs ls --resolve-type=false --size=false' ok and does not hang" '
|
||||
go-timeout 2 ipfs ls --resolve-type=false --size=false $DIR
|
||||
'
|
||||
|
||||
test_kill_ipfs_daemon
|
||||
|
||||
@ -292,7 +292,7 @@ test_object_cmd() {
|
||||
'
|
||||
|
||||
test_expect_success "output looks good" '
|
||||
echo "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4 foo/" > patched_exp &&
|
||||
echo "QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn foo/" > patched_exp &&
|
||||
test_cmp patched_exp patched_output
|
||||
'
|
||||
|
||||
|
||||
@ -65,15 +65,16 @@ test_expect_success "ipfs cat error output the same" '
|
||||
test_cmp sharded_err unsharded_err
|
||||
'
|
||||
|
||||
test_expect_success "'ipfs ls --resolve-type=false' admits missing block" '
|
||||
test_expect_success "'ipfs ls --resolve-type=false --size=false' admits missing block" '
|
||||
ipfs ls "$SHARDED" | head -1 > first_file &&
|
||||
ipfs ls --size=false "$SHARDED" | sort > sharded_out_nosize &&
|
||||
read -r HASH _ NAME <first_file &&
|
||||
ipfs pin rm "$SHARDED" "$UNSHARDED" && # To allow us to remove the block
|
||||
ipfs block rm "$HASH" &&
|
||||
test_expect_code 1 ipfs cat "$SHARDED/$NAME" &&
|
||||
test_expect_code 1 ipfs ls "$SHARDED" &&
|
||||
ipfs ls --resolve-type=false "$SHARDED" | sort > missing_out &&
|
||||
test_cmp sharded_out missing_out
|
||||
ipfs ls --resolve-type=false --size=false "$SHARDED" | sort > missing_out &&
|
||||
test_cmp sharded_out_nosize missing_out
|
||||
'
|
||||
|
||||
test_launch_ipfs_daemon
|
||||
|
||||
Loading…
Reference in New Issue
Block a user