From a2b9acd1532d8a7ee798ffd4d84269fe75ce5dea Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sun, 17 Mar 2019 19:01:33 -0400 Subject: [PATCH] Some plugin manager improvements --- cmd/micro/micro.go | 32 +++++++++++++++++++++++++++----- internal/manager/fetch.go | 21 ++++++--------------- internal/manager/plugin.go | 22 +++++++++++----------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index e2a961f7..a076bd5b 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -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() diff --git a/internal/manager/fetch.go b/internal/manager/fetch.go index 6dc4b934..26ae3592 100644 --- a/internal/manager/fetch.go +++ b/internal/manager/fetch.go @@ -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 { diff --git a/internal/manager/plugin.go b/internal/manager/plugin.go index db307815..c5285f3a 100644 --- a/internal/manager/plugin.go +++ b/internal/manager/plugin.go @@ -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)