Skip to content

Commit 54314bc

Browse files
authored
fix: parse fvm command json output (#421)
1 parent 3661e3b commit 54314bc

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

lua/flutter-tools/commands.lua

+14-14
Original file line numberDiff line numberDiff line change
@@ -439,25 +439,25 @@ local fvm_list_job = nil
439439
--- Returns table<{name: string, status: active|global|nil}>
440440
function M.fvm_list(callback)
441441
if not fvm_list_job then
442-
-- Example output:
443-
--
444-
-- Cache Directory: /Users/rjm/fvm/versions
445-
--
446-
-- master (active)
447-
-- beta
448-
-- stable (global)
449-
fvm_list_job = Job:new({ command = "fvm", args = { "list" } })
442+
fvm_list_job = Job:new({ command = "fvm", args = { "api", "list" } })
450443

451444
fvm_list_job:after_success(vim.schedule_wrap(function(j)
452445
local out = j:result()
453-
local sdks_out = { unpack(out, 3, #out) }
446+
local json_str = table.concat(out, "\n")
447+
-- Parse the JSON string
448+
local ok, parsed = pcall(vim.json.decode, json_str)
449+
if not ok then
450+
ui.notify("Failed to parse fvm list output", ui.ERROR)
451+
fvm_list_job = nil
452+
return
453+
end
454454

455455
local sdks = {}
456-
for _, sdk_out in pairs(sdks_out) do
457-
-- matches: "<name> (<status>)"
458-
local name, status = sdk_out:match("(.*)%s%((%w+)%)")
459-
name = name or sdk_out
460-
table.insert(sdks, { name = name, status = status })
456+
for _, version in pairs(parsed.versions) do
457+
table.insert(sdks, {
458+
name = version.name,
459+
dart_sdk_version = version.dartSdkVersion,
460+
})
461461
end
462462

463463
callback(sdks)

lua/flutter-tools/menu.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ function M.fvm(opts)
287287
table.insert(sdk_entries, {
288288
id = sdk.name,
289289
label = sdk.name,
290-
hint = sdk.status and "(" .. sdk.status .. ")" or "",
290+
hint = sdk.dart_sdk_version and "(Dart SDK " .. sdk.dart_sdk_version .. ")" or "",
291291
command = commands.fvm_use,
292292
})
293293
end

0 commit comments

Comments
 (0)