capistrano-virtualenv 0.0.1 → 0.0.2

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.
data/README.md CHANGED
@@ -40,6 +40,7 @@ Following options are available to manage your virtualenv.
40
40
  * `:virtualenv_easy_install_options` - options for `easy_install`. by defaul "--quiet".
41
41
  * `:virtualenv_install_packages` - apt packages dependencies for python.
42
42
  * `:virtualenv_pip_options` - options for `pip`. by default "--quiet".
43
+ * `:virtualenv_pip_install_options` - options for `pip install`.
43
44
  * `:virtualenv_release_path` - virtualenv path under `:release_path`.
44
45
  * `:virtualenv_release_python` - python path under `:virtualenv_release_path`.
45
46
  * `:virtualenv_requirements` - the list of `pip` packages should be installed to `virtualenv`.
@@ -28,6 +28,7 @@ module Capistrano
28
28
  }
29
29
  _cset(:virtualenv_easy_install_options, %w(--quiet))
30
30
  _cset(:virtualenv_pip_options, %w(--quiet))
31
+ _cset(:virtualenv_pip_install_options, [])
31
32
  _cset(:virtualenv_pip_package, 'pip')
32
33
  _cset(:virtualenv_requirements, []) # primary package list
33
34
  _cset(:virtualenv_requirements_file) { # secondary package list
@@ -47,9 +48,25 @@ module Capistrano
47
48
  _cset(:virtualenv_shared_easy_install) {
48
49
  File.join(virtualenv_shared_path, 'bin', 'easy_install')
49
50
  }
51
+ _cset(:virtualenv_shared_easy_install_cmd) {
52
+ # execute from :virtualenv_shared_python
53
+ # since `virtualenv --relocatable` will not set shebang line with absolute path.
54
+ [
55
+ virtualenv_shared_python,
56
+ virtualenv_shared_easy_install,
57
+ virtualenv_easy_install_options,
58
+ ].flatten.join(' ')
59
+ }
50
60
  _cset(:virtualenv_shared_pip) {
51
61
  File.join(virtualenv_shared_path, 'bin', 'pip')
52
62
  }
63
+ _cset(:virtualenv_shared_pip_cmd) {
64
+ [
65
+ virtualenv_shared_python,
66
+ virtualenv_shared_pip,
67
+ virtualenv_pip_options,
68
+ ].flatten.join(' ')
69
+ }
53
70
 
54
71
  ## release virtualenv
55
72
  ## - created in release_path
@@ -64,9 +81,23 @@ module Capistrano
64
81
  _cset(:virtualenv_release_easy_install) {
65
82
  File.join(virtualenv_release_path, 'bin', 'easy_install')
66
83
  }
84
+ _cset(:virtualenv_release_easy_install_cmd) {
85
+ [
86
+ virtualenv_release_python,
87
+ virtualenv_release_easy_install,
88
+ virtualenv_easy_install_options,
89
+ ].flatten.join(' ')
90
+ }
67
91
  _cset(:virtualenv_release_pip) {
68
92
  File.join(virtualenv_release_path, 'bin', 'pip')
69
93
  }
94
+ _cset(:virtualenv_release_pip_cmd) {
95
+ [
96
+ virtualenv_release_python,
97
+ virtualenv_release_pip,
98
+ virtualenv_pip_options,
99
+ ].flatten.join(' ')
100
+ }
70
101
 
71
102
  ## current virtualenv
72
103
  ## - placed in current_path
@@ -80,9 +111,23 @@ module Capistrano
80
111
  _cset(:virtualenv_current_easy_install) {
81
112
  File.join(virtualenv_current_path, 'bin', 'easy_install')
82
113
  }
114
+ _cset(:virtualenv_current_easy_install_cmd) {
115
+ [
116
+ virtualenv_current_python,
117
+ virtualenv_current_easy_install,
118
+ virtualenv_easy_install_options,
119
+ ].flatten.join(' ')
120
+ }
83
121
  _cset(:virtualenv_current_pip) {
84
122
  File.join(virtualenv_current_path, 'bin', 'pip')
85
123
  }
124
+ _cset(:virtualenv_current_pip_cmd) {
125
+ [
126
+ virtualenv_current_python,
127
+ virtualenv_current_pip,
128
+ virtualenv_pip_options,
129
+ ].flatten.join(' ')
130
+ }
86
131
 
87
132
  desc("Setup virtualenv.")
88
133
  task(:setup, :except => { :no_release => true }) {
@@ -110,8 +155,8 @@ module Capistrano
110
155
  cmds = [ ]
111
156
  cmds << "mkdir -p #{dirs.join(' ')}"
112
157
  cmds << "( test -d #{virtualenv_shared_path} || #{virtualenv_cmd} #{virtualenv_shared_path} )"
113
- cmds << "( test -x #{virtualenv_shared_pip} || #{virtualenv_shared_easy_install} #{virtualenv_easy_install_options.join(' ')} #{virtualenv_pip_package} )"
114
- cmds << "#{virtualenv_shared_python} --version && #{virtualenv_shared_pip} --version"
158
+ cmds << "( test -x #{virtualenv_shared_pip} || #{virtualenv_shared_easy_install_cmd} #{virtualenv_pip_package} )"
159
+ cmds << "#{virtualenv_shared_python} --version && #{virtualenv_shared_pip_cmd} --version"
115
160
  run(cmds.join(' && '))
116
161
  }
117
162
 
@@ -134,20 +179,24 @@ module Capistrano
134
179
  top.put(virtualenv_requirements.join("\n"), tempfile.path)
135
180
  run("diff -u #{virtualenv_requirements_file} #{tempfile.path} || mv -f #{tempfile.path} #{virtualenv_requirements_file}; rm -f #{tempfile.path}")
136
181
  end
137
- run("touch #{virtualenv_requirements_file} && #{virtualenv_shared_pip} #{virtualenv_pip_options.join(' ')} install -r #{virtualenv_requirements_file}")
182
+ run("touch #{virtualenv_requirements_file} && #{virtualenv_shared_pip_cmd} install #{virtualenv_pip_install_options.join(' ')} -r #{virtualenv_requirements_file}")
138
183
  }
139
184
 
140
185
  task(:create_release, :except => { :no_release => true }) {
141
186
  dirs = [ File.dirname(virtualenv_release_path) ].uniq()
142
187
  cmds = [ ]
143
188
  cmds << "mkdir -p #{dirs.join(' ')}"
144
- if fetch(:virtualenv_use_relocatable, false) # "--relocatable" does not work expectedly on virtualenv 1.7.2
189
+ # TODO: turn :virtualenv_use_relocatable true if it will be an official features.
190
+ # `virtualenv --relocatable` does not work expectedly as of virtualenv 1.7.2.
191
+ if fetch(:virtualenv_use_relocatable, false)
145
192
  cmds << "#{virtualenv_cmd} --relocatable #{virtualenv_shared_path}"
146
193
  cmds << "cp -RPp #{virtualenv_shared_path} #{virtualenv_release_path}"
147
194
  else
148
195
  cmds << "( test -d #{virtualenv_release_path} || #{virtualenv_cmd} #{virtualenv_release_path} )"
149
- cmds << "( test -x #{virtualenv_release_pip} || #{virtualenv_release_easy_install} #{virtualenv_easy_install_options.join(' ')} #{virtualenv_pip_package} )"
150
- cmds << "#{virtualenv_release_python} --version && #{virtualenv_release_pip} --version"
196
+ cmds << "( test -x #{virtualenv_release_pip} || #{virtualenv_release_easy_install_cmd} #{virtualenv_pip_package} )"
197
+ cmds << "#{virtualenv_release_python} --version && #{virtualenv_release_pip_cmd} --version"
198
+ cmds << "rsync -lrpt -u #{virtualenv_shared_path}/bin/ #{virtualenv_release_path}/bin/" # copy binaries and scripts from shared virtualenv
199
+ cmds << "sed -i -e 's|^#!#{virtualenv_shared_path}/bin/python.*$|#!#{virtualenv_release_path}/bin/python|' #{virtualenv_release_path}/bin/*"
151
200
  cmds << "rsync -lrpt #{virtualenv_shared_path}/lib/ #{virtualenv_release_path}/lib/" # copy libraries from shared virtualenv
152
201
  end
153
202
  run(cmds.join(' && '))
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Virtualenv
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-virtualenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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-08-28 00:00:00.000000000 Z
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano