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
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
|
|
}
|