mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-05 22:50:21 +09:00
78 lines
1.4 KiB
Go
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
|
|
}
|