github.com/daniel-garcia/glide@v0.0.0-20160218012856-2eab91fab790/action/list.go (about)

     1  package action
     2  
     3  import (
     4  	"path/filepath"
     5  	"sort"
     6  
     7  	"github.com/Masterminds/glide/dependency"
     8  	"github.com/Masterminds/glide/msg"
     9  )
    10  
    11  // List lists all of the dependencies of the current project.
    12  //
    13  // Params:
    14  //  - dir (string): basedir
    15  //  - deep (bool): whether to do a deep scan or a shallow scan
    16  func List(basedir string, deep bool) {
    17  
    18  	basedir, err := filepath.Abs(basedir)
    19  	if err != nil {
    20  		msg.Die("Could not read directory: %s", err)
    21  	}
    22  
    23  	r, err := dependency.NewResolver(basedir)
    24  	if err != nil {
    25  		msg.Die("Could not create a resolver: %s", err)
    26  	}
    27  	h := &dependency.DefaultMissingPackageHandler{Missing: []string{}, Gopath: []string{}}
    28  	r.Handler = h
    29  
    30  	sortable, err := r.ResolveLocal(deep)
    31  	if err != nil {
    32  		msg.Die("Error listing dependencies: %s", err)
    33  	}
    34  
    35  	msg.Info("Sorting...")
    36  	sort.Strings(sortable)
    37  
    38  	msg.Puts("INSTALLED packages:")
    39  	for _, k := range sortable {
    40  		v, err := filepath.Rel(basedir, k)
    41  		if err != nil {
    42  			//msg.Warn("Failed to Rel path: %s", err)
    43  			v = k
    44  		}
    45  		msg.Puts("\t%s", v)
    46  	}
    47  
    48  	if len(h.Missing) > 0 {
    49  		msg.Puts("\nMISSING packages:")
    50  		for _, pkg := range h.Missing {
    51  			msg.Puts("\t%s", pkg)
    52  		}
    53  	}
    54  	if len(h.Gopath) > 0 {
    55  		msg.Puts("\nGOPATH packages:")
    56  		for _, pkg := range h.Gopath {
    57  			msg.Puts("\t%s", pkg)
    58  		}
    59  	}
    60  }