Skip to content

Commit d167595

Browse files
committed
add: placeholder for paths
1 parent aaf1624 commit d167595

File tree

1 file changed

+32
-7
lines changed

1 file changed

+32
-7
lines changed

script/files.lua

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -908,18 +908,43 @@ function m.countStates()
908908
return n
909909
end
910910

911+
---Resolve path variables/placeholders like ${3rd} and ${addons}
911912
---@param path string
912-
---@return string
913-
function m.normalize(path)
914-
path = path:gsub('%$%{(.-)%}', function (key)
915-
if key == '3rd' then
916-
return (ROOT / 'meta' / '3rd'):string()
917-
end
918-
if key:sub(1, 4) == 'env:' then
913+
---@return string resolvedPath
914+
function m.resolvePathPlaceholders(path)
915+
path = path:gsub("%$%{(.-)%}", function(key)
916+
if key == "3rd" then
917+
return (ROOT / "meta" / "3rd"):string()
918+
elseif key == "addons" then
919+
-- Common path across OSes
920+
local dataPath = "User/globalStorage/sumneko.lua/addonManager/addons"
921+
922+
if platform.os == "windows" then
923+
return "$APPDATA/Code/" .. dataPath
924+
elseif platform.os == "linux" then
925+
local serverPath = util.expandPath(fs.path("~/.vscode-server/data"):string())
926+
if fs.exists(serverPath) then
927+
-- addons are installed via SSH remote
928+
return serverPath .."/" .. dataPath
929+
else
930+
return "~/.config/Code/" .. dataPath
931+
end
932+
elseif platform.os == "macos" then
933+
return "~/Library/Application/Support/Code/" .. dataPath
934+
end
935+
elseif key:sub(1, 4) == "env:" then
919936
local env = os.getenv(key:sub(5))
920937
return env
921938
end
922939
end)
940+
941+
return path
942+
end
943+
944+
---@param path string
945+
---@return string
946+
function m.normalize(path)
947+
path = m.resolvePathPlaceholders(path)
923948
path = util.expandPath(path)
924949
path = path:gsub('^%.[/\\]+', '')
925950
for _ = 1, 1000 do

0 commit comments

Comments
 (0)