ecogem 0.0.3 → 0.0.4

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: 1c69f65814563d1d16699d4e04047ef40918b430
4
- data.tar.gz: fcc25d9a359070b667dd122526fdcd3080335a2c
3
+ metadata.gz: d7904ba539f80c558e94a230fba0c11577aa531f
4
+ data.tar.gz: a3014fc9609014738ae0a090232c202ed09b70ba
5
5
  SHA512:
6
- metadata.gz: acb46bf2546e1be3f5fd94b04f5b4fc83ec1b133d302d2f00de36aa2a301b9dfd0480489b77ca7b3aafea4267e30555851012e35c4f72109a61dab215412e15d
7
- data.tar.gz: 6ac7d3d72a02854577cc1b3aca78c8233a85563cd9607d762f2e37e35444bde90345988820d524e0148620db15ddac4565ce83c01160df703d31659d28e61cb3
6
+ metadata.gz: c4d7e7a2d73218b41f6e8dd471cabd60c71cd42552e5e713e6a190f01ab37de2f9c03527f81778931ee76c687b320fc7eb4f5815ce59d0d93edc256bdd493dec
7
+ data.tar.gz: a5ebb52222cd9b17cb5a44a85a369de808264031f67047b791366026e53f4231cbd8675deed643f5a6e260dd2bdbe1c016ab1a4232a91087674f3e4d4c782088
data/lib/ecogem.rb CHANGED
@@ -3,7 +3,7 @@ require_relative 'ecogem/version'
3
3
  Object.autoload :Bundler, 'bundler' unless Object.const_defined?(:Bundler, false)
4
4
 
5
5
  module Ecogem
6
- %w[cli config env gemfile git gitsfile util workspace].each do |name|
6
+ %w[cli config env gemfile git gitsfile path util workspace].each do |name|
7
7
  pascal = name.split(/_/).map{|i| i[0].upcase + i[1..-1]}.join('')
8
8
  autoload pascal, ::File.expand_path("../ecogem/#{name}", __FILE__)
9
9
  end
@@ -10,7 +10,7 @@ module Ecogem
10
10
  end
11
11
 
12
12
  def dir
13
- @dir ||= ::File.dirname(@pah)
13
+ @dir ||= ::File.dirname(@path)
14
14
  end
15
15
 
16
16
  private def dependencies
@@ -18,19 +18,27 @@ module Ecogem
18
18
  end
19
19
 
20
20
  private def extracted_dependencies
21
- @extracted_dependencies ||= extract_dependencies([], [], false)
21
+ @extracted_dependencies ||= extract_dependencies([], [], [], false)
22
22
  end
23
23
 
24
- protected def extract_dependencies(into, gits, git_only)
24
+ protected def extract_dependencies(into, gits, paths, subfile)
25
25
  dependencies.each do |d|
26
26
  if d.source.git?
27
- unless gits.include?(d.source.git.key)
28
- gits << d.source.git.key
29
- d.source.git.gemfile.extract_dependencies into, gits, true if d.source.git.gemfile
27
+ unless gits.include?(d.source.git_source.key)
28
+ gits << d.source.git_source.key
29
+ d.source.git_source.gemfile.extract_dependencies into, gits, paths, true if d.source.git_source.gemfile
30
30
  end
31
31
  into << d
32
+ elsif d.source.path?
33
+ unless subfile
34
+ unless paths.include?(d.source.path)
35
+ paths << d.source.path
36
+ d.source.path_source.gemfile.extract_dependencies into, gits, paths, true if d.source.path_source.gemfile
37
+ end
38
+ into << d
39
+ end
32
40
  else
33
- into << d unless git_only
41
+ into << d unless subfile
34
42
  end
35
43
  end
36
44
  into
@@ -51,7 +59,7 @@ module Ecogem
51
59
  end
52
60
 
53
61
  def write(dir = nil, name = nil)
54
- dir ||= ::File.dirname(@path)
62
+ dir ||= self.dir
55
63
  name ||= 'Gemfile'
56
64
  path = "#{dir}/#{name}"
57
65
  ::File.write "#{dir}/#{name}", code
@@ -77,11 +85,13 @@ module Ecogem
77
85
  pid = ::Process.fork do
78
86
  params = ::Marshal.load(in_r)
79
87
 
80
- dsl = ::Bundler::Dsl.new
81
- dsl.eval_gemfile(params[:path])
82
- result = ::Ecogem::Gemfile::Marshal.new(dsl).to_data
88
+ ::Dir.chdir(::File.dirname(params[:path])) do
89
+ dsl = ::Bundler::Dsl.new
90
+ dsl.eval_gemfile(params[:path])
91
+ result = ::Ecogem::Gemfile::Marshal.new(dsl).to_data
92
+ ::Marshal.dump(result, out_w)
93
+ end
83
94
 
84
- ::Marshal.dump(result, out_w)
85
95
  ::Process.exit!
86
96
  end
87
97
  ::Process.waitpid(pid)
@@ -1,6 +1,8 @@
1
1
  module Ecogem
2
2
  class Gemfile
3
3
  class Dependency
4
+ attr_reader :gemfile
5
+
4
6
  def initialize(gemfile, data)
5
7
  @gemfile = gemfile
6
8
  @data = data
@@ -1,4 +1,5 @@
1
1
  require 'fileutils'
2
+ require 'pathname'
2
3
 
3
4
  module Ecogem
4
5
  class Gemfile
@@ -27,7 +28,11 @@ module Ecogem
27
28
  end
28
29
 
29
30
  def path
30
- @data.options['path']
31
+ @path ||= ::File.expand_path(@data.options['path'].to_s, @dependency.gemfile.dir)
32
+ end
33
+
34
+ def relative_path
35
+ @relative_path ||= ::Pathname.new(path).relative_path_from(::Pathname.new(@dependency.gemfile.dir)).to_s
31
36
  end
32
37
 
33
38
  def source
@@ -38,16 +43,20 @@ module Ecogem
38
43
  @data.ref
39
44
  end
40
45
 
41
- def git
42
- @git ||= ::Ecogem::Git.new(git_uri, ref)
46
+ def git_source
47
+ @git_source ||= ::Ecogem::Git.new(git_uri, ref)
48
+ end
49
+
50
+ def path_source
51
+ @path_source ||= ::Ecogem::Path.new(path)
43
52
  end
44
53
 
45
54
  def code
46
55
  @code ||= begin
47
56
  if git?
48
- "path: Ecogem.git_path(#{git.key.inspect})"
57
+ "path: Ecogem.git_path(#{git_source.key.inspect})"
49
58
  elsif path?
50
- "path: #{path.to_s.inspect}"
59
+ "path: #{relative_path.inspect}"
51
60
  elsif source?
52
61
  "source: #{source.inspect}"
53
62
  end
@@ -0,0 +1,19 @@
1
+ module Ecogem
2
+ class Path
3
+ attr_reader :dir
4
+
5
+ def initialize(dir)
6
+ @dir = dir
7
+ end
8
+
9
+ private def gemfile_path
10
+ @gemfile_path ||= ::File.expand_path("#{dir}/Ecogemfile")
11
+ end
12
+
13
+ def gemfile
14
+ @gemfile ||= begin
15
+ ::Ecogem::Gemfile.new(gemfile_path) if ::File.file?(gemfile_path)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
1
  module Ecogem
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecogem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mosop
@@ -70,6 +70,7 @@ files:
70
70
  - lib/ecogem/gitsfile.rb
71
71
  - lib/ecogem/gitsfile/entries.rb
72
72
  - lib/ecogem/gitsfile/entries/keys.rb
73
+ - lib/ecogem/path.rb
73
74
  - lib/ecogem/util.rb
74
75
  - lib/ecogem/util/config.rb
75
76
  - lib/ecogem/util/config/entry.rb