• W. Trevor King's avatar
    core/commands/unixfs: Add 'ipfs unixfs ls ...' · 434871ba
    W. Trevor King authored
    This is similar to 'ipfs ls ...', but it:
    
    * Lists file sizes that match the content size:
    
        $ ipfs --encoding=json unixfs ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4
        {
          "Objects": [
            {
              "Argument": "/ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4",
              "Links": [
                {
                  "Name": "busybox",
                  "Hash": "QmPbjmmci73roXf9VijpyQGgRJZthiQfnEetaMRGoGYV5a",
                  "Size": 1947624,
                  "Type": 2
                }
              ]
            }
          ]
        }
        $ ipfs cat /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4/busybox | wc -c
        1947624
    
      'ipfs ls ...', on the other hand, is using the Merkle-descendant
      size, which also includes fanout links and the typing information
      unixfs objects store in their Data:
    
        $ ipfs --encoding=json ls /ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4
        {
          "Objects": [
            {
              "Hash": "/ipfs/QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4",
              "Links": [
                {
                  "Name": "busybox",
                  "Hash": "QmPbjmmci73roXf9VijpyQGgRJZthiQfnEetaMRGoGYV5a",
                  "Size": 1948128,
                  "Type": 2
                }
              ]
            }
          ]
        }
    
    * Has a simpler text output corresponding to POSIX ls [1]:
    
        $ ipfs unixfs ls /ipfs/QmV2FrBtvue5ve7vxbAzKz3mTdWq8wfMNPwYd8d9KHksCF/gentoo/stage3/amd64/2015-04-02
        bin
        dev
        etc
        proc
        run
        sys
        $ ipfs ls /ipfs/QmV2FrBtvue5ve7vxbAzKz3mTdWq8wfMNPwYd8d9KHksCF/gentoo/stage3/amd64/2015-04-02
        QmSRCHG21Sbqm3EJG9aEBo4vS7Fqu86pAjqf99MyCdNxZ4 1948183 bin/
        QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       dev/
        QmUz1Z5jnQEjwr78fiMk5babwjJBDmhN5sx5HvPiTGGGjM 1207    etc/
        QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       proc/
        QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       run/
        QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4       sys/
    
      The minimal output allows us to start off with POSIX compliance and
      then add options (which may or may not be POSIX compatible) to
      adjust the output format as we get a better feel for what we need
      ([2] through [3]).
    
    [1]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls.html
    [2]: https://botbot.me/freenode/ipfs/2015-06-12/?msg=41724727&page=5
    [3]: https://botbot.me/freenode/ipfs/2015-06-12/?msg=41725146&page=5
    
    License: MIT
    Signed-off-by: default avatarW. Trevor King <wking@tremily.us>
    434871ba
root.go 3.26 KB