2023-11-22 09:38:52 +01:00
|
|
|
{
|
|
|
|
lib,
|
|
|
|
config,
|
|
|
|
pkgs,
|
|
|
|
...
|
|
|
|
}:
|
2024-05-05 19:39:35 +02:00
|
|
|
with lib;
|
|
|
|
let
|
2024-08-23 11:16:53 -04:00
|
|
|
inherit (lib.nixvim) mkPluginPackageOption mkSettingsOption toLuaObject;
|
2023-11-22 09:38:52 +01:00
|
|
|
supportedAdapters = import ./adapters-list.nix;
|
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
mkAdapter =
|
|
|
|
name:
|
|
|
|
{
|
|
|
|
treesitter-parser,
|
|
|
|
packageName ? "neotest-${name}",
|
|
|
|
settingsSuffix ? settingsLua: "(${settingsLua})",
|
|
|
|
}:
|
|
|
|
{
|
|
|
|
options.plugins.neotest.adapters.${name} = {
|
|
|
|
enable = mkEnableOption name;
|
2023-11-22 09:38:52 +01:00
|
|
|
|
2024-08-21 23:46:46 -05:00
|
|
|
package = mkPluginPackageOption name pkgs.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
|
|
|
};
|
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
config =
|
|
|
|
let
|
|
|
|
cfg = config.plugins.neotest.adapters.${name};
|
|
|
|
in
|
|
|
|
mkIf cfg.enable {
|
|
|
|
extraPlugins = [ cfg.package ];
|
2023-11-22 09:38:52 +01:00
|
|
|
|
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`.";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
warnings = optional (!config.plugins.treesitter.enable) ''
|
2023-11-22 09:38:52 +01:00
|
|
|
Nixvim (plugins.neotest.adapters.${name}): This adapter requires `treesitter` to be enabled.
|
2024-03-18 14:43:48 +01:00
|
|
|
You might want to set `plugins.treesitter.enable = true` and ensure that the `${props.treesitter-parser}` parser is enabled.
|
2023-11-22 09:38:52 +01:00
|
|
|
'';
|
|
|
|
|
2024-05-05 19:39:35 +02:00
|
|
|
plugins.neotest.settings.adapters =
|
|
|
|
let
|
2024-08-21 23:46:46 -05:00
|
|
|
settingsString = optionalString (cfg.settings != { }) (settingsSuffix (toLuaObject cfg.settings));
|
2024-05-05 19:39:35 +02:00
|
|
|
in
|
|
|
|
[ "require('neotest-${name}')${settingsString}" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
|
|
|
{
|
2024-06-18 20:20:21 +02:00
|
|
|
imports = mapAttrsToList mkAdapter supportedAdapters;
|
2023-11-22 09:38:52 +01:00
|
|
|
}
|