1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

StylezAdvent Calendar 2024

Day 20

mattermost-plugin-demoをビルドしてmattermostに読み込ませる

Posted at

Mattermostはオープンソースのメッセージングプラットフォームです。
当アプリではプラグインを用いて、基本機能やUIを拡張する事が出来ます。
本記事のゴールは、公式のdemo-pluginをビルドしてプラグインを作成し、mattermostに読み込ませることです。

今回使うのは以下のgitリポジトリです。
https://github.com/mattermost/mattermost-plugin-demo
こちらはmattermostが提供しているフロントサイドのデモプラグインで、
プラグインを使って拡張できるUIを分かりやすく教えてくれるものです。

git clone https://github.com/mattermost/mattermost-plugin-demo

上記のコマンドでリポジトリをクローンします

Makefileでコマンドが設定されており、gitディレクトリで以下のコマンドを打つだけで、Lintを通した後にビルドが走り、プラグインのファイルを生成してくれます。

make

このままコマンドを打ってもlintで以下のエラーが起こります。

Running golangci-lint
golangci-lint run ./...
WARN [config_reader] The configuration option `linters.govet.check-shadowing` is deprecated. Please enable `shadow` instead, if you are not using `enable-all`. 
server/http_hooks.go:144:14: `Cancelled` is a misspelling of `Canceled` (misspell)
        if !request.Cancelled {
                    ^
server/http_hooks.go:171:13: `Cancelled` is a misspelling of `Canceled` (misspell)
        if request.Cancelled {
                   ^
server/http_hooks.go:185:14: `Cancelled` is a misspelling of `Canceled` (misspell)
        if !request.Cancelled {
                    ^
server/command_hooks.go:228:30: printf: non-constant format string in call to fmt.Sprintf (govet)
                        Text:         fmt.Sprintf("Unknown command: " + args.Command),
                                                  ^
server/command_hooks.go:280:29: printf: non-constant format string in call to fmt.Sprintf (govet)
                Text:         fmt.Sprintf("Unknown command action: " + args.Command),
                                          ^
server/command_hooks.go:381:30: printf: non-constant format string in call to fmt.Sprintf (govet)
                        Text:         fmt.Sprintf("Unknown command: " + command),
                                                  ^
make: *** [Makefile:161: check-style] エラー 1

WARNの解決:
 linters.govet.check-shadowing` is deprecated.より
 check-shadowingは非推奨になっていると言われている為、
プロジェクトルートにある .golangci.yml ファイルを開き、以下のように編集してください

misspellの解決:
cancelledはUS表記ではcanceledとあらわす為lintでエラーが起こっています。
場当たり的ですがlintの設定を変更して対応していきます。

linters-settings:
  gofmt:
    simplify: true
  goimports:
    local-prefixes: github.com/mattermost/mattermost-plugin-demo
  govet:
>   # check-shadowing: true
    enable-all: true
    disable:
      - fieldalignment
> # misspell:
> #   locale: US
  revive:
    rules:
      - name: unused-parameter
        disabled: true

govetの解決:
non-constant format string in call to fmt.Sprintf (govet)
⇒printfでは「変換指定子(%s等)」を使用して文字列を生成するので、printfを使っているのに変換指定子を使っていないのはおかしいのでlintエラーになります。
以下のように修正しました。

func (p *Plugin) executeAutocompleteTest(args *model.CommandArgs) *model.CommandResponse {
	return &model.CommandResponse{
		ResponseType: model.CommandResponseTypeEphemeral,
		✕Text:         fmt.Sprintf("Executed command: " + args.Command),
		>Text:         "Executed command: " + args.Command,
	}
}

以上の修正が終われば、makeファイルでビルドが通ると思います。

./dist配下に「com.mattermost.demo-plugin-0.10.0.tar.gz」ファイルが出来るので、こちらをmattermostを開くコンピュータにダウンロードしてください。

その後、mattermostアプリのシステムコンソールから、Pluginの設定に遷移し、
ChooseFileから先ほどダウンロードしたプラグインファイルをアップロードします。
image.png

Installed Pluginsにプラグインが追加されたことを確認し、enaledを押下して有効化します。
image.png

色々な所にUIのボタンが追加されている事が確認できます。
image.png
image.png
image.png

以上になります。
今回はdemo-pluginをビルドして、mattermostに読み込ませるまでを試してみました。
追加できるUIに関してはこのプラグインに集約されていそうなので、
プラグインを作る際はこちらをベースに編集する形で作るのが良いと思いました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?