github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/bower/bower.go (about) 1 package bower 2 3 import ( 4 "encoding/json" 5 6 "github.com/fossas/fossa-cli/files" 7 8 "github.com/fossas/fossa-cli/exec" 9 ) 10 11 type PackageMetadata struct { 12 Name string 13 Version string 14 15 TargetName string `json:"_originalSource"` 16 TargetVersion string `json:"_target"` 17 } 18 19 type Endpoint struct { 20 Name string 21 Source string 22 Target string 23 } 24 25 type Package struct { 26 Endpoint Endpoint 27 PkgMeta PackageMetadata 28 Dependencies map[string]Package 29 Missing bool 30 } 31 32 type Bower struct { 33 Cmd string 34 Config Config 35 } 36 37 func New(cmd, dir string) (*Bower, error) { 38 config, err := ReadConfig(dir) 39 if err != nil { 40 return nil, err 41 } 42 bower := Bower{ 43 Cmd: cmd, 44 Config: config, 45 } 46 return &bower, nil 47 } 48 49 func (b *Bower) List() (Package, error) { 50 stdout, _, err := exec.Run(exec.Cmd{ 51 Name: b.Cmd, 52 Argv: []string{"list", "--json"}, 53 Dir: b.Config.CWD, 54 }) 55 if err != nil { 56 return Package{}, err 57 } 58 var pkg Package 59 err = json.Unmarshal([]byte(stdout), &pkg) 60 if err != nil { 61 return Package{}, err 62 } 63 return pkg, nil 64 } 65 66 func (b *Bower) Clean() error { 67 return files.Rm(b.Config.Directory) 68 } 69 70 func (b *Bower) Install(production bool) error { 71 args := []string{"install"} 72 if production { 73 args = append(args, "--production") 74 } 75 _, _, err := exec.Run(exec.Cmd{ 76 Name: b.Cmd, 77 Argv: args, 78 Dir: b.Config.CWD, 79 }) 80 return err 81 }