Some plugin manager improvements

This commit is contained in:
Zachary Yedidia
2019-03-17 19:01:33 -04:00
parent 4497daaef1
commit a2b9acd153
3 changed files with 44 additions and 31 deletions

View File

@@ -12,6 +12,7 @@ import (
"github.com/zyedidia/micro/internal/action"
"github.com/zyedidia/micro/internal/buffer"
"github.com/zyedidia/micro/internal/config"
"github.com/zyedidia/micro/internal/manager"
"github.com/zyedidia/micro/internal/screen"
"github.com/zyedidia/micro/internal/util"
"github.com/zyedidia/tcell"
@@ -27,6 +28,7 @@ var (
flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.")
flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory")
flagOptions = flag.Bool("options", false, "Show all option help")
flagPlugin = flag.String("plugin", "", "Run a plugin manager action")
)
func InitFlags() {
@@ -38,6 +40,9 @@ func InitFlags() {
fmt.Println("+LINE:COL")
fmt.Println(" \tSpecify a line and column to start the cursor at when opening a buffer")
fmt.Println(" \tThis can also be done by opening file:LINE:COL")
fmt.Println("-plugin ACTION")
fmt.Println(" \tRun a plugin manager action")
fmt.Println(" \tActions include: list, add, remove")
fmt.Println("-options")
fmt.Println(" \tShow all option help")
fmt.Println("-version")
@@ -58,6 +63,11 @@ func InitFlags() {
flag.Parse()
err := config.InitConfigDir(*flagConfigDir)
if err != nil {
screen.TermMessage(err)
}
if *flagVersion {
// If -version was passed
fmt.Println("Version:", util.Version)
@@ -66,6 +76,22 @@ func InitFlags() {
os.Exit(0)
}
if len(*flagPlugin) != 0 {
action := *flagPlugin
// args := flag.Args()
if action == "list" {
plugins, err := manager.ListInstalledPlugins()
if err != nil {
fmt.Println(err)
} else {
for _, p := range plugins {
fmt.Println(p.Info.Name, p.Version)
}
}
}
os.Exit(0)
}
if *flagOptions {
// If -options was passed
for k, v := range config.DefaultGlobalSettings() {
@@ -158,13 +184,9 @@ func main() {
}
config.InitGlobalSettings()
// InitConfigDir happens in InitFlags
InitFlags()
err = config.InitConfigDir(*flagConfigDir)
if err != nil {
screen.TermMessage(err)
}
action.InitBindings()
action.InitCommands()

View File

@@ -43,9 +43,9 @@ func (i *PluginInfo) FetchRepo() error {
}
p := &Plugin{
info: i,
dir: dir,
repo: r,
Info: i,
Dir: dir,
Repo: r,
}
err = p.ResolveVersion()
@@ -58,7 +58,7 @@ func (i *PluginInfo) FetchRepo() error {
}
func (p *Plugin) ResolveVersion() error {
i := p.info
i := p.Info
vs := i.Versions
for _, v := range vs {
@@ -67,7 +67,7 @@ func (p *Plugin) ResolveVersion() error {
return err
}
if microrange(util.SemVersion) {
p.version = v.Vers
p.Version = v.Vers
fmt.Println("resolve version to ", v.Vstr)
return nil
}
@@ -77,16 +77,7 @@ func (p *Plugin) ResolveVersion() error {
}
func (p *Plugin) WriteVersion() error {
return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), 0644)
}
func (p *Plugin) FetchDeps() error {
_, err := ListInstalledPlugins()
if err != nil {
return err
}
return nil
return ioutil.WriteFile(path.Join(p.Dir, versionfile), []byte(p.Version.String()), 0644)
}
func (p *Plugin) PostInstallHooks() error {

View File

@@ -29,15 +29,15 @@ const (
)
type Plugin struct {
info *PluginInfo
dir string
repo *git.Repository
version semver.Version // currently installed version
Info *PluginInfo
Dir string
Repo *git.Repository
Version semver.Version // currently installed version
}
func (p *Plugin) GetRequires() *PluginVersion {
for _, v := range p.info.Versions {
if p.version.Equals(v.Vers) {
for _, v := range p.Info.Versions {
if p.Version.Equals(v.Vers) {
return &v
}
}
@@ -146,7 +146,7 @@ func ListInstalledPlugins() ([]*Plugin, error) {
if err != nil {
return nil, err
}
sv, err := semver.Make(string(versiondat))
sv, err := semver.Make(string(bytes.TrimSpace(versiondat)))
if err != nil {
return nil, err
}
@@ -158,10 +158,10 @@ func ListInstalledPlugins() ([]*Plugin, error) {
}
p := &Plugin{
info: info,
dir: dirname,
repo: r,
version: sv,
Info: info,
Dir: dirname,
Repo: r,
Version: sv,
}
plugins = append(plugins, p)