diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-10-30 10:14:08 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-10-30 10:14:08 +0100 |
commit | beabc8d998249ecc5dd522d696dc6233a29131c2 (patch) | |
tree | 3810745cd0f57df8ae9de04ce3fc2b37d8c3bd1b /modules/client.go | |
parent | 332b65e4ccb6ac0d606de2a1b23f5189c72542be (diff) |
modules: Allow absolute paths for project imports
Fixes #7910
Diffstat (limited to 'modules/client.go')
-rw-r--r-- | modules/client.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/client.go b/modules/client.go index c6f43298d..7d2175c94 100644 --- a/modules/client.go +++ b/modules/client.go @@ -614,10 +614,19 @@ func (c *Client) shouldVendor(path string) bool { } func (c *Client) createThemeDirname(modulePath string, isProjectMod bool) (string, error) { + invalid := errors.Errorf("invalid module path %q; must be relative to themesDir when defined outside of the project", modulePath) + modulePath = filepath.Clean(modulePath) + if filepath.IsAbs(modulePath) { + if isProjectMod { + return modulePath, nil + } + return "", invalid + } + moduleDir := filepath.Join(c.ccfg.ThemesDir, modulePath) if !isProjectMod && !strings.HasPrefix(moduleDir, c.ccfg.ThemesDir) { - return "", errors.Errorf("invalid module path %q; must be relative to themesDir when defined outside of the project", modulePath) + return "", invalid } return moduleDir, nil } |