PLT-8018: Bundled jira plugin (#7920)

* bundled jira plugin

* fix generated file formatting, add prepackaged key

* whoops, uploaded wrong file

* whitelist generated files for license check

* make it work for people without go/bin in their path
This commit is contained in:
Chris
2017-11-30 14:55:44 -06:00
committed by GitHub
parent eaca461ee3
commit daebd26a28
17 changed files with 843 additions and 358 deletions

View File

@@ -31,9 +31,6 @@ type PluginOption struct {
}
type PluginSetting struct {
// The key that the setting will be assigned to in the configuration file.
Key string `json:"key" yaml:"key"`
// The display name for the setting.
DisplayName string `json:"display_name" yaml:"display_name"`
@@ -79,8 +76,8 @@ type PluginSettingsSchema struct {
// Optional text to display below the settings.
Footer string `json:"footer" yaml:"footer"`
// A list of setting definitions.
Settings []*PluginSetting `json:"settings" yaml:"settings"`
// A mapping of setting keys to schema definitions.
Settings map[string]*PluginSetting `json:"settings" yaml:"settings"`
}
// The plugin manifest defines the metadata required to load and present your plugin. The manifest
@@ -96,11 +93,11 @@ type PluginSettingsSchema struct {
// executable: myplugin
// settings_schema:
// settings:
// - key: enable_extra_thing
// type: bool
// display_name: Enable Extra Thing
// help_text: When true, an extra thing will be enabled!
// default: false
// enable_extra_thing:
// type: bool
// display_name: Enable Extra Thing
// help_text: When true, an extra thing will be enabled!
// default: false
type Manifest struct {
// The id is a globally unique identifier that represents your plugin. Reverse-DNS notation
// using a name you control is a good option. For example, "com.mycompany.myplugin".
@@ -129,8 +126,6 @@ type Manifest struct {
type ManifestBackend struct {
// The path to your executable binary. This should be relative to the root of your bundle and the
// location of the manifest file.
//
// On Windows, this file must have a ".exe" extension.
Executable string `json:"executable" yaml:"executable"`
}

View File

@@ -70,9 +70,8 @@ func TestManifestUnmarshal(t *testing.T) {
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: []*PluginSetting{
&PluginSetting{
Key: "thesetting",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",
@@ -101,16 +100,16 @@ settings_schema:
header: theheadertext
footer: thefootertext
settings:
- key: thesetting
display_name: thedisplayname
type: dropdown
help_text: thehelptext
regenerate_help_text: theregeneratehelptext
placeholder: theplaceholder
options:
- display_name: theoptiondisplayname
value: thevalue
default: thedefault
thesetting:
display_name: thedisplayname
type: dropdown
help_text: thehelptext
regenerate_help_text: theregeneratehelptext
placeholder: theplaceholder
options:
- display_name: theoptiondisplayname
value: thevalue
default: thedefault
`), &yamlResult))
assert.Equal(t, expected, yamlResult)
@@ -126,23 +125,22 @@ settings_schema:
"settings_schema": {
"header": "theheadertext",
"footer": "thefootertext",
"settings": [
{
"key": "thesetting",
"display_name": "thedisplayname",
"type": "dropdown",
"help_text": "thehelptext",
"regenerate_help_text": "theregeneratehelptext",
"placeholder": "theplaceholder",
"options": [
{
"display_name": "theoptiondisplayname",
"value": "thevalue"
}
],
"default": "thedefault"
}
]
"settings": {
"thesetting": {
"display_name": "thedisplayname",
"type": "dropdown",
"help_text": "thehelptext",
"regenerate_help_text": "theregeneratehelptext",
"placeholder": "theplaceholder",
"options": [
{
"display_name": "theoptiondisplayname",
"value": "thevalue"
}
],
"default": "thedefault"
}
}
}
}`), &jsonResult))
assert.Equal(t, expected, jsonResult)
@@ -177,9 +175,8 @@ func TestManifestJson(t *testing.T) {
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: []*PluginSetting{
&PluginSetting{
Key: "thesetting",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",
@@ -242,9 +239,8 @@ func TestManifestClientManifest(t *testing.T) {
SettingsSchema: &PluginSettingsSchema{
Header: "theheadertext",
Footer: "thefootertext",
Settings: []*PluginSetting{
&PluginSetting{
Key: "thesetting",
Settings: map[string]*PluginSetting{
"thesetting": &PluginSetting{
DisplayName: "thedisplayname",
Type: PLUGIN_CONFIG_TYPE_DROPDOWN,
HelpText: "thehelptext",

View File

@@ -8,9 +8,14 @@ import (
"io"
)
type PluginInfo struct {
Manifest
Prepackaged bool `json:"prepackaged"`
}
type PluginsResponse struct {
Active []*Manifest `json:"active"`
Inactive []*Manifest `json:"inactive"`
Active []*PluginInfo `json:"active"`
Inactive []*PluginInfo `json:"inactive"`
}
func (m *PluginsResponse) ToJson() string {

View File

@@ -19,8 +19,8 @@ func TestPluginsResponseJson(t *testing.T) {
}
response := &PluginsResponse{
Active: []*Manifest{manifest},
Inactive: []*Manifest{},
Active: []*PluginInfo{{Manifest: *manifest}},
Inactive: []*PluginInfo{},
}
json := response.ToJson()