Skip to content

Commit

Permalink
mod: Optimize plugin code
Browse files Browse the repository at this point in the history
  • Loading branch information
aooohan committed Feb 1, 2024
1 parent b02b441 commit d8300ba
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 43 deletions.
5 changes: 4 additions & 1 deletion cmd/commands/activate.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,10 @@ func activateCmd(ctx *cli.Context) error {
manager := internal.NewSdkManager(internal.GlobalRecordSource, internal.ProjectRecordSource)
defer manager.Record.Save()
defer manager.Close()
envKeys := manager.EnvKeys()
envKeys, err := manager.EnvKeys()
if err != nil {
return err
}
envKeys[env.HookFlag] = &name
envKeys[env.PathFlag] = envKeys["PATH"]
path := manager.PathMeta.ExecutablePath
Expand Down
5 changes: 4 additions & 1 deletion cmd/commands/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,10 @@ func envCmd(ctx *cli.Context) error {
}
manager := internal.NewSdkManagerWithSource(internal.SessionRecordSource, internal.ProjectRecordSource)
defer manager.Close()
envKeys := manager.EnvKeys()
envKeys, err := manager.EnvKeys()
if err != nil {
return err
}
exportStr := s.Export(envKeys)
fmt.Println(exportStr)
return nil
Expand Down
20 changes: 11 additions & 9 deletions internal/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,20 @@ type Manager struct {
Config *config.Config
}

func (m *Manager) EnvKeys() env.Envs {
func (m *Manager) EnvKeys() (env.Envs, error) {
shellEnvs := make(env.Envs)
var paths []string
for k, v := range m.Record.Export() {
if lookupSdk, err := m.LookupSdk(k); err == nil {
if keys, err := lookupSdk.EnvKeys(Version(v)); err == nil {
for key, value := range keys {
if key == "PATH" {
paths = append(paths, *value)
} else {
shellEnvs[key] = value
}
keys, err := lookupSdk.EnvKeys(Version(v))
if err != nil {
return nil, err
}
for key, value := range keys {
if key == "PATH" {
paths = append(paths, *value)
} else {
shellEnvs[key] = value
}
}
}
Expand All @@ -80,7 +82,7 @@ func (m *Manager) EnvKeys() env.Envs {
pathStr := m.EnvManager.Paths(paths[:])
shellEnvs["PATH"] = &pathStr
}
return shellEnvs
return shellEnvs, nil
}

// LookupSdk lookup sdk by name
Expand Down
79 changes: 47 additions & 32 deletions internal/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,11 @@ func (l *LuaPlugin) Available() ([]*Package, error) {
err = fmt.Errorf("the return value is not a table")
return
}
v := kvTable.RawGetString("version").String()
note := kvTable.RawGetString("note").String()
mainSdk := &Info{
Name: l.Name,
Version: Version(v),
Note: note,
mainSdk, err := l.parseInfo(kvTable)
if err != nil {
return
}
mainSdk.Name = l.Name
var additionalArr []*Info
additional := kvTable.RawGetString("addition")
if tb, ok := additional.(*lua.LTable); ok && tb.Len() != 0 {
Expand All @@ -107,11 +105,11 @@ func (l *LuaPlugin) Available() ([]*Package, error) {
err = fmt.Errorf("the return value is not a table")
return
}
item := Info{
Name: itemTable.RawGetString("name").String(),
Version: Version(itemTable.RawGetString("version").String()),
item, err := l.parseInfo(itemTable)
if err != nil {
return
}
additionalArr = append(additionalArr, &item)
additionalArr = append(additionalArr, item)
})
}

Expand All @@ -128,7 +126,7 @@ func (l *LuaPlugin) Available() ([]*Package, error) {
return result, nil
}

func (l *LuaPlugin) Checksum(table *lua.LTable) (*Checksum, error) {
func (l *LuaPlugin) Checksum(table *lua.LTable) *Checksum {
checksum := &Checksum{}
sha256 := table.RawGetString("sha256")
md5 := table.RawGetString("md5")
Expand All @@ -147,9 +145,9 @@ func (l *LuaPlugin) Checksum(table *lua.LTable) (*Checksum, error) {
checksum.Value = sha512.String()
checksum.Type = "sha512"
} else {
return NoneChecksum, nil
return NoneChecksum
}
return checksum, nil
return checksum
}

func (l *LuaPlugin) PreInstall(version Version) (*Package, error) {
Expand All @@ -170,19 +168,11 @@ func (l *LuaPlugin) PreInstall(version Version) (*Package, error) {
if table == nil || table.Type() == lua.LTNil {
return nil, nil
}
v := table.RawGetString("version").String()
muStr := table.RawGetString("url").String()

checksum, err := l.Checksum(table)
mainSdk, err := l.parseInfo(table)
if err != nil {
return nil, err
}
mainSdk := &Info{
Name: l.Name,
Version: Version(v),
Path: muStr,
Checksum: checksum,
}
mainSdk.Name = l.Name
var additionalArr []*Info
additional := table.RawGetString("addition")
if tb, ok := additional.(*lua.LTable); ok && tb.Len() != 0 {
Expand All @@ -193,18 +183,11 @@ func (l *LuaPlugin) PreInstall(version Version) (*Package, error) {
err = fmt.Errorf("the return value is not a table")
return
}
s := kvTable.RawGetString("url").String()
checksum, err = l.Checksum(kvTable)
info, err := l.parseInfo(kvTable)
if err != nil {
return
}
item := Info{
Name: kvTable.RawGetString("name").String(),
Version: Version(kvTable.RawGetString("version").String()),
Path: s,
Checksum: checksum,
}
additionalArr = append(additionalArr, &item)
additionalArr = append(additionalArr, info)
})
if err != nil {
return nil, err
Expand All @@ -217,6 +200,38 @@ func (l *LuaPlugin) PreInstall(version Version) (*Package, error) {
}, nil
}

func (l *LuaPlugin) parseInfo(table *lua.LTable) (*Info, error) {
versionLua := table.RawGetString("version")
if versionLua == lua.LNil {
return nil, fmt.Errorf("no version number provided")
}
var (
path string
note string
name string
version string
)
version = versionLua.String()

if urlLua := table.RawGetString("url"); urlLua != lua.LNil {
path = urlLua.String()
}
if noteLua := table.RawGetString("note"); noteLua != lua.LNil {
note = noteLua.String()
}
if nameLua := table.RawGetString("name"); nameLua != lua.LNil {
name = nameLua.String()
}
checksum := l.Checksum(table)
return &Info{
Name: name,
Version: Version(version),
Path: path,
Note: note,
Checksum: checksum,
}, nil
}

func (l *LuaPlugin) PostInstall(rootPath string, sdks []*Info) error {
L := l.state
sdkArr := L.NewTable()
Expand Down

0 comments on commit d8300ba

Please sign in to comment.