github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/cmd/swarm/list.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:31</date> 10 //</624342605815091200> 11 12 13 package main 14 15 import ( 16 "fmt" 17 "os" 18 "strings" 19 "text/tabwriter" 20 21 "github.com/ethereum/go-ethereum/cmd/utils" 22 swarm "github.com/ethereum/go-ethereum/swarm/api/client" 23 "gopkg.in/urfave/cli.v1" 24 ) 25 26 func list(ctx *cli.Context) { 27 args := ctx.Args() 28 29 if len(args) < 1 { 30 utils.Fatalf("Please supply a manifest reference as the first argument") 31 } else if len(args) > 2 { 32 utils.Fatalf("Too many arguments - usage 'swarm ls manifest [prefix]'") 33 } 34 manifest := args[0] 35 36 var prefix string 37 if len(args) == 2 { 38 prefix = args[1] 39 } 40 41 bzzapi := strings.TrimRight(ctx.GlobalString(SwarmApiFlag.Name), "/") 42 client := swarm.NewClient(bzzapi) 43 list, err := client.List(manifest, prefix, "") 44 if err != nil { 45 utils.Fatalf("Failed to generate file and directory list: %s", err) 46 } 47 48 w := tabwriter.NewWriter(os.Stdout, 1, 2, 2, ' ', 0) 49 defer w.Flush() 50 fmt.Fprintln(w, "HASH\tCONTENT TYPE\tPATH") 51 for _, prefix := range list.CommonPrefixes { 52 fmt.Fprintf(w, "%s\t%s\t%s\n", "", "DIR", prefix) 53 } 54 for _, entry := range list.Entries { 55 fmt.Fprintf(w, "%s\t%s\t%s\n", entry.Hash, entry.ContentType, entry.Path) 56 } 57 } 58