|
32 | 32 | ---@type string[]
|
33 | 33 | local deps_nix_managed_vim_plugins = {}
|
34 | 34 | ---@type table<string, string>
|
35 |
| -local deps_nix_managed_binaries = {} |
| 35 | +local nix_aware = {} |
36 | 36 | local resolve_bin_cache = Fn.new_cache_manager()
|
37 | 37 |
|
| 38 | +local function load_nix_aware_file() |
| 39 | + local path = vim.fn.stdpath("config") .. "/nix-aware.json" |
| 40 | + ---@diagnostic disable-next-line: undefined-field |
| 41 | + if not not vim.uv.fs_stat(path) then |
| 42 | + ---@type dotvim.utils |
| 43 | + local Utils = require("dotvim.utils") |
| 44 | + local content = Utils.fs.read_file(path) |
| 45 | + if content ~= nil then |
| 46 | + return vim.fn.json_decode(content) |
| 47 | + end |
| 48 | + end |
| 49 | + return {} |
| 50 | +end |
| 51 | + |
38 | 52 | function M.update_nix_plugin_packages()
|
39 | 53 | local packages = get_plugin_packages()
|
40 | 54 | Fs.write_file(
|
@@ -68,13 +82,8 @@ local function load_nix_related_data()
|
68 | 82 | deps_nix_managed_vim_plugins = vim.split(data, "\n", { trimempty = true })
|
69 | 83 | end
|
70 | 84 | )
|
71 |
| - Fs.read_file_then(vim.fn.stdpath("data") .. "/nix-binaries", function(data) |
72 |
| - local ok, ret = pcall(vim.fn.json_decode, data) |
73 |
| - if ok then |
74 |
| - resolve_bin_cache:clear() |
75 |
| - deps_nix_managed_binaries = ret |
76 |
| - end |
77 |
| - end) |
| 85 | + resolve_bin_cache:clear() |
| 86 | + nix_aware = load_nix_aware_file() |
78 | 87 | end
|
79 | 88 |
|
80 | 89 | local assume_data_loaded = Fn.invoke_once(function()
|
|
86 | 95 | ---@return string?
|
87 | 96 | M.resolve_plugin = function(name)
|
88 | 97 | assume_data_loaded()
|
| 98 | + if nix_aware.pkgs[name] ~= nil then |
| 99 | + return nix_aware.pkgs[name] |
| 100 | + end |
89 | 101 | for _, pkg in ipairs(deps_nix_managed_vim_plugins) do
|
90 | 102 | if pkg:find(name, 1, true) then
|
91 | 103 | return pkg
|
|
130 | 142 | M.resolve_bin = function(name)
|
131 | 143 | assume_data_loaded()
|
132 | 144 | return resolve_bin_cache:ensure(name, function()
|
133 |
| - local bin = deps_nix_managed_binaries[name] |
| 145 | + local bin = nix_aware.bin[name] |
134 | 146 | if bin then
|
135 | 147 | return bin
|
136 | 148 | end
|
|
0 commit comments