Files
zyedidia.micro/internal/manager/fetch.go
2019-12-25 17:05:10 -05:00

78 lines
1.4 KiB
Go

package manager
import (
"io/ioutil"
"net/http"
"os"
"path"
"github.com/zyedidia/micro/internal/config"
git "gopkg.in/src-d/go-git.v4"
)
// NewPluginInfoFromUrl creates a new PluginInfo from a URL by fetching
// the data at that URL and parsing the JSON (running a GET request at
// the URL should return the JSON for a plugin info)
func NewPluginInfoFromUrl(url string) (*PluginInfo, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
dat, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return NewPluginInfo(dat)
}
// FetchRepo downloads this plugin's git repository
func (i *PluginInfo) FetchRepo() error {
dir := path.Join(config.ConfigDir, "plugin", i.Name)
r, err := git.PlainClone(dir, false, &git.CloneOptions{
URL: i.Repo,
Progress: nil,
})
if err != nil {
return err
}
p := &Plugin{
info: i,
dir: dir,
repo: r,
}
err = p.ResolveVersion()
if err != nil {
return err
}
err = p.WriteVersion()
return err
}
func (p *Plugin) ResolveVersion() error {
return nil
}
func (p *Plugin) WriteVersion() error {
return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), os.ModePerm)
}
func (p *Plugin) FetchDeps() error {
_, err := ListInstalledPlugins()
if err != nil {
return err
}
return nil
}
func (p *Plugin) PostInstallHooks() error {
return nil
}