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  }