Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
32 lines
709 B
Go
32 lines
709 B
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package plugin
|
|
|
|
import (
|
|
"path/filepath"
|
|
)
|
|
|
|
// Discover discovers plugins that are in a given directory.
|
|
//
|
|
// The directory doesn't need to be absolute. For example, "." will work fine.
|
|
//
|
|
// This currently assumes any file matching the glob is a plugin.
|
|
// In the future this may be smarter about checking that a file is
|
|
// executable and so on.
|
|
//
|
|
// TODO: test
|
|
func Discover(glob, dir string) ([]string, error) {
|
|
var err error
|
|
|
|
// Make the directory absolute if it isn't already
|
|
if !filepath.IsAbs(dir) {
|
|
dir, err = filepath.Abs(dir)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
return filepath.Glob(filepath.Join(dir, glob))
|
|
}
|