Skip to content

Commit

Permalink
Optimize wpm create command
Browse files Browse the repository at this point in the history
  • Loading branch information
qianlifeng committed Dec 27, 2023
1 parent 3f44565 commit b08bb51
Showing 1 changed file with 57 additions and 1 deletion.
58 changes: 57 additions & 1 deletion Wox/plugin/system/wpm.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/samber/lo"
"os"
"path"
"strings"
"wox/plugin"
"wox/share"
"wox/util"
Expand Down Expand Up @@ -96,7 +97,19 @@ func (i *WPMPlugin) Init(ctx context.Context, initParams plugin.InitParams) {
i.api.Log(ctx, fmt.Sprintf("Failed to unmarshal local plugin directories: %s", unmarshalErr.Error()))
}
}
i.loadLocalPlugins(ctx)

// remove invalid directories
i.localPluginDirectories = lo.Filter(i.localPluginDirectories, func(directory string, _ int) bool {
_, statErr := os.Stat(directory)
if statErr != nil {
i.api.Log(ctx, fmt.Sprintf("Failed to stat local plugin directory, remove it: %s", statErr.Error()))
return false
}

return true
})

i.saveLocalPluginDirectories(ctx)
}

func (i *WPMPlugin) loadLocalPlugins(ctx context.Context) {
Expand Down Expand Up @@ -334,6 +347,49 @@ func (i *WPMPlugin) createPlugin(ctx context.Context, template pluginTemplate, p
return
}

// replace variables in plugin.json
pluginJsonPath := path.Join(pluginDirectory, "plugin.json")
pluginJson, readErr := os.ReadFile(pluginJsonPath)
if readErr != nil {
i.api.Log(ctx, fmt.Sprintf("Failed to read plugin.json: %s", readErr.Error()))
i.creatingProcess = fmt.Sprintf("Failed to read plugin.json: %s", readErr.Error())
return
}

pluginJsonString := string(pluginJson)
pluginJsonString = strings.ReplaceAll(pluginJsonString, "[Id]", uuid.NewString())
pluginJsonString = strings.ReplaceAll(pluginJsonString, "[Name]", pluginName)
pluginJsonString = strings.ReplaceAll(pluginJsonString, "[Runtime]", strings.ToLower(string(template.Runtime)))
pluginJsonString = strings.ReplaceAll(pluginJsonString, "[Trigger Keyword]", "np")

writeErr := os.WriteFile(pluginJsonPath, []byte(pluginJsonString), 0644)
if writeErr != nil {
i.api.Log(ctx, fmt.Sprintf("Failed to write plugin.json: %s", writeErr.Error()))
i.creatingProcess = fmt.Sprintf("Failed to write plugin.json: %s", writeErr.Error())
return
}

// replace variables in package.json
if template.Runtime == plugin.PLUGIN_RUNTIME_NODEJS {
packageJsonPath := path.Join(pluginDirectory, "package.json")
packageJson, readPackageErr := os.ReadFile(packageJsonPath)
if readPackageErr != nil {
i.api.Log(ctx, fmt.Sprintf("Failed to read package.json: %s", readPackageErr.Error()))
i.creatingProcess = fmt.Sprintf("Failed to read package.json: %s", readPackageErr.Error())
return
}

packageJsonString := string(packageJson)
packageJsonString = strings.ReplaceAll(packageJsonString, "replace_me_with_name", pluginName)

writePackageErr := os.WriteFile(packageJsonPath, []byte(packageJsonString), 0644)
if writePackageErr != nil {
i.api.Log(ctx, fmt.Sprintf("Failed to write package.json: %s", writePackageErr.Error()))
i.creatingProcess = fmt.Sprintf("Failed to write package.json: %s", writePackageErr.Error())
return
}
}

i.creatingProcess = ""
i.localPluginDirectories = append(i.localPluginDirectories, pluginDirectory)
i.saveLocalPluginDirectories(ctx)
Expand Down

0 comments on commit b08bb51

Please sign in to comment.