-
Notifications
You must be signed in to change notification settings - Fork 83
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add golangci-lint, fix linter issues
- Loading branch information
Vladimir Kivernik
committed
Sep 26, 2020
1 parent
e43ead5
commit 863b06f
Showing
40 changed files
with
566 additions
and
464 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
run: | ||
timeout: 5m | ||
modules-download-mode: readonly | ||
|
||
linters-settings: | ||
goconst: | ||
min-len: 2 | ||
min-occurrences: 2 | ||
gofmt: | ||
simplify: true | ||
goimports: | ||
local-prefixes: github.com/mattermost/mattermost-plugin-gitlab | ||
golint: | ||
min-confidence: 0 | ||
govet: | ||
check-shadowing: true | ||
enable-all: true | ||
misspell: | ||
locale: US | ||
ignore-words: | ||
- noteable | ||
|
||
linters: | ||
disable-all: true | ||
enable: | ||
- bodyclose | ||
- deadcode | ||
- errcheck | ||
- goconst | ||
- gocritic | ||
- gofmt | ||
- goimports | ||
- golint | ||
- gosec | ||
- gosimple | ||
- govet | ||
- ineffassign | ||
- interfacer | ||
- misspell | ||
- nakedret | ||
- staticcheck | ||
- structcheck | ||
- stylecheck | ||
- typecheck | ||
- unconvert | ||
- unused | ||
- varcheck | ||
- whitespace | ||
|
||
issues: | ||
exclude-rules: | ||
- path: server/manifest.go | ||
linters: | ||
- deadcode | ||
- unused | ||
- varcheck | ||
- path: server/configuration.go | ||
linters: | ||
- unused | ||
- path: _test\.go | ||
linters: | ||
- bodyclose | ||
- goconst | ||
- scopelint # https://github.com/kyoh86/scopelint/issues/4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1 @@ | ||
## Runs errcheck against all packages. | ||
.PHONY: errcheck | ||
errcheck: | ||
ifneq ($(HAS_SERVER),) | ||
@echo Running errcheck | ||
@# Workaroung because you can't install binaries without adding them to go.mod | ||
env GO111MODULE=off $(GO) get github.com/kisielk/errcheck | ||
errcheck ./server/... | ||
endif | ||
# Include custome targets and environment variables here |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
// main handles deployment of the plugin to a development server using either the Client4 API | ||
// or by copying the plugin bundle into a sibling mattermost-server/plugin directory. | ||
package main | ||
|
||
import ( | ||
"fmt" | ||
"log" | ||
"os" | ||
"path/filepath" | ||
|
||
"github.com/mattermost/mattermost-server/v5/model" | ||
"github.com/mholt/archiver/v3" | ||
"github.com/pkg/errors" | ||
) | ||
|
||
func main() { | ||
err := deploy() | ||
if err != nil { | ||
fmt.Printf("Failed to deploy: %s\n", err.Error()) | ||
fmt.Println() | ||
fmt.Println("Usage:") | ||
fmt.Println(" deploy <plugin id> <bundle path>") | ||
os.Exit(1) | ||
} | ||
} | ||
|
||
// deploy handles deployment of the plugin to a development server. | ||
func deploy() error { | ||
if len(os.Args) < 3 { | ||
return errors.New("invalid number of arguments") | ||
} | ||
|
||
pluginID := os.Args[1] | ||
bundlePath := os.Args[2] | ||
|
||
siteURL := os.Getenv("MM_SERVICESETTINGS_SITEURL") | ||
adminToken := os.Getenv("MM_ADMIN_TOKEN") | ||
adminUsername := os.Getenv("MM_ADMIN_USERNAME") | ||
adminPassword := os.Getenv("MM_ADMIN_PASSWORD") | ||
copyTargetDirectory, _ := filepath.Abs("../mattermost-server") | ||
|
||
if siteURL != "" { | ||
client := model.NewAPIv4Client(siteURL) | ||
|
||
if adminToken != "" { | ||
log.Printf("Authenticating using token against %s.", siteURL) | ||
client.SetToken(adminToken) | ||
|
||
return uploadPlugin(client, pluginID, bundlePath) | ||
} | ||
|
||
if adminUsername != "" && adminPassword != "" { | ||
client := model.NewAPIv4Client(siteURL) | ||
log.Printf("Authenticating as %s against %s.", adminUsername, siteURL) | ||
_, resp := client.Login(adminUsername, adminPassword) | ||
if resp.Error != nil { | ||
return errors.Wrapf(resp.Error, "failed to login as %s", adminUsername) | ||
} | ||
|
||
return uploadPlugin(client, pluginID, bundlePath) | ||
} | ||
} | ||
|
||
_, err := os.Stat(copyTargetDirectory) | ||
if os.IsNotExist(err) { | ||
return errors.New("no supported deployment method available, please install plugin manually") | ||
} else if err != nil { | ||
return errors.Wrapf(err, "failed to stat %s", copyTargetDirectory) | ||
} | ||
|
||
log.Printf("Installing plugin to mattermost-server found in %s.", copyTargetDirectory) | ||
log.Print("Server restart required to load updated plugin.") | ||
return copyPlugin(pluginID, copyTargetDirectory, bundlePath) | ||
} | ||
|
||
// uploadPlugin attempts to upload and enable a plugin via the Client4 API. | ||
// It will fail if plugin uploads are disabled. | ||
func uploadPlugin(client *model.Client4, pluginID, bundlePath string) error { | ||
pluginBundle, err := os.Open(bundlePath) | ||
if err != nil { | ||
return errors.Wrapf(err, "failed to open %s", bundlePath) | ||
} | ||
defer pluginBundle.Close() | ||
|
||
log.Print("Uploading plugin via API.") | ||
_, resp := client.UploadPluginForced(pluginBundle) | ||
if resp.Error != nil { | ||
return errors.Wrap(resp.Error, "failed to upload plugin bundle") | ||
} | ||
|
||
log.Print("Enabling plugin.") | ||
_, resp = client.EnablePlugin(pluginID) | ||
if resp.Error != nil { | ||
return errors.Wrap(resp.Error, "Failed to enable plugin") | ||
} | ||
|
||
return nil | ||
} | ||
|
||
// copyPlugin attempts to install a plugin by copying it to a sibling ../mattermost-server/plugin | ||
// directory. A server restart is required before the plugin will start. | ||
func copyPlugin(pluginID, targetPath, bundlePath string) error { | ||
targetPath = filepath.Join(targetPath, "plugins") | ||
|
||
err := os.MkdirAll(targetPath, 0777) | ||
if err != nil { | ||
return errors.Wrapf(err, "failed to create %s", targetPath) | ||
} | ||
|
||
existingPluginPath := filepath.Join(targetPath, pluginID) | ||
err = os.RemoveAll(existingPluginPath) | ||
if err != nil { | ||
return errors.Wrapf(err, "failed to remove existing existing plugin directory %s", existingPluginPath) | ||
} | ||
|
||
err = archiver.Unarchive(bundlePath, targetPath) | ||
if err != nil { | ||
return errors.Wrapf(err, "failed to unarchive %s into %s", bundlePath, targetPath) | ||
} | ||
|
||
return nil | ||
} |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.