Skip to content

Commit c827908

Browse files
fix: skip dotfiles and directories in plugin loading (#811)
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
1 parent c1cb2e8 commit c827908

2 files changed

Lines changed: 27 additions & 4 deletions

File tree

plugin/manager.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,19 +226,28 @@ func (m *Manager) loadPlugins(directory string) error {
226226
return fmt.Errorf("error while reading directory %s", err)
227227
}
228228
for _, f := range pluginFiles {
229-
pluginPath := filepath.Join(directory, "./", f.Name())
229+
if f.IsDir() {
230+
continue
231+
}
232+
233+
name := f.Name()
234+
if strings.HasPrefix(name, ".") {
235+
continue
236+
}
237+
238+
pluginPath := filepath.Join(directory, "./", name)
230239

231240
fmt.Println("Loading plugin", pluginPath)
232241
pRaw, err := plugin.Open(pluginPath)
233242
if err != nil {
234-
return pluginFileLoadError{f.Name(), err}
243+
return pluginFileLoadError{name, err}
235244
}
236245
compatPlugin, err := compat.Wrap(pRaw)
237246
if err != nil {
238-
return pluginFileLoadError{f.Name(), err}
247+
return pluginFileLoadError{name, err}
239248
}
240249
if err := m.LoadPlugin(compatPlugin); err != nil {
241-
return pluginFileLoadError{f.Name(), err}
250+
return pluginFileLoadError{name, err}
242251
}
243252
}
244253
return nil

plugin/manager_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,20 @@ func (s *ManagerSuite) TestInitializePlugin_noOpIfEmpty() {
147147
assert.Nil(s.T(), s.manager.loadPlugins(""))
148148
}
149149

150+
func (s *ManagerSuite) TestInitializePlugin_noOpIfDotFile() {
151+
tmpDir := test.NewTmpDir("gotify_testinitializeplugin_dotfile")
152+
defer tmpDir.Clean()
153+
os.Mkdir(tmpDir.Path(".test"), 0755)
154+
assert.Nil(s.T(), s.manager.loadPlugins(tmpDir.Path()))
155+
}
156+
157+
func (s *ManagerSuite) TestInitializePlugin_noOpIfSubDir() {
158+
tmpDir := test.NewTmpDir("gotify_testinitializeplugin_subdir")
159+
defer tmpDir.Clean()
160+
os.Mkdir(tmpDir.Path("subdir"), 0755)
161+
assert.Nil(s.T(), s.manager.loadPlugins(tmpDir.Path()))
162+
}
163+
150164
func (s *ManagerSuite) TestInitializePlugin_directoryInvalid_expectError() {
151165
assert.Error(s.T(), s.manager.loadPlugins("<<"))
152166
}

0 commit comments

Comments
 (0)