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 +4 -4
- data/lib/ecogem.rb +1 -1
- data/lib/ecogem/gemfile.rb +22 -12
- data/lib/ecogem/gemfile/dependency.rb +2 -0
- data/lib/ecogem/gemfile/source.rb +14 -5
- data/lib/ecogem/path.rb +19 -0
- data/lib/ecogem/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7904ba539f80c558e94a230fba0c11577aa531f
|
4
|
+
data.tar.gz: a3014fc9609014738ae0a090232c202ed09b70ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/ecogem/gemfile.rb
CHANGED
@@ -10,7 +10,7 @@ module Ecogem
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def dir
|
13
|
-
@dir ||= ::File.dirname(@
|
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,
|
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.
|
28
|
-
gits << d.source.
|
29
|
-
d.source.
|
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
|
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 ||=
|
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
|
-
|
81
|
-
|
82
|
-
|
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,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
|
42
|
-
@
|
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(#{
|
57
|
+
"path: Ecogem.git_path(#{git_source.key.inspect})"
|
49
58
|
elsif path?
|
50
|
-
"path: #{
|
59
|
+
"path: #{relative_path.inspect}"
|
51
60
|
elsif source?
|
52
61
|
"source: #{source.inspect}"
|
53
62
|
end
|
data/lib/ecogem/path.rb
ADDED
@@ -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
|
data/lib/ecogem/version.rb
CHANGED
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.
|
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
|