From 3b250ba5c4f4f2b15b60b11551b5938e5f876b00 Mon Sep 17 00:00:00 2001 From: Nick Misasi Date: Tue, 4 Nov 2025 09:18:24 -0500 Subject: [PATCH] Add support for make i18n-extract when dep folders are symlinked (#34385) --- tools/mmgotool/commands/i18n.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/mmgotool/commands/i18n.go b/tools/mmgotool/commands/i18n.go index 760ddd305fb..ac9bc2ec2f7 100644 --- a/tools/mmgotool/commands/i18n.go +++ b/tools/mmgotool/commands/i18n.go @@ -117,6 +117,14 @@ func getBaseFileSrcStrings(mattermostDir string) ([]Translation, error) { return translations, err } +// resolveSymlink resolves a path if it's a symlink, otherwise returns the original path +func resolveSymlink(path string) string { + if realPath, err := filepath.EvalSymlinks(path); err == nil { + return realPath + } + return path +} + func extractSrcStrings(enterpriseDir, mattermostDir, modelDir, pluginDir, portalDir string) map[string]bool { i18nStrings := map[string]bool{} walkFunc := func(p string, info os.FileInfo, err error) error { @@ -125,13 +133,14 @@ func extractSrcStrings(enterpriseDir, mattermostDir, modelDir, pluginDir, portal } return extractFromPath(p, info, err, i18nStrings) } + if portalDir != "" { - _ = filepath.Walk(portalDir, walkFunc) + _ = filepath.Walk(resolveSymlink(portalDir), walkFunc) } else { - _ = filepath.Walk(mattermostDir, walkFunc) - _ = filepath.Walk(enterpriseDir, walkFunc) - _ = filepath.Walk(modelDir, walkFunc) - _ = filepath.Walk(pluginDir, walkFunc) + _ = filepath.Walk(resolveSymlink(mattermostDir), walkFunc) + _ = filepath.Walk(resolveSymlink(enterpriseDir), walkFunc) + _ = filepath.Walk(resolveSymlink(modelDir), walkFunc) + _ = filepath.Walk(resolveSymlink(pluginDir), walkFunc) } return i18nStrings }