capistrano-rbenv 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+
2
+ require "capistrano/configuration"
3
+ require "capistrano/recipes/deploy/scm"
4
+
1
5
  module Capistrano
2
6
  module RbEnv
3
7
  def self.extended(configuration)
@@ -24,20 +28,7 @@ module Capistrano
24
28
  _cset(:rbenv_plugins_path) {
25
29
  File.join(rbenv_path, 'plugins')
26
30
  }
27
-
28
- _cset(:rbenv_git) {
29
- if scm == :git
30
- if fetch(:scm_command, :default) == :default
31
- fetch(:git, 'git')
32
- else
33
- scm_command
34
- end
35
- else
36
- fetch(:git, 'git')
37
- end
38
- }
39
-
40
- _cset(:rbenv_ruby_version, '1.9.3-p194')
31
+ _cset(:rbenv_ruby_version, "1.9.3-p327")
41
32
 
42
33
  _cset(:rbenv_use_bundler, true)
43
34
  set(:bundle_cmd) { # override bundle_cmd in "bundler/capistrano"
@@ -54,22 +45,40 @@ module Capistrano
54
45
  }
55
46
  after 'deploy:setup', 'rbenv:setup'
56
47
 
57
- def _rbenv_sync(repository, destination, revision)
58
- git = rbenv_git
59
- remote = 'origin'
60
- verbose = "-q"
61
- run((<<-E).gsub(/\s+/, ' '))
62
- if test -d #{destination}; then
63
- cd #{destination} && #{git} fetch #{verbose} #{remote} && #{git} fetch --tags #{verbose} #{remote} && #{git} merge #{verbose} #{remote}/#{revision};
48
+ def rbenv_update_repository(destination, options={})
49
+ configuration = Capistrano::Configuration.new()
50
+ variables.merge(options).each do |key, val|
51
+ configuration.set(key, val)
52
+ end
53
+ configuration.set(:source) { Capistrano::Deploy::SCM.new(configuration[:scm], configuration) }
54
+ configuration.set(:revision) { configuration[:source].head }
55
+ configuration.set(:real_revision) {
56
+ configuration[:source].local.query_revision(configuration[:revision]) { |cmd|
57
+ with_env("LC_ALL", "C") { run_locally(cmd) }
58
+ }
59
+ }
60
+ source = configuration[:source]
61
+ revision = configuration[:real_revision]
62
+ #
63
+ # we cannot use source.sync since it cleans up untacked files in the repository.
64
+ # currently we are just calling git sub-commands directly to avoid the problems.
65
+ #
66
+ verbose = configuration[:scm_verbose] ? nil : "-q"
67
+ run((<<-EOS).gsub(/\s+/, ' ').strip)
68
+ if [ -d #{destination} ]; then
69
+ cd #{destination} &&
70
+ #{source.command} fetch #{verbose} #{source.origin} &&
71
+ #{source.command} fetch --tags #{verbose} #{source.origin} &&
72
+ #{source.command} reset #{verbose} --hard #{revision};
64
73
  else
65
- #{git} clone #{verbose} #{repository} #{destination} && cd #{destination} && #{git} checkout #{verbose} #{revision};
66
- fi;
67
- E
74
+ #{source.checkout(revision, destination)};
75
+ fi
76
+ EOS
68
77
  end
69
78
 
70
79
  desc("Update rbenv installation.")
71
80
  task(:update, :except => { :no_release => true }) {
72
- _rbenv_sync(rbenv_repository, rbenv_path, rbenv_branch)
81
+ rbenv_update_repository(rbenv_path, :scm => :git, :repository => rbenv_repository, :branch => rbenv_branch)
73
82
  plugins.update
74
83
  }
75
84
 
@@ -84,7 +93,7 @@ module Capistrano
84
93
  rbenv_plugins.each { |name, repository|
85
94
  options = ( rbenv_plugins_options[name] || {})
86
95
  branch = ( options[:branch] || 'master' )
87
- _rbenv_sync(repository, File.join(rbenv_plugins_path, name), branch)
96
+ rbenv_update_repository(File.join(rbenv_plugins_path, name), :scm => :git, :repository => repository, :branch => branch)
88
97
  }
89
98
  }
90
99
  }
@@ -187,7 +196,7 @@ module Capistrano
187
196
  task(:build, :except => { :no_release => true }) {
188
197
  ruby = fetch(:rbenv_ruby_cmd, 'ruby')
189
198
  if rbenv_ruby_version != 'system'
190
- run("#{rbenv_cmd} whence #{ruby} | grep -q #{rbenv_ruby_version} || #{rbenv_cmd} install #{rbenv_ruby_version}")
199
+ run("#{rbenv_bin} whence #{ruby} | fgrep -q #{rbenv_ruby_version} || #{rbenv_bin} install #{rbenv_ruby_version}")
191
200
  end
192
201
  run("#{rbenv_cmd} exec #{ruby} --version && #{rbenv_cmd} global #{rbenv_ruby_version}")
193
202
  }
@@ -197,11 +206,11 @@ module Capistrano
197
206
  gem = "#{rbenv_cmd} exec gem"
198
207
  if v = fetch(:rbenv_bundler_version, nil)
199
208
  q = "-n #{rbenv_bundler_gem} -v #{v}"
200
- f = "grep #{rbenv_bundler_gem} | grep #{v}"
209
+ f = "fgrep #{rbenv_bundler_gem} | fgrep #{v}"
201
210
  i = "-v #{v} #{rbenv_bundler_gem}"
202
211
  else
203
212
  q = "-n #{rbenv_bundler_gem}"
204
- f = "grep #{rbenv_bundler_gem}"
213
+ f = "fgrep #{rbenv_bundler_gem}"
205
214
  i = "#{rbenv_bundler_gem}"
206
215
  end
207
216
  run("unset -v GEM_HOME; #{gem} query #{q} 2>/dev/null | #{f} || #{gem} install -q #{i}")
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module RbEnv
3
- VERSION = "0.0.6"
3
+ VERSION = "0.0.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-rbenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
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-24 00:00:00.000000000 Z
12
+ date: 2012-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano