diff --git a/assets/build/build.mk b/assets/build/build.mk index 8be43ec..4833938 100644 --- a/assets/build/build.mk +++ b/assets/build/build.mk @@ -9,7 +9,7 @@ all: check-style test dist ## Ensures the plugin manifest is valid .PHONY: manifest-check manifest-check: - ./build/bin/manifest check + pluginctl manifest check ## Builds the server, if it exists, for all supported architectures, unless MM_SERVICESETTINGS_ENABLEDEVELOPER is set. @@ -55,7 +55,7 @@ endif bundle: rm -rf dist/ mkdir -p dist/$(PLUGIN_ID) - ./build/bin/manifest dist + cp plugin.json dist/$(PLUGIN_ID)/plugin.json ifneq ($(wildcard $(ASSETS_DIR)/.),) cp -r $(ASSETS_DIR) dist/$(PLUGIN_ID)/ endif diff --git a/cmd/pluginctl/main.go b/cmd/pluginctl/main.go index 59688c9..1031cbb 100644 --- a/cmd/pluginctl/main.go +++ b/cmd/pluginctl/main.go @@ -118,7 +118,7 @@ Commands: disable Disable plugin from current directory in Mattermost server reset Reset plugin from current directory (disable then enable) updateassets Update plugin files from embedded assets - manifest Get plugin manifest information (id, version, has_server, has_webapp) + manifest Get plugin manifest information (id, version, has_server, has_webapp, check) logs View plugin logs (use --watch to follow logs in real-time) help Show this help message version Show version information @@ -134,6 +134,7 @@ Examples: pluginctl manifest version # Get plugin version pluginctl manifest has_server # Check if plugin has server code pluginctl manifest has_webapp # Check if plugin has webapp code + pluginctl manifest check # Validate plugin manifest pluginctl logs # View recent plugin logs pluginctl logs --watch # Watch plugin logs in real-time export PLUGINCTL_PLUGIN_PATH=/path/to/plugin diff --git a/manifest.go b/manifest.go index 6192057..ce1c83c 100644 --- a/manifest.go +++ b/manifest.go @@ -8,7 +8,7 @@ import ( // RunManifestCommand implements the 'manifest' command functionality with subcommands. func RunManifestCommand(args []string, pluginPath string) error { if len(args) == 0 { - return fmt.Errorf("manifest command requires a subcommand: id, version, has_server, has_webapp") + return fmt.Errorf("manifest command requires a subcommand: id, version, has_server, has_webapp, check") } // Convert to absolute path @@ -41,8 +41,14 @@ func RunManifestCommand(args []string, pluginPath string) error { } else { fmt.Println("false") } + case "check": + if err := manifest.IsValid(); err != nil { + Logger.Error("Plugin manifest validation failed", "error", err) + return err + } + Logger.Info("Plugin manifest is valid") default: - return fmt.Errorf("unknown subcommand: %s. Available subcommands: id, version, has_server, has_webapp", + return fmt.Errorf("unknown subcommand: %s. Available subcommands: id, version, has_server, has_webapp, check", subcommand) }