1package plugin 2 3import ( 4 "path/filepath" 5) 6 7// Discover discovers plugins that are in a given directory. 8// 9// The directory doesn't need to be absolute. For example, "." will work fine. 10// 11// This currently assumes any file matching the glob is a plugin. 12// In the future this may be smarter about checking that a file is 13// executable and so on. 14// 15// TODO: test 16func Discover(glob, dir string) ([]string, error) { 17 var err error 18 19 // Make the directory absolute if it isn't already 20 if !filepath.IsAbs(dir) { 21 dir, err = filepath.Abs(dir) 22 if err != nil { 23 return nil, err 24 } 25 } 26 27 return filepath.Glob(filepath.Join(dir, glob)) 28} 29