mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-28 22:08:12 +09:00
Some plugin manager improvements
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/zyedidia/micro/internal/action"
|
"github.com/zyedidia/micro/internal/action"
|
||||||
"github.com/zyedidia/micro/internal/buffer"
|
"github.com/zyedidia/micro/internal/buffer"
|
||||||
"github.com/zyedidia/micro/internal/config"
|
"github.com/zyedidia/micro/internal/config"
|
||||||
|
"github.com/zyedidia/micro/internal/manager"
|
||||||
"github.com/zyedidia/micro/internal/screen"
|
"github.com/zyedidia/micro/internal/screen"
|
||||||
"github.com/zyedidia/micro/internal/util"
|
"github.com/zyedidia/micro/internal/util"
|
||||||
"github.com/zyedidia/tcell"
|
"github.com/zyedidia/tcell"
|
||||||
@@ -27,6 +28,7 @@ var (
|
|||||||
flagStartPos = flag.String("startpos", "", "LINE,COL to start the cursor at when opening a buffer.")
|
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")
|
flagConfigDir = flag.String("config-dir", "", "Specify a custom location for the configuration directory")
|
||||||
flagOptions = flag.Bool("options", false, "Show all option help")
|
flagOptions = flag.Bool("options", false, "Show all option help")
|
||||||
|
flagPlugin = flag.String("plugin", "", "Run a plugin manager action")
|
||||||
)
|
)
|
||||||
|
|
||||||
func InitFlags() {
|
func InitFlags() {
|
||||||
@@ -38,6 +40,9 @@ func InitFlags() {
|
|||||||
fmt.Println("+LINE:COL")
|
fmt.Println("+LINE:COL")
|
||||||
fmt.Println(" \tSpecify a line and column to start the cursor at when opening a buffer")
|
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(" \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("-options")
|
||||||
fmt.Println(" \tShow all option help")
|
fmt.Println(" \tShow all option help")
|
||||||
fmt.Println("-version")
|
fmt.Println("-version")
|
||||||
@@ -58,6 +63,11 @@ func InitFlags() {
|
|||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
err := config.InitConfigDir(*flagConfigDir)
|
||||||
|
if err != nil {
|
||||||
|
screen.TermMessage(err)
|
||||||
|
}
|
||||||
|
|
||||||
if *flagVersion {
|
if *flagVersion {
|
||||||
// If -version was passed
|
// If -version was passed
|
||||||
fmt.Println("Version:", util.Version)
|
fmt.Println("Version:", util.Version)
|
||||||
@@ -66,6 +76,22 @@ func InitFlags() {
|
|||||||
os.Exit(0)
|
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 *flagOptions {
|
||||||
// If -options was passed
|
// If -options was passed
|
||||||
for k, v := range config.DefaultGlobalSettings() {
|
for k, v := range config.DefaultGlobalSettings() {
|
||||||
@@ -158,13 +184,9 @@ func main() {
|
|||||||
}
|
}
|
||||||
config.InitGlobalSettings()
|
config.InitGlobalSettings()
|
||||||
|
|
||||||
|
// InitConfigDir happens in InitFlags
|
||||||
InitFlags()
|
InitFlags()
|
||||||
|
|
||||||
err = config.InitConfigDir(*flagConfigDir)
|
|
||||||
if err != nil {
|
|
||||||
screen.TermMessage(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
action.InitBindings()
|
action.InitBindings()
|
||||||
action.InitCommands()
|
action.InitCommands()
|
||||||
|
|
||||||
|
|||||||
@@ -43,9 +43,9 @@ func (i *PluginInfo) FetchRepo() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p := &Plugin{
|
p := &Plugin{
|
||||||
info: i,
|
Info: i,
|
||||||
dir: dir,
|
Dir: dir,
|
||||||
repo: r,
|
Repo: r,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = p.ResolveVersion()
|
err = p.ResolveVersion()
|
||||||
@@ -58,7 +58,7 @@ func (i *PluginInfo) FetchRepo() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Plugin) ResolveVersion() error {
|
func (p *Plugin) ResolveVersion() error {
|
||||||
i := p.info
|
i := p.Info
|
||||||
vs := i.Versions
|
vs := i.Versions
|
||||||
|
|
||||||
for _, v := range vs {
|
for _, v := range vs {
|
||||||
@@ -67,7 +67,7 @@ func (p *Plugin) ResolveVersion() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if microrange(util.SemVersion) {
|
if microrange(util.SemVersion) {
|
||||||
p.version = v.Vers
|
p.Version = v.Vers
|
||||||
fmt.Println("resolve version to ", v.Vstr)
|
fmt.Println("resolve version to ", v.Vstr)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@@ -77,16 +77,7 @@ func (p *Plugin) ResolveVersion() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Plugin) WriteVersion() error {
|
func (p *Plugin) WriteVersion() error {
|
||||||
return ioutil.WriteFile(path.Join(p.dir, versionfile), []byte(p.version.String()), 0644)
|
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Plugin) PostInstallHooks() error {
|
func (p *Plugin) PostInstallHooks() error {
|
||||||
|
|||||||
@@ -29,15 +29,15 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Plugin struct {
|
type Plugin struct {
|
||||||
info *PluginInfo
|
Info *PluginInfo
|
||||||
dir string
|
Dir string
|
||||||
repo *git.Repository
|
Repo *git.Repository
|
||||||
version semver.Version // currently installed version
|
Version semver.Version // currently installed version
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Plugin) GetRequires() *PluginVersion {
|
func (p *Plugin) GetRequires() *PluginVersion {
|
||||||
for _, v := range p.info.Versions {
|
for _, v := range p.Info.Versions {
|
||||||
if p.version.Equals(v.Vers) {
|
if p.Version.Equals(v.Vers) {
|
||||||
return &v
|
return &v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ func ListInstalledPlugins() ([]*Plugin, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
sv, err := semver.Make(string(versiondat))
|
sv, err := semver.Make(string(bytes.TrimSpace(versiondat)))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -158,10 +158,10 @@ func ListInstalledPlugins() ([]*Plugin, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p := &Plugin{
|
p := &Plugin{
|
||||||
info: info,
|
Info: info,
|
||||||
dir: dirname,
|
Dir: dirname,
|
||||||
repo: r,
|
Repo: r,
|
||||||
version: sv,
|
Version: sv,
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins = append(plugins, p)
|
plugins = append(plugins, p)
|
||||||
|
|||||||
Reference in New Issue
Block a user