envandle 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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