github.com/scaleway/scaleway-cli@v1.11.1/pkg/cli/x_cs.go (about) 1 // Copyright (C) 2015 Scaleway. All rights reserved. 2 // Use of this source code is governed by a MIT-style 3 // license that can be found in the LICENSE.md file. 4 5 package cli 6 7 import ( 8 "fmt" 9 "strconv" 10 "strings" 11 "time" 12 13 "github.com/dustin/go-humanize" 14 ) 15 16 var cmdCS = &Command{ 17 Exec: runCS, 18 UsageLine: "_cs [CONTAINER_NAME]", 19 Description: "", 20 Hidden: true, 21 Help: "List containers / datas", 22 Examples: ` 23 $ scw _cs 24 $ scw _cs containerName 25 `, 26 } 27 28 func init() { 29 cmdCS.Flag.BoolVar(&csHelp, []string{"h", "-help"}, false, "Print usage") 30 } 31 32 // Flags 33 var csHelp bool // -h, --help flag 34 35 func runCS(cmd *Command, args []string) error { 36 if csHelp { 37 return cmd.PrintUsage() 38 } 39 if len(args) > 1 { 40 return cmd.PrintShortUsage() 41 } 42 if len(args) == 0 { 43 containers, err := cmd.API.GetContainers() 44 if err != nil { 45 return fmt.Errorf("Unable to get your containers: %v", err) 46 } 47 for _, container := range containers.Containers { 48 fmt.Fprintf(cmd.Streams().Stdout, "s3://%s\n", container.Name) 49 } 50 return nil 51 } 52 container := strings.Replace(args[0], "s3://", "", 1) 53 datas, err := cmd.API.GetContainerDatas(container) 54 if err != nil { 55 return fmt.Errorf("Unable to get your data from %s: %v", container, err) 56 } 57 for _, data := range datas.Container { 58 t, err := time.Parse(time.RFC3339, data.LastModified) 59 if err != nil { 60 return err 61 } 62 year, month, day := t.Date() 63 hour, minute, _ := t.Clock() 64 size, err := strconv.Atoi(data.Size) 65 if err != nil { 66 return err 67 } 68 fmt.Fprintf(cmd.Streams().Stdout, "%-4d-%02d-%02d %02d:%02d %8s s3://%s/%s\n", year, month, day, hour, minute, humanize.Bytes(uint64(size)), container, data.Name) 69 } 70 return nil 71 }