Merge pull request #51884 from alyssais/bundlerEnv-groups
bundlerEnv: improve handling of groups
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
, postBuild ? null
|
||||
, document ? []
|
||||
, meta ? {}
|
||||
, groups ? ["default"]
|
||||
, groups ? null
|
||||
, ignoreCollisions ? false
|
||||
, buildInputs ? []
|
||||
, ...
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
{ lib, gemConfig, ... }:
|
||||
rec {
|
||||
|
||||
let
|
||||
inherit (lib) attrValues concatMap converge filterAttrs getAttrs
|
||||
intersectLists;
|
||||
|
||||
in rec {
|
||||
bundlerFiles = {
|
||||
gemfile ? null
|
||||
, lockfile ? null
|
||||
@@ -22,7 +27,19 @@ rec {
|
||||
else gemset;
|
||||
};
|
||||
|
||||
filterGemset = {ruby, groups,...}: gemset: lib.filterAttrs (name: attrs: platformMatches ruby attrs && groupMatches groups attrs) gemset;
|
||||
filterGemset = { ruby, groups, ... }: gemset:
|
||||
let
|
||||
platformGems = filterAttrs (_: platformMatches ruby) gemset;
|
||||
directlyMatchingGems = filterAttrs (_: groupMatches groups) platformGems;
|
||||
|
||||
expandDependencies = gems:
|
||||
let
|
||||
depNames = concatMap (gem: gem.dependencies or []) (attrValues gems);
|
||||
deps = getAttrs depNames platformGems;
|
||||
in
|
||||
gems // deps;
|
||||
in
|
||||
converge expandDependencies directlyMatchingGems;
|
||||
|
||||
platformMatches = {rubyEngine, version, ...}: attrs: (
|
||||
!(attrs ? "platforms") ||
|
||||
@@ -33,10 +50,9 @@ rec {
|
||||
) attrs.platforms
|
||||
);
|
||||
|
||||
groupMatches = groups: attrs: (
|
||||
!(attrs ? "groups") ||
|
||||
builtins.any (gemGroup: builtins.any (group: group == gemGroup) groups) attrs.groups
|
||||
);
|
||||
groupMatches = groups: attrs:
|
||||
groups == null || !(attrs ? "groups") ||
|
||||
(intersectLists (groups ++ [ "default" ]) attrs.groups) != [];
|
||||
|
||||
applyGemConfigs = attrs:
|
||||
(if gemConfig ? "${attrs.gemName}"
|
||||
|
||||
Reference in New Issue
Block a user