From f1e58d3ce7ab3bdb3036b791811896a0220703ad Mon Sep 17 00:00:00 2001 From: William Boman Date: Fri, 13 Oct 2023 01:53:41 +0200 Subject: refactor(path): use InstallLocation to produce paths, remove static path methods --- lua/mason-core/installer/location.lua | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'lua/mason-core/installer/location.lua') diff --git a/lua/mason-core/installer/location.lua b/lua/mason-core/installer/location.lua index 694ae0f4..a77e2915 100644 --- a/lua/mason-core/installer/location.lua +++ b/lua/mason-core/installer/location.lua @@ -1,6 +1,5 @@ local Path = require "mason-core.path" -local Result = require "mason-core.result" -local fs = require "mason-core.fs" +local platform = require "mason-core.platform" local settings = require "mason.settings" ---@class InstallLocation @@ -25,6 +24,9 @@ end ---@async function InstallLocation:initialize() + local Result = require "mason-core.result" + local fs = require "mason-core.fs" + return Result.try(function(try) for _, p in ipairs { self.dir, @@ -50,6 +52,11 @@ function InstallLocation:share(path) return Path.concat { self.dir, "share", path } end +---@param path string? +function InstallLocation:opt(path) + return Path.concat { self.dir, "opt", path } +end + ---@param path string? function InstallLocation:package(path) return Path.concat { self.dir, "packages", path } @@ -65,4 +72,20 @@ function InstallLocation:lockfile(name) return self:staging(("%s.lock"):format(name)) end +---@param path string +function InstallLocation:registry(path) + return Path.concat { self.dir, "registry", path } +end + +---@param opts { PATH: '"append"' | '"prepend"' | '"skip"' } +function InstallLocation:set_env(opts) + vim.env.MASON = self.dir + + if opts.PATH == "prepend" then + vim.env.PATH = self:bin() .. platform.path_sep .. vim.env.PATH + elseif opts.PATH == "append" then + vim.env.PATH = vim.env.PATH .. platform.path_sep .. self:bin() + end +end + return InstallLocation -- cgit v1.2.3-70-g09d2