Skip to content

Commit

Permalink
Revert "Don't generate manifest.ts (#127)"
Browse files Browse the repository at this point in the history
This reverts commit 18d30b5.
  • Loading branch information
lieut-data committed Dec 12, 2023
1 parent 5463bc1 commit f927586
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 2 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
server/manifest.go linguist-generated=true
webapp/src/manifest.js linguist-generated=true
35 changes: 35 additions & 0 deletions build/manifest/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"io/ioutil"
"os"
"strings"

"github.com/mattermost/mattermost/server/public/model"
"github.com/pkg/errors"
Expand All @@ -31,6 +32,17 @@ func init() {
}
`

const pluginIDJSFileTemplate = `// This file is automatically generated. Do not modify it manually.
const manifest = JSON.parse(` + "`" + `
%s
` + "`" + `);
export default manifest;
export const id = manifest.id;
export const version = manifest.version;
`

func main() {
if len(os.Args) <= 1 {
panic("no cmd specified")
Expand Down Expand Up @@ -122,5 +134,28 @@ func applyManifest(manifest *model.Manifest) error {
}
}

if manifest.HasWebapp() {
// generate JSON representation of Manifest.
// JSON is very similar and compatible with JS's object literals. so, what we do here
// is actually JS code generation.
manifestBytes, err := json.MarshalIndent(manifest, "", " ")
if err != nil {
return err
}
manifestStr := string(manifestBytes)

// Escape newlines
manifestStr = strings.ReplaceAll(manifestStr, `\n`, `\\n`)

// write generated code to file by using JS file template.
if err := ioutil.WriteFile(
"webapp/src/manifest.ts",
[]byte(fmt.Sprintf(pluginIDJSFileTemplate, manifestStr)),
0600,
); err != nil {
return errors.Wrap(err, "failed to open webapp/src/manifest.js")
}
}

return nil
}
38 changes: 36 additions & 2 deletions webapp/src/manifest.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
import manifest from '@/../../plugin.json';
// This file is automatically generated. Do not modify it manually.

export {manifest};
const manifest = JSON.parse(`
{
"id": "com.mattermost.plugin-starter-template",
"name": "Plugin Starter Template",
"description": "This plugin serves as a starting point for writing a Mattermost plugin.",
"homepage_url": "/~https://github.com/mattermost/mattermost-plugin-starter-template",
"support_url": "/~https://github.com/mattermost/mattermost-plugin-starter-template/issues",
"release_notes_url": "/~https://github.com/mattermost/mattermost-plugin-starter-template/releases/tag/v0.1.0",
"icon_path": "assets/starter-template-icon.svg",
"version": "0.1.0",
"min_server_version": "6.2.1",
"server": {
"executables": {
"darwin-amd64": "server/dist/plugin-darwin-amd64",
"darwin-arm64": "server/dist/plugin-darwin-arm64",
"linux-amd64": "server/dist/plugin-linux-amd64",
"linux-arm64": "server/dist/plugin-linux-arm64",
"windows-amd64": "server/dist/plugin-windows-amd64.exe"
},
"executable": ""
},
"webapp": {
"bundle_path": "webapp/dist/main.js"
},
"settings_schema": {
"header": "",
"footer": "",
"settings": []
}
}
`);

export default manifest;
export const id = manifest.id;
export const version = manifest.version;

0 comments on commit f927586

Please sign in to comment.