github.com/hwaf/hwaf@v0.0.0-20140814122253-5465f73b20f1/cmd_pkg_ls.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "regexp" 6 7 "github.com/gonuts/commander" 8 "github.com/gonuts/flag" 9 ) 10 11 func hwaf_make_cmd_pkg_ls() *commander.Command { 12 cmd := &commander.Command{ 13 Run: hwaf_run_cmd_pkg_ls, 14 UsageLine: "ls [options] [pattern]", 15 Short: "list locally checked out packages", 16 Long: ` 17 ls lists the locally checked out packages. 18 19 ex: 20 $ hwaf pkg ls 21 $ hwaf pkg ls ".*?Athena.*?" 22 `, 23 Flag: *flag.NewFlagSet("hwaf-pkg-ls", flag.ExitOnError), 24 } 25 cmd.Flag.Bool("v", false, "enable verbose output") 26 27 return cmd 28 } 29 30 func hwaf_run_cmd_pkg_ls(cmd *commander.Command, args []string) error { 31 var err error 32 n := "hwaf-pkg-" + cmd.Name() 33 pat := ".*?" 34 switch len(args) { 35 case 0: 36 pat = ".*?" 37 case 1: 38 pat = args[0] 39 default: 40 return fmt.Errorf("%s: you need to give a package pattern to list", n) 41 } 42 43 verbose := cmd.Flag.Lookup("v").Value.Get().(bool) 44 45 if verbose { 46 fmt.Printf("%s: listing packages [%s]...\n", n, pat) 47 } 48 49 re_pkg, err := regexp.Compile(pat) 50 if err != nil { 51 return err 52 } 53 54 pkgs := g_ctx.PkgDb.Pkgs() 55 for _, v := range pkgs { 56 if re_pkg.MatchString(v) { 57 pkg, err := g_ctx.PkgDb.GetPkg(v) 58 if err != nil { 59 return err 60 } 61 fmt.Printf("%s (%s)\n", pkg.Path, pkg.Type) 62 } 63 } 64 65 if verbose { 66 fmt.Printf("%s: listing packages [%s]... [ok]\n", n, pat) 67 } 68 69 return err 70 } 71 72 // EOF