Merge pull request #8 from Hanzei/plugin_version
Extract plugin version from manifest
This commit is contained in:
commit
a0e9acdbaf
7 changed files with 39 additions and 16 deletions
9
Makefile
9
Makefile
|
@ -4,6 +4,7 @@ NPM ?= $(shell command -v npm 2> /dev/null)
|
||||||
HTTP ?= $(shell command -v http 2> /dev/null)
|
HTTP ?= $(shell command -v http 2> /dev/null)
|
||||||
CURL ?= $(shell command -v curl 2> /dev/null)
|
CURL ?= $(shell command -v curl 2> /dev/null)
|
||||||
MANIFEST_FILE ?= plugin.json
|
MANIFEST_FILE ?= plugin.json
|
||||||
|
BUNDLE_NAME = $(PLUGIN_ID)_$(PLUGIN_VERSION).tar.gz
|
||||||
|
|
||||||
# Verify environment, and define PLUGIN_ID, HAS_SERVER and HAS_WEBAPP as needed.
|
# Verify environment, and define PLUGIN_ID, HAS_SERVER and HAS_WEBAPP as needed.
|
||||||
include build/setup.mk
|
include build/setup.mk
|
||||||
|
@ -61,9 +62,9 @@ ifneq ($(HAS_WEBAPP),)
|
||||||
mkdir -p dist/$(PLUGIN_ID)/webapp/dist;
|
mkdir -p dist/$(PLUGIN_ID)/webapp/dist;
|
||||||
cp -r webapp/dist/* dist/$(PLUGIN_ID)/webapp/dist/;
|
cp -r webapp/dist/* dist/$(PLUGIN_ID)/webapp/dist/;
|
||||||
endif
|
endif
|
||||||
cd dist && tar -cvzf $(PLUGIN_ID).tar.gz $(PLUGIN_ID)
|
cd dist && tar -cvzf $(BUNDLE_NAME) $(PLUGIN_ID)
|
||||||
|
|
||||||
@echo plugin built at: dist/$(PLUGIN_ID).tar.gz
|
@echo plugin built at: dist/$(BUNDLE_NAME)
|
||||||
|
|
||||||
# dist builds and bundles the plugin
|
# dist builds and bundles the plugin
|
||||||
.PHONY: dist
|
.PHONY: dist
|
||||||
|
@ -81,7 +82,7 @@ ifneq ($(and $(MM_SERVICESETTINGS_SITEURL),$(MM_ADMIN_USERNAME),$(MM_ADMIN_PASSW
|
||||||
(TOKEN=`http --print h POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/login login_id=$(MM_ADMIN_USERNAME) password=$(MM_ADMIN_PASSWORD) | grep Token | cut -f2 -d' '` && \
|
(TOKEN=`http --print h POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/login login_id=$(MM_ADMIN_USERNAME) password=$(MM_ADMIN_PASSWORD) | grep Token | cut -f2 -d' '` && \
|
||||||
http --print b GET $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/me Authorization:"Bearer $$TOKEN" && \
|
http --print b GET $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/me Authorization:"Bearer $$TOKEN" && \
|
||||||
http --print b DELETE $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID) Authorization:"Bearer $$TOKEN" && \
|
http --print b DELETE $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID) Authorization:"Bearer $$TOKEN" && \
|
||||||
http --print b --check-status --form POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins plugin@dist/$(PLUGIN_ID).tar.gz Authorization:"Bearer $$TOKEN" && \
|
http --print b --check-status --form POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins plugin@dist/$(BUNDLE_NAME) Authorization:"Bearer $$TOKEN" && \
|
||||||
http --print b POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID)/enable Authorization:"Bearer $$TOKEN" && \
|
http --print b POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID)/enable Authorization:"Bearer $$TOKEN" && \
|
||||||
http --print b POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/logout Authorization:"Bearer $$TOKEN" \
|
http --print b POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/logout Authorization:"Bearer $$TOKEN" \
|
||||||
)
|
)
|
||||||
|
@ -89,7 +90,7 @@ else ifneq ($(and $(MM_SERVICESETTINGS_SITEURL),$(MM_ADMIN_USERNAME),$(MM_ADMIN_
|
||||||
@echo "Installing plugin via API"
|
@echo "Installing plugin via API"
|
||||||
$(eval TOKEN := $(shell curl -i -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/login -d '{"login_id": "$(MM_ADMIN_USERNAME)", "password": "$(MM_ADMIN_PASSWORD)"}' | grep Token | cut -f2 -d' ' 2> /dev/null))
|
$(eval TOKEN := $(shell curl -i -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/users/login -d '{"login_id": "$(MM_ADMIN_USERNAME)", "password": "$(MM_ADMIN_PASSWORD)"}' | grep Token | cut -f2 -d' ' 2> /dev/null))
|
||||||
@curl -s -H "Authorization: Bearer $(TOKEN)" -X DELETE $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID) > /dev/null
|
@curl -s -H "Authorization: Bearer $(TOKEN)" -X DELETE $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID) > /dev/null
|
||||||
@curl -s -H "Authorization: Bearer $(TOKEN)" -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins -F "plugin=@dist/$(PLUGIN_ID).tar.gz" > /dev/null && \
|
@curl -s -H "Authorization: Bearer $(TOKEN)" -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins -F "plugin=@dist/$(BUNDLE_NAME)" > /dev/null && \
|
||||||
curl -s -H "Authorization: Bearer $(TOKEN)" -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID)/enable > /dev/null && \
|
curl -s -H "Authorization: Bearer $(TOKEN)" -X POST $(MM_SERVICESETTINGS_SITEURL)/api/v4/plugins/$(PLUGIN_ID)/enable > /dev/null && \
|
||||||
echo "OK." || echo "Sorry, something went wrong."
|
echo "OK." || echo "Sorry, something went wrong."
|
||||||
else ifneq ($(wildcard ../mattermost-server/.*),)
|
else ifneq ($(wildcard ../mattermost-server/.*),)
|
||||||
|
|
|
@ -13,9 +13,13 @@ import (
|
||||||
const PluginIdGoFileTemplate = `package main
|
const PluginIdGoFileTemplate = `package main
|
||||||
|
|
||||||
const PluginId = "%s"
|
const PluginId = "%s"
|
||||||
|
const PluginVersion = "%s"
|
||||||
`
|
`
|
||||||
|
|
||||||
const PluginIdJsFileTemplate = `export default '%s';
|
const PluginIdJsFileTemplate = `export default {
|
||||||
|
PluginId: '%s',
|
||||||
|
PluginVersion: '%s',
|
||||||
|
};
|
||||||
`
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -30,9 +34,12 @@ func main() {
|
||||||
|
|
||||||
cmd := os.Args[1]
|
cmd := os.Args[1]
|
||||||
switch cmd {
|
switch cmd {
|
||||||
case "plugin_id":
|
case "id":
|
||||||
dumpPluginId(manifest)
|
dumpPluginId(manifest)
|
||||||
|
|
||||||
|
case "version":
|
||||||
|
dumpPluginVersion(manifest)
|
||||||
|
|
||||||
case "has_server":
|
case "has_server":
|
||||||
if manifest.HasServer() {
|
if manifest.HasServer() {
|
||||||
fmt.Printf("true")
|
fmt.Printf("true")
|
||||||
|
@ -81,25 +88,30 @@ func dumpPluginId(manifest *model.Manifest) {
|
||||||
fmt.Printf("%s", manifest.Id)
|
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
|
// applyManifest propagates the plugin_id into the server and webapp folders, as necessary
|
||||||
func applyManifest(manifest *model.Manifest) error {
|
func applyManifest(manifest *model.Manifest) error {
|
||||||
if manifest.HasServer() {
|
if manifest.HasServer() {
|
||||||
if err := ioutil.WriteFile(
|
if err := ioutil.WriteFile(
|
||||||
"server/plugin_id.go",
|
"server/manifest.go",
|
||||||
[]byte(fmt.Sprintf(PluginIdGoFileTemplate, manifest.Id)),
|
[]byte(fmt.Sprintf(PluginIdGoFileTemplate, manifest.Id, manifest.Version)),
|
||||||
0644,
|
0644,
|
||||||
); err != nil {
|
); 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 manifest.HasWebapp() {
|
||||||
if err := ioutil.WriteFile(
|
if err := ioutil.WriteFile(
|
||||||
"webapp/src/plugin_id.js",
|
"webapp/src/manifest.js",
|
||||||
[]byte(fmt.Sprintf(PluginIdJsFileTemplate, manifest.Id)),
|
[]byte(fmt.Sprintf(PluginIdJsFileTemplate, manifest.Id, manifest.Version)),
|
||||||
0644,
|
0644,
|
||||||
); err != nil {
|
); 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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,17 @@ endif
|
||||||
$(shell cd build/manifest && $(GO) build -o ../bin/manifest)
|
$(shell cd build/manifest && $(GO) build -o ../bin/manifest)
|
||||||
|
|
||||||
# Extract the plugin id from the 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),)
|
ifeq ($(PLUGIN_ID),)
|
||||||
$(error "Cannot parse id from $(MANIFEST_FILE)")
|
$(error "Cannot parse id from $(MANIFEST_FILE)")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Extract the plugin version from the manifest.
|
||||||
|
PLUGIN_VERSION ?= $(shell build/bin/manifest version)
|
||||||
|
ifeq ($(PLUGIN_VERSION),)
|
||||||
|
$(error "Cannot parse id from $(MANIFEST_FILE)")
|
||||||
|
endif
|
||||||
|
|
||||||
# Determine if a server is defined in the manifest.
|
# Determine if a server is defined in the manifest.
|
||||||
HAS_SERVER ?= $(shell build/bin/manifest has_server)
|
HAS_SERVER ?= $(shell build/bin/manifest has_server)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
const PluginId = "com.mattermost.sample-plugin"
|
const PluginId = "com.mattermost.sample-plugin"
|
||||||
|
const PluginVersion = "0.0.1"
|
|
@ -1,4 +1,4 @@
|
||||||
import PluginId from './plugin_id';
|
import Manifest from './manifest';
|
||||||
|
|
||||||
export default class Plugin {
|
export default class Plugin {
|
||||||
// eslint-disable-next-line no-unused-vars
|
// 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());
|
||||||
|
|
4
webapp/src/manifest.js
Normal file
4
webapp/src/manifest.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
export default {
|
||||||
|
PluginId: 'com.mattermost.sample-plugin',
|
||||||
|
PluginVersion: '0.0.1',
|
||||||
|
};
|
|
@ -1 +0,0 @@
|
||||||
export default 'com.mattermost.sample-plugin';
|
|
Reference in a new issue