envandle 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac9db50e7977e1c07ba3f2a2f882d2dd00fa41e7
4
- data.tar.gz: b570ef35b12e02cb3a47993a8676710563c32ef9
3
+ metadata.gz: 0ba6b7a03fbf1cc046052c324154724a5ceb40d0
4
+ data.tar.gz: 169f79ad81e4fc3c8b8aae3460a6f6c7c5ef87f7
5
5
  SHA512:
6
- metadata.gz: 802b941c80adf4b48a74c5ede5fb4e41f2f5da36c364518df007a0b286f3ae49ff95f87aa91e71cdcef6931c5ed0bf5644035e18f5d5b8ae7ded5e67efbd0600
7
- data.tar.gz: 5c2185eecac33db45da7fefa71399ca0866372b810c50024a0ae63213d63d4bbcf836c55095bad39d086a7af118753464eef067f23c2e77b84a37ed99fd16a2e
6
+ metadata.gz: 642dae47bcd9b8a9acf5d91738804f26011e5d392013e16c0a82f57e1174021e6f31ace53d8e5ffc54435237ba167b28ad8d42551b7c0b525047e360e8d9e860
7
+ data.tar.gz: 594124734d8e3e917fc2888800e2bcbda79afcf9db326bfd3eda22b2c6934aae074733316f38d7e87f34a813d537893bb4340edd8b3e766c031f582027960036
@@ -52,10 +52,20 @@ module Envandle
52
52
  children_by_type(child.type) << child
53
53
  end
54
54
 
55
- def exec(context)
56
- executable_argsets.each do |i|
57
- i.send_to context
55
+ def send_to_bundler(receiver)
56
+ bundler_argsets.each do |i|
57
+ i.send_to receiver
58
58
  end
59
59
  end
60
+
61
+ def send_to_history(receiver)
62
+ history_argsets.each do |i|
63
+ i.send_to receiver
64
+ end
65
+ end
66
+
67
+ def history_argsets
68
+ bundler_argsets
69
+ end
60
70
  end
61
71
  end
@@ -10,19 +10,19 @@ module Envandle
10
10
  :gem
11
11
  end
12
12
 
13
- def extract_executable_argsets(a, cache)
13
+ def extract_bundler_argsets(a, cache)
14
14
  found = false
15
15
  @args.contextual_groups.each do |group|
16
- if gemfile.references.extract_executable_argsets(@args, group, @name, a, cache)
16
+ if gemfile.references.extract_bundler_argsets(@args, group, @name, a, cache)
17
17
  found = true
18
18
  end
19
19
  end
20
20
  a << Argset.new(:gem, *@args.args_and_options) unless found
21
21
  end
22
22
 
23
- def executable_argsets
24
- @executable_argsets ||= [].tap do |a|
25
- extract_executable_argsets a, {}
23
+ def bundler_argsets
24
+ @bundler_argsets ||= [].tap do |a|
25
+ extract_bundler_argsets a, {}
26
26
  end
27
27
  end
28
28
  end
@@ -13,25 +13,54 @@ module Envandle
13
13
  dsl_method :git_source
14
14
  end
15
15
 
16
+ DUMP = ENV["ENVANDLE_DUMP"].to_s
17
+
16
18
  def initialize(file, binding, config_dir = nil)
17
19
  super Location.new(file, 1), nil
18
- @binding = binding
20
+ @bundler_binding = dumps? ? History.new : binding
19
21
  @config_dir = config_dir
20
22
  end
21
23
 
22
- def binding_receiver
23
- @binding.receiver
24
+ def bundler_receiver
25
+ @bundler_binding.receiver
26
+ end
27
+
28
+ def history
29
+ @history ||= History.new
24
30
  end
25
31
 
26
32
  def draw(&block)
27
33
  super
28
34
  exec
35
+ dump if dumps?
36
+ end
37
+
38
+ def dumps?
39
+ !DUMP.empty?
40
+ end
41
+
42
+ def dump
43
+ dump_file do |f|
44
+ f << JSON.pretty_generate(history.argsets)
45
+ end
46
+ end
47
+
48
+ def dump_file(&block)
49
+ case DUMP
50
+ when "1"
51
+ yield $stdout
52
+ when "2"
53
+ yield $stderr
54
+ else
55
+ File.open DUMP, "w", &block
56
+ end
29
57
  end
30
58
 
31
59
  def exec
32
- receiver = @binding.receiver
60
+ receiver = bundler_receiver
33
61
  children.each do |child|
34
- child.exec receiver
62
+ child.send_to_bundler receiver
63
+ child.send_to_history history
35
64
  end
36
65
  references.left.each do |k, v|
37
66
  v.to_executable_argset(Argset.new(nil)).send_to receiver
@@ -15,8 +15,8 @@ module Envandle
15
15
  :gemspec
16
16
  end
17
17
 
18
- def executable_argsets
19
- @executable_argsets ||= begin
18
+ def bundler_argsets
19
+ @bundler_argsets ||= begin
20
20
  [].tap do |a|
21
21
  path = @path || ::Envandle::Gemspec.find_file(gemfile.dir, name: @name)
22
22
  spec = ::Envandle::Gemspec.new(path)
@@ -27,7 +27,7 @@ module Envandle
27
27
  argset = Argset.new(nil, i.name, *i.requirements_list)
28
28
  argset.options[:group] = group if group
29
29
  gem = Gem.new(@loc, @context, *argset.args_and_options)
30
- gem.extract_executable_argsets a, found
30
+ gem.extract_bundler_argsets a, found
31
31
  end
32
32
  end
33
33
  end
@@ -8,11 +8,17 @@ module Envandle
8
8
  :git_source_block
9
9
  end
10
10
 
11
- def executable_argsets
12
- @executable_argsets ||= [].tap do |a|
11
+ def bundler_argsets
12
+ @bundler_argsets ||= [].tap do |a|
13
13
  a << Argset.new(:git_source, *@args.args_and_options, &@args.block)
14
14
  end
15
15
  end
16
+
17
+ def history_argsets
18
+ @history_argsets ||= [].tap do |a|
19
+ a << Argset.new(:git_source, *@args.args_and_options, @args.block.class.name)
20
+ end
21
+ end
16
22
  end
17
23
  end
18
24
  end
@@ -22,11 +22,22 @@ module Envandle
22
22
  @groups ||= @args.args.dup
23
23
  end
24
24
 
25
- def executable_argsets
26
- @executable_argsets ||= [].tap do |a|
25
+ def bundler_argsets
26
+ @bundler_argsets ||= [].tap do |a|
27
27
  a << Argset.new(:group, *@args.args_and_options) do
28
+ receiver = gemfile.bundler_receiver
28
29
  children.each do |child|
29
- child.exec gemfile.binding_receiver
30
+ child.send_to_bundler receiver
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def history_argsets
37
+ @history_argsets ||= [].tap do |a|
38
+ a << Argset.new(:group, *@args.args_and_options) do |history|
39
+ children.each do |child|
40
+ child.send_to_history history
30
41
  end
31
42
  end
32
43
  end
@@ -5,8 +5,8 @@ module Envandle
5
5
  :source
6
6
  end
7
7
 
8
- def executable_argsets
9
- @executable_argsets ||= [].tap do |a|
8
+ def bundler_argsets
9
+ @bundler_argsets ||= [].tap do |a|
10
10
  a << Argset.new(:source, *@args.args_and_options)
11
11
  end
12
12
  end
@@ -0,0 +1,29 @@
1
+ module Envandle
2
+ class History
3
+ def receiver
4
+ self
5
+ end
6
+
7
+ def argsets
8
+ @argsets ||= []
9
+ end
10
+
11
+ def method_missing(name, *args, &block)
12
+ add_argset name, *args, &block
13
+ end
14
+
15
+ def add_argset(name, *args, &block)
16
+ a = [name, *args]
17
+ argsets << a
18
+ if block
19
+ h = History.new
20
+ block.call h
21
+ a << h.argsets
22
+ end
23
+ end
24
+
25
+ def gem(*args)
26
+ add_argset :gem, *args
27
+ end
28
+ end
29
+ end
@@ -67,14 +67,14 @@ module Envandle
67
67
  klass.new(@context, parse_name(env, name), url, ref)
68
68
  end
69
69
 
70
- def extract_executable_argsets(base, group, name, argsets, found = {})
70
+ def extract_bundler_argsets(base, group, name, argsets, found = {})
71
71
  key = Envandle.reference_key(group, name)
72
72
  return true if found.key?(key)
73
73
  found[key] = true
74
74
  if ref = use(name)
75
75
  ref.spec.runtime_dependencies.each do |i|
76
76
  if ref2 = use(i.name)
77
- extract_executable_argsets base, nil, i.name, argsets, found
77
+ extract_bundler_argsets base, nil, i.name, argsets, found
78
78
  end
79
79
  end
80
80
  args = base.dup
@@ -1,3 +1,3 @@
1
1
  module Envandle
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
data/lib/envandle.rb CHANGED
@@ -2,6 +2,7 @@ autoload :FileUtils, "fileutils" unless Object::const_defined?(:FileUtils) && !O
2
2
  autoload :Mutex, "thread" unless Object::const_defined?(:Mutex) && !Object::autoload?(:Mutex)
3
3
  autoload :Open3, "open3" unless Object::const_defined?(:Open3) && !Object::autoload?(:Open3)
4
4
  autoload :YAML, "yaml" unless Object::const_defined?(:YAML) && !Object::autoload?(:YAML)
5
+ autoload :JSON, "json" unless Object::const_defined?(:JSON) && !Object::autoload?(:JSON)
5
6
  require "envandle/version"
6
7
  require "envandle/exceptions"
7
8
  require "envandle/helper"
@@ -19,6 +20,7 @@ module Envandle
19
20
  autoload :Gemspec, "envandle/gemspec"
20
21
  autoload :GitBranchReference, "envandle/git_branch_reference"
21
22
  autoload :GitUtil, "envandle/git_util"
23
+ autoload :History, "envandle/history"
22
24
  autoload :Location, "envandle/location"
23
25
  autoload :PathReference, "envandle/path_reference"
24
26
  autoload :ReferenceCache, "envandle/reference_cache"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: envandle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - mosop
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-17 00:00:00.000000000 Z
11
+ date: 2017-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -97,6 +97,7 @@ files:
97
97
  - lib/envandle/git_branch_reference.rb
98
98
  - lib/envandle/git_util.rb
99
99
  - lib/envandle/helper.rb
100
+ - lib/envandle/history.rb
100
101
  - lib/envandle/location.rb
101
102
  - lib/envandle/path_reference.rb
102
103
  - lib/envandle/reference_cache.rb