github.com/tooploox/oya@v0.0.21-0.20230524103240-1cda1861aad6/cmd/internal/import.go (about)

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