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 }