grill 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,7 @@ require "grill/version"
4
4
 
5
5
  module Grill
6
6
  class << self
7
+
7
8
  def home
8
9
  home = "#{ENV["GRILL_HOME"] || ENV["HOME"] || "."}/.grill"
9
10
  unless File.directory?(home)
@@ -12,6 +13,15 @@ module Grill
12
13
  home
13
14
  end
14
15
 
16
+ def gemfile_path(gems)
17
+ fullpath = File.expand_path($0)
18
+ filename = "#{Digest::MD5.hexdigest(fullpath)}-#{Digest::MD5.hexdigest(gems)}"
19
+ path = File.join(home, ruby, filename)
20
+ dir = File.dirname(path)
21
+ FileUtils.mkdir_p(dir) unless File.directory?(dir)
22
+ path
23
+ end
24
+
15
25
  def implant(*args)
16
26
  gems = ""
17
27
  args.each do |arg|
@@ -23,21 +33,44 @@ module Grill
23
33
  gems << "\n"
24
34
  end
25
35
 
26
- fullpath = File.expand_path($0)
27
- gemfile = "#{home}/#{Digest::MD5.hexdigest(fullpath)}-#{Digest::MD5.hexdigest(gems)}"
36
+ gemfile = gemfile_path(gems)
28
37
  tmp = File.open(gemfile, "w")
29
38
  tmp.puts gems
30
39
  tmp.close
31
40
  ENV["BUNDLE_GEMFILE"] = tmp.path
32
41
 
33
- unless system(%Q!bundle check --gemfile "#{gemfile}" --path #{home}/gems > #{File::NULL}!)
42
+ gemdir = File.join(home, ruby)
43
+ unless system(%Q!bundle check --gemfile "#{gemfile}" --path "#{gemdir}" > #{devnull}!)
34
44
  puts "missing gems found. will install them"
35
- system(%Q!bundle install --gemfile "#{gemfile}" --path "#{home}/gems"!)
45
+ system(%Q!bundle install --gemfile "#{gemfile}" --path "#{gemdir}"!)
36
46
  puts "gems are installed."
37
47
  end
38
48
 
39
49
  require "bundler/setup"
40
50
  Bundler.require
41
51
  end
52
+
53
+ private
54
+ def ruby
55
+ "#{defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby18"}-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
56
+ end
57
+
58
+ def devnull
59
+ # from https://github.com/marcandre/backports/blob/v2.6.5/lib/backports/1.9.3/file.rb
60
+ return File::NULL if File.const_defined?(:NULL)
61
+
62
+ platform = RUBY_PLATFORM
63
+ platform = RbConfig::CONFIG['host_os'] if platform == 'java'
64
+ case platform
65
+ when /mswin|mingw/i
66
+ 'NUL'
67
+ when /amiga/i
68
+ 'NIL:'
69
+ when /openvms/i
70
+ 'NL:'
71
+ else
72
+ '/dev/null'
73
+ end
74
+ end
42
75
  end
43
76
  end
@@ -1,3 +1,3 @@
1
1
  module Grill
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -12,7 +12,7 @@ describe Grill do
12
12
  end
13
13
 
14
14
  it "#home" do
15
- Grill.home.should == "#{ENV["GRILL_HOME"]}/.grill"
15
+ Grill.home.should match %r!^#{ENV["GRILL_HOME"]}/.grill!
16
16
  end
17
17
 
18
18
  # cannot use `context` because test will be broken
@@ -69,14 +69,14 @@ describe Grill do
69
69
  end
70
70
 
71
71
  it "separete Gemfile different contants" do
72
- Grill.implant(<<-GEM)
73
- gem "bundler"
74
- GEM
75
- Dir.glob("#{Grill.home}/*-*").length.should == 2 # Gemfile and Gemfile.lock
72
+ gemfile1 = 'gem "bundler"'
73
+ file1 = Grill.gemfile_path(gemfile1)
76
74
 
77
- Grill.implant(<<-GEM)
75
+ gemfile2 = <<-GEM
78
76
  gem "dummy", :path => "#{File.expand_path(".././support", __FILE__)}"
79
77
  GEM
80
- Dir.glob("#{Grill.home}/*-*").length.should == 4
78
+ file2 = Grill.gemfile_path(gemfile2)
79
+
80
+ file1.should_not == file2
81
81
  end
82
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grill
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-15 00:00:00.000000000 Z
12
+ date: 2012-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler