refactor: plugin normalization
parent
81d82e05a2
commit
b087119333
27
lib/deps.nix
27
lib/deps.nix
|
|
@ -18,6 +18,9 @@
|
||||||
enabled = true;
|
enabled = true;
|
||||||
init = null;
|
init = null;
|
||||||
config = null;
|
config = null;
|
||||||
|
dependencies = [];
|
||||||
|
lazy = false;
|
||||||
|
cmd = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
remotePluginToNeovimPlugin = p:
|
remotePluginToNeovimPlugin = p:
|
||||||
|
|
@ -29,7 +32,7 @@
|
||||||
withPluginDefaults = dep: defaultPlugin // dep;
|
withPluginDefaults = dep: defaultPlugin // dep;
|
||||||
normalizePlugin = d: let
|
normalizePlugin = d: let
|
||||||
dep = types.dependency d;
|
dep = types.dependency d;
|
||||||
p =
|
plugin =
|
||||||
if ! dep ? plugin
|
if ! dep ? plugin
|
||||||
then {plugin = dep;}
|
then {plugin = dep;}
|
||||||
else let
|
else let
|
||||||
|
|
@ -38,8 +41,13 @@
|
||||||
if attrNames plugin == ["name" "src"]
|
if attrNames plugin == ["name" "src"]
|
||||||
then {plugin = remotePluginToNeovimPlugin plugin;}
|
then {plugin = remotePluginToNeovimPlugin plugin;}
|
||||||
else dep;
|
else dep;
|
||||||
|
p = withPluginDefaults plugin;
|
||||||
in
|
in
|
||||||
withPluginDefaults p;
|
p
|
||||||
|
// rec {
|
||||||
|
hasCommands = p.cmd != [];
|
||||||
|
lazy = p.lazy || hasCommands;
|
||||||
|
};
|
||||||
|
|
||||||
normalizeOrImportPlugin = dep:
|
normalizeOrImportPlugin = dep:
|
||||||
if isPath dep
|
if isPath dep
|
||||||
|
|
@ -96,9 +104,6 @@
|
||||||
if plugin ? pname
|
if plugin ? pname
|
||||||
then plugin.pname
|
then plugin.pname
|
||||||
else plugin.name;
|
else plugin.name;
|
||||||
hasDeps = plugin ? dependencies && plugin.dependencies != [];
|
|
||||||
isLazy = plugin ? lazy && plugin.lazy || hasCommands;
|
|
||||||
hasCommands = plugin ? cmd;
|
|
||||||
name = pluginName plugin.plugin;
|
name = pluginName plugin.plugin;
|
||||||
in
|
in
|
||||||
memo
|
memo
|
||||||
|
|
@ -107,21 +112,21 @@
|
||||||
{name = pluginName plugin.plugin;}
|
{name = pluginName plugin.plugin;}
|
||||||
// (mkTypeFn "init")
|
// (mkTypeFn "init")
|
||||||
// (mkTypeFn "config")
|
// (mkTypeFn "config")
|
||||||
// (optionalAttrs hasDeps {
|
// (optionalAttrs (plugin.dependencies != []) {
|
||||||
dependencies = map pluginName plugin.dependencies;
|
dependencies = map pluginName plugin.dependencies;
|
||||||
}
|
})
|
||||||
// (optionalAttrs isLazy {
|
// (optionalAttrs plugin.lazy {
|
||||||
lazy = true;
|
lazy = true;
|
||||||
}))
|
})
|
||||||
// (optionalAttrs hasCommands {
|
// (optionalAttrs plugin.hasCommands {
|
||||||
inherit (plugin) cmd;
|
inherit (plugin) cmd;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
pluginsLuaDef = plugins: lua.nix2lua (foldl' pluginLuaDef {} plugins);
|
pluginsLuaDef = plugins: lua.nix2lua (foldl' pluginLuaDef {} plugins);
|
||||||
in {
|
in {
|
||||||
|
inherit normalizePlugin;
|
||||||
inherit normalizePlugins;
|
inherit normalizePlugins;
|
||||||
inherit mkSlothFlakePlugin;
|
inherit mkSlothFlakePlugin;
|
||||||
inherit mkRuntimePlugin;
|
inherit mkRuntimePlugin;
|
||||||
inherit textOrContent;
|
inherit textOrContent;
|
||||||
inherit pluginsLuaDef;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
{lib, ...}: let
|
{...}: let
|
||||||
inherit (lib.strings) removeSuffix;
|
|
||||||
inherit (builtins) match isNull typeOf concatStringsSep attrNames concatMap;
|
inherit (builtins) match isNull typeOf concatStringsSep attrNames concatMap;
|
||||||
|
|
||||||
commaJoin = concatStringsSep ", ";
|
commaJoin = concatStringsSep ", ";
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,16 @@
|
||||||
|
|
||||||
deps = callPackage ./deps.nix {inherit dependenciesExtraArgs types;};
|
deps = callPackage ./deps.nix {inherit dependenciesExtraArgs types;};
|
||||||
|
|
||||||
sloth-flake.plugin = deps.mkSlothFlakePlugin version plugins;
|
normalizedPlugins = deps.normalizePlugins dependencies;
|
||||||
runtimePlugin.plugin = deps.mkRuntimePlugin runtime;
|
sloth-flake = deps.mkSlothFlakePlugin version normalizedPlugins;
|
||||||
plugins = deps.normalizePlugins (dependencies ++ [runtimePlugin sloth-flake]);
|
runtimePlugin = deps.mkRuntimePlugin runtime;
|
||||||
|
plugins =
|
||||||
|
normalizedPlugins
|
||||||
|
++ (deps.normalizePlugins [runtimePlugin sloth-flake]);
|
||||||
|
|
||||||
extractPlugin = p: {
|
extractPlugin = p: {
|
||||||
inherit (p) plugin;
|
inherit (p) plugin;
|
||||||
optional = p ? lazy && p.lazy || p ? cmd;
|
optional = p.lazy;
|
||||||
};
|
};
|
||||||
extractPlugins = map extractPlugin;
|
extractPlugins = map extractPlugin;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue