2023-11-22 09:38:52 +01:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
2024-09-04 21:50:03 +01:00
|
|
|
inherit (lib.nixvim) mkSettingsOption toLuaObject;
|
2023-11-22 09:38:52 +01:00
|
|
|
supportedAdapters = import ./adapters-list.nix;
|
|
|
|
|
2024-03-18 14:43:48 +01:00
|
|
|
mkAdapter =
|
|
|
|
name:
|
|
|
|
{
|
|
|
|
treesitter-parser,
|
2024-03-18 14:43:48 +01:00
|
|
|
packageName ? "neotest-${name}",
|
2024-03-18 14:43:48 +01:00
|
|
|
settingsSuffix ? settingsLua: "(${settingsLua})",
|
|
|
|
}:
|
|
|
|
{
|
2023-11-22 09:38:52 +01:00
|
|
|
options.plugins.neotest.adapters.${name} = {
|
|
|
|
enable = mkEnableOption name;
|
|
|
|
|
2024-09-04 21:50:03 +01:00
|
|
|
package = lib.mkPackageOption pkgs name {
|
|
|
|
default = [
|
|
|
|
"vimPlugins"
|
|
|
|
packageName
|
|
|
|
];
|
|
|
|
};
|
2023-11-22 09:38:52 +01:00
|
|
|
|
2024-08-21 23:46:46 -05:00
|
|
|
settings = mkSettingsOption { description = "settings for the `${name}` adapter."; };
|
2023-11-22 09:38:52 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
config =
|
|
|
|
let
|
|
|
|
cfg = config.plugins.neotest.adapters.${name};
|
|
|
|
in
|
|
|
|
mkIf cfg.enable {
|
|
|
|
extraPlugins = [ cfg.package ];
|
|
|
|
|
2024-06-11 23:54:00 +02:00
|
|
|
assertions = [
|
|
|
|
{
|
|
|
|
assertion = config.plugins.neotest.enable;
|
|
|
|
message = "Nixvim: you have enabled `plugins.neotest.adapters.${name}` but `plugins.neotest.enable` is `false`.";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
|
2025-01-17 16:18:38 +01:00
|
|
|
warnings = lib.nixvim.mkWarnings "plugins.neotest.adapters.${name}" {
|
|
|
|
when = !config.plugins.treesitter.enable;
|
|
|
|
|
|
|
|
message = ''
|
|
|
|
This adapter requires `treesitter` to be enabled.
|
|
|
|
You might want to set `plugins.treesitter.enable = true` and ensure that the `${treesitter-parser}` parser is enabled.
|
|
|
|
'';
|
|
|
|
};
|
2023-11-22 09:38:52 +01:00
|
|
|
|
2024-03-19 10:11:49 +01:00
|
|
|
plugins.neotest.settings.adapters =
|
|
|
|
let
|
2024-08-21 23:46:46 -05:00
|
|
|
settingsString = optionalString (cfg.settings != { }) (settingsSuffix (toLuaObject cfg.settings));
|
2024-03-19 10:11:49 +01:00
|
|
|
in
|
|
|
|
[ "require('neotest-${name}')${settingsString}" ];
|
2023-11-22 09:38:52 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
|
|
|
{
|
2024-06-18 20:20:21 +02:00
|
|
|
imports = mapAttrsToList mkAdapter supportedAdapters;
|
2023-11-22 09:38:52 +01:00
|
|
|
}
|