github.com/bilus/oya@v0.0.3-0.20190301162104-da4acbd394c6/cmd/internal/import.go (about)

     1  package internal
     2  
     3  import (
     4  	"io"
     5  	"strings"
     6  
     7  	"github.com/bilus/oya/pkg/project"
     8  	"github.com/bilus/oya/pkg/raw"
     9  	"github.com/pkg/errors"
    10  )
    11  
    12  func Import(workDir, uri string, stdout, stderr io.Writer) error {
    13  	uriArr := strings.Split(uri, "/")
    14  	alias := uriArr[len(uriArr)-1]
    15  
    16  	installDir, err := installDir()
    17  	if err != nil {
    18  		return wrapErr(err, uri)
    19  	}
    20  	proj, err := project.Detect(workDir, installDir)
    21  	if err != nil {
    22  		return err
    23  	}
    24  
    25  	raw, found, err := raw.LoadFromDir(workDir, proj.RootDir)
    26  	if err != nil {
    27  		return err
    28  	}
    29  	if !found {
    30  		return errors.Errorf("No Oyafile found in %v", workDir)
    31  	}
    32  
    33  	if err := raw.AddImport(alias, uri); err != nil {
    34  		return err
    35  	}
    36  
    37  	return nil
    38  }