diff --git a/build/manifest/main.go b/build/manifest/main.go index 4fc73c6..1869bdc 100644 --- a/build/manifest/main.go +++ b/build/manifest/main.go @@ -13,9 +13,13 @@ import ( const PluginIdGoFileTemplate = `package main const PluginId = "%s" +const PluginVersion = "%s" ` -const PluginIdJsFileTemplate = `export default '%s'; +const PluginIdJsFileTemplate = `export default { + PluginId: '%s', + PluginVersion: '%s', +}; ` func main() { @@ -30,9 +34,12 @@ func main() { cmd := os.Args[1] switch cmd { - case "plugin_id": + case "id": dumpPluginId(manifest) + case "version": + dumpPluginVersion(manifest) + case "has_server": if manifest.HasServer() { fmt.Printf("true") @@ -81,25 +88,30 @@ func dumpPluginId(manifest *model.Manifest) { fmt.Printf("%s", manifest.Id) } +// dumpPluginVersion writes the plugin version from the given manifest to standard out +func dumpPluginVersion(manifest *model.Manifest) { + fmt.Printf("%s", manifest.Version) +} + // applyManifest propagates the plugin_id into the server and webapp folders, as necessary func applyManifest(manifest *model.Manifest) error { if manifest.HasServer() { if err := ioutil.WriteFile( - "server/plugin_id.go", - []byte(fmt.Sprintf(PluginIdGoFileTemplate, manifest.Id)), + "server/manifest.go", + []byte(fmt.Sprintf(PluginIdGoFileTemplate, manifest.Id, manifest.Version)), 0644, ); err != nil { - return errors.Wrap(err, "failed to write server/plugin_id.go") + return errors.Wrap(err, "failed to write server/manifest.go") } } if manifest.HasWebapp() { if err := ioutil.WriteFile( - "webapp/src/plugin_id.js", - []byte(fmt.Sprintf(PluginIdJsFileTemplate, manifest.Id)), + "webapp/src/manifest.js", + []byte(fmt.Sprintf(PluginIdJsFileTemplate, manifest.Id, manifest.Version)), 0644, ); err != nil { - return errors.Wrap(err, "failed to open webapp/src/plugin_id.js") + return errors.Wrap(err, "failed to open webapp/src/manifest.js") } } diff --git a/build/setup.mk b/build/setup.mk index 7550a9d..fb44d6e 100644 --- a/build/setup.mk +++ b/build/setup.mk @@ -8,7 +8,7 @@ endif $(shell cd build/manifest && $(GO) build -o ../bin/manifest) # Extract the plugin id from the manifest. -PLUGIN_ID ?= $(shell build/bin/manifest plugin_id) +PLUGIN_ID ?= $(shell build/bin/manifest id) ifeq ($(PLUGIN_ID),) $(error "Cannot parse id from $(MANIFEST_FILE)") endif diff --git a/server/plugin_id.go b/server/manifest.go similarity index 67% rename from server/plugin_id.go rename to server/manifest.go index 4a5e2e6..fec0191 100644 --- a/server/plugin_id.go +++ b/server/manifest.go @@ -1,3 +1,4 @@ package main const PluginId = "com.mattermost.sample-plugin" +const PluginVersion = "0.0.1" diff --git a/webapp/src/index.js b/webapp/src/index.js index 7b7c624..5f2d4ca 100644 --- a/webapp/src/index.js +++ b/webapp/src/index.js @@ -1,4 +1,4 @@ -import PluginId from './plugin_id'; +import Manifest from './manifest'; export default class Plugin { // eslint-disable-next-line no-unused-vars @@ -7,4 +7,4 @@ export default class Plugin { } } -window.registerPlugin(PluginId, new Plugin()); +window.registerPlugin(Manifest.PluginId, new Plugin()); diff --git a/webapp/src/manifest.js b/webapp/src/manifest.js new file mode 100644 index 0000000..2b7d02f --- /dev/null +++ b/webapp/src/manifest.js @@ -0,0 +1,4 @@ +export default { + PluginId: 'com.mattermost.sample-plugin', + PluginVersion: '0.0.1', +}; diff --git a/webapp/src/plugin_id.js b/webapp/src/plugin_id.js deleted file mode 100644 index c7b1591..0000000 --- a/webapp/src/plugin_id.js +++ /dev/null @@ -1 +0,0 @@ -export default 'com.mattermost.sample-plugin';