aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/installer/location.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-11-07 00:29:18 +0100
committerWilliam Boman <william@redwill.se>2025-02-19 12:15:48 +0100
commit6a7662760c515c74f2c37fc825776ead65d307f9 (patch)
tree0f4496d0678c7029b10236cbf48cc0f5ff63c1dc /lua/mason-core/installer/location.lua
parentfix(pypi): remove -U flag and fix log message (diff)
downloadmason-6a7662760c515c74f2c37fc825776ead65d307f9.tar
mason-6a7662760c515c74f2c37fc825776ead65d307f9.tar.gz
mason-6a7662760c515c74f2c37fc825776ead65d307f9.tar.bz2
mason-6a7662760c515c74f2c37fc825776ead65d307f9.tar.lz
mason-6a7662760c515c74f2c37fc825776ead65d307f9.tar.xz
mason-6a7662760c515c74f2c37fc825776ead65d307f9.tar.zst
mason-6a7662760c515c74f2c37fc825776ead65d307f9.zip
refactor!: change Package API
This changes the following public APIs: **(_breaking_) Events on the `Package` class** The `uninstall:success` event on the `Package` class now receives an `InstallReceipt` as argument, instead of an `InstallHandle`. This receipt is an in-memory representation of what was uninstalled. There's also a new `uninstall:failed` event for situations where uninstallation for some reason fails. Note: this also applies to the registry events (i.e. `package:uninstall:success` and `package:uninstall:failed`). --- **(_breaking_) `Package:uninstall()` is now asynchronous and receives two new arguments, similarly to `Package:install()`** While package uninstallations remain synchronous under the hood, the public API has been changed from synchronous -> asynchronous. Users of this method are recommended to provide a callback in situations where code needs to execute after uninstallation fully completes. --- **(_breaking_) `Package:get_install_path()` has been removed. --- **`Package:install()` now takes an optional callback** This callback allows consumers to be informed whether installation was successful or not without having to go through a different, low-level, API. See below for a comparison between the old and new APIs: ```lua -- before local handle = pkg:install() handle:once("closed", function () -- ... end) -- after pkg:install({}, function (success, result) -- ... end) ```
Diffstat (limited to 'lua/mason-core/installer/location.lua')
-rw-r--r--lua/mason-core/installer/location.lua93
1 files changed, 0 insertions, 93 deletions
diff --git a/lua/mason-core/installer/location.lua b/lua/mason-core/installer/location.lua
deleted file mode 100644
index 9cdf097f..00000000
--- a/lua/mason-core/installer/location.lua
+++ /dev/null
@@ -1,93 +0,0 @@
-local Path = require "mason-core.path"
-local platform = require "mason-core.platform"
-local settings = require "mason.settings"
-
----@class InstallLocation
----@field private dir string
-local InstallLocation = {}
-InstallLocation.__index = InstallLocation
-
----@param dir string
-function InstallLocation:new(dir)
- ---@type InstallLocation
- local instance = {}
- setmetatable(instance, self)
- instance.dir = dir
- return instance
-end
-
-function InstallLocation.global()
- return InstallLocation:new(settings.current.install_root_dir)
-end
-
-function InstallLocation:get_dir()
- return self.dir
-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,
- self:bin(),
- self:share(),
- self:package(),
- self:staging(),
- } do
- if not fs.async.dir_exists(p) then
- try(Result.pcall(fs.async.mkdirp, p))
- end
- end
- end)
-end
-
----@param path string?
-function InstallLocation:bin(path)
- return Path.concat { self.dir, "bin", path }
-end
-
----@param path string?
-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 }
-end
-
----@param path string?
-function InstallLocation:staging(path)
- return Path.concat { self.dir, "staging", path }
-end
-
----@param name string
-function InstallLocation:lockfile(name)
- return self:staging(("%s.lock"):format(name))
-end
-
----@param path string
-function InstallLocation:registry(path)
- return Path.concat { self.dir, "registries", 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