You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
904 B
Go

package operators
import (
"fmt"
"path/filepath"
"gopkg.in/src-d/go-git.v4"
)
func Install(pkg string) error {
downloadTheDirectory()
packages, err := getPackages()
if err != nil {
return err
}
repo, ok := packages[pkg]
if !ok {
return fmt.Errorf("package %q not found in package list", pkg)
}
modDir, err := getModBaseDir()
if err != nil {
return err
}
_, err = git.PlainClone(filepath.Join(modDir, pkg), false, &git.CloneOptions{
URL: repo,
})
if err != nil {
return err
}
_, err := os.Stat(filepath.Join(modDir, pkg, "main.slo"))
if err != nil && os.IsNotExist(err) {
err = Remove(pkg)
if err != nil {
return fmt.Errorf("package %q was not a valid slope package, an attempt to remove the files failed: %s", pkg, repo)
}
return fmt.Errorf("package %q does not contain a valid 'main.slo' file, the failed package has been removed", pkg)
}
return nil
}