diff options
author | Judson <nyarly@gmail.com> | 2017-05-31 09:44:46 -0700 |
---|---|---|
committer | Judson <nyarly@gmail.com> | 2017-05-31 09:44:46 -0700 |
commit | c4fc70f53cfaf673bde7fd009826d62bececa161 (patch) | |
tree | bab057e830f073cbf1c5460b11f0efc215724001 /pkgs/development/ruby-modules/bundled-common | |
parent | e4bb4d4788547e09c35e85d1271ffb07122d2b1b (diff) | |
download | nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar.gz nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar.bz2 nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar.lz nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar.xz nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.tar.zst nixpkgs-c4fc70f53cfaf673bde7fd009826d62bececa161.zip |
Starting to add tool builder. Extracting bundler file computation.
Diffstat (limited to 'pkgs/development/ruby-modules/bundled-common')
3 files changed, 49 insertions, 2 deletions
diff --git a/pkgs/development/ruby-modules/bundled-common/default.nix b/pkgs/development/ruby-modules/bundled-common/default.nix index 33a379c0275..e532224195f 100644 --- a/pkgs/development/ruby-modules/bundled-common/default.nix +++ b/pkgs/development/ruby-modules/bundled-common/default.nix @@ -7,10 +7,10 @@ { name , pname ? name +, gemdir , gemfile , lockfile , gemset -, gemdir , ruby ? defs.ruby , gemConfig ? defaultGemConfig , postBuild ? null diff --git a/pkgs/development/ruby-modules/bundled-common/functions.nix b/pkgs/development/ruby-modules/bundled-common/functions.nix index ce8a1b69c74..1d7c4878e13 100644 --- a/pkgs/development/ruby-modules/bundled-common/functions.nix +++ b/pkgs/development/ruby-modules/bundled-common/functions.nix @@ -1,5 +1,25 @@ { lib, gemConfig, ... }: rec { + bundlerFiles = { + gemfile ? null + , lockfile ? null + , gemset ? null + , gemdir ? null + , ... + }: { + gemfile = + if gemfile == null then assert gemdir != null; gemdir + "/Gemfile" + else gemfile; + + lockfile = + if lockfile == null then assert gemdir != null; gemdir + "/Gemfile.lock" + else lockfile; + + gemset = + if gemset == null then assert gemdir != null; gemdir + "/gemset.nix" + else gemset; + }; + filterGemset = {ruby, groups,...}@env: gemset: lib.filterAttrs (name: attrs: platformMatches ruby attrs && groupMatches groups attrs) gemset; platformMatches = {rubyEngine, version, ...}@ruby: attrs: ( diff --git a/pkgs/development/ruby-modules/bundled-common/test.nix b/pkgs/development/ruby-modules/bundled-common/test.nix index b24a620ed50..ee3754595f3 100644 --- a/pkgs/development/ruby-modules/bundled-common/test.nix +++ b/pkgs/development/ruby-modules/bundled-common/test.nix @@ -7,7 +7,34 @@ let functions = (import ./functions.nix testConfigs); in builtins.concatLists [ - (test.run "Filter empty gemset" {} (set: functions.filterGemset {inherit ruby; groups = ["default"]; } set == {})) + ( test.run "All set, no gemdir" (functions.bundlerFiles { + gemfile = test/Gemfile; + lockfile = test/Gemfile.lock; + gemset = test/gemset.nix; + }) { + gemfile = should.equal test/Gemfile; + lockfile = should.equal test/Gemfile.lock; + gemset = should.equal test/gemset.nix; + }) + + ( test.run "Just gemdir" (functions.bundlerFiles { + gemdir = test/.; + }) { + gemfile = should.equal test/Gemfile; + lockfile = should.equal test/Gemfile.lock; + gemset = should.equal test/gemset.nix; + }) + + ( test.run "Gemset and dir" (functions.bundlerFiles { + gemdir = test/.; + gemset = test/extraGemset.nix; + }) { + gemfile = should.equal test/Gemfile; + lockfile = should.equal test/Gemfile.lock; + gemset = should.equal test/extraGemset.nix; + }) + + ( test.run "Filter empty gemset" {} (set: functions.filterGemset {inherit ruby; groups = ["default"]; } set == {})) ( let gemSet = { test = { groups = ["x" "y"]; }; }; in test.run "Filter matches a group" gemSet (set: functions.filterGemset {inherit ruby; groups = ["y" "z"];} set == gemSet)) |