ecogem 0.0.3 → 0.0.4

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: 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