github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/testing/runfossa/runfossa.go (about)

     1  package runfossa
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/fossas/fossa-cli/api/fossa"
     7  	"github.com/fossas/fossa-cli/exec"
     8  )
     9  
    10  // Init executes fossa init the provided directory
    11  func Init(projectDir string) (stdout, stderr string, err error) {
    12  	return runfossa(projectDir, []string{"init"})
    13  }
    14  
    15  func LicenseReport(projectDir string, args []string) (stdout, stderr string, err error) {
    16  	args = append([]string{"report", "licenses"}, args...)
    17  	return runfossa(projectDir, args)
    18  }
    19  
    20  func DependencyReport(projectDir string, args []string) (stdout, stderr string, err error) {
    21  	args = append([]string{"report", "dependencies"}, args...)
    22  	return runfossa(projectDir, args)
    23  }
    24  
    25  func AnalyzeOutput(dir string, args []string) ([]fossa.SourceUnit, error) {
    26  	stdout, _, err := runfossa(dir, append([]string{"analyze", "--output"}, args...))
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	var parsed []fossa.SourceUnit
    31  	err = json.Unmarshal([]byte(stdout), &parsed)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  	return parsed, nil
    36  }
    37  
    38  func runfossa(projectDir string, argv []string) (stdout, stderr string, err error) {
    39  	cmd := exec.Cmd{
    40  		Argv:    argv,
    41  		Name:    "fossa",
    42  		Dir:     projectDir,
    43  		Command: "fossa",
    44  	}
    45  
    46  	return exec.Run(cmd)
    47  
    48  }