github.com/faceair/glide@v0.13.2-0.20180618124022-54b926f67677/action/import_gb.go (about)

     1  package action
     2  
     3  import (
     4  	"github.com/Masterminds/glide/cfg"
     5  	"github.com/Masterminds/glide/gb"
     6  	"github.com/Masterminds/glide/msg"
     7  	gpath "github.com/Masterminds/glide/path"
     8  )
     9  
    10  // ImportGB imports GB dependencies into the present glide config.
    11  func ImportGB(dest string) {
    12  	base := "."
    13  	config := EnsureConfig()
    14  	if !gb.Has(base) {
    15  		msg.Die("There is no GB manifest to import.")
    16  	}
    17  	deps, err := gb.Parse(base)
    18  	if err != nil {
    19  		msg.Die("Failed to extract GB manifest: %s", err)
    20  	}
    21  	appendImports(deps, config)
    22  	writeConfigToFileOrStdout(config, dest)
    23  }
    24  
    25  func appendImports(deps []*cfg.Dependency, config *cfg.Config) {
    26  	if len(deps) == 0 {
    27  		msg.Info("No dependencies added.")
    28  		return
    29  	}
    30  
    31  	//Append deps to existing dependencies.
    32  	if err := config.AddImport(deps...); err != nil {
    33  		msg.Die("Failed to add imports: %s", err)
    34  	}
    35  }
    36  
    37  // writeConfigToFileOrStdout is a convenience function for import utils.
    38  func writeConfigToFileOrStdout(config *cfg.Config, dest string) {
    39  	if dest != "" {
    40  		if err := config.WriteFile(dest); err != nil {
    41  			msg.Die("Failed to write %s: %s", gpath.GlideFile, err)
    42  		}
    43  	} else {
    44  		o, err := config.Marshal()
    45  		if err != nil {
    46  			msg.Die("Error encoding config: %s", err)
    47  		}
    48  		msg.Default.Stdout.Write(o)
    49  	}
    50  }