drupid 1.0.1 → 1.1.0
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 +7 -0
- data/bin/drupid +24 -6
- data/lib/drupid.rb +2 -2
- data/lib/drupid/component.rb +8 -5
- data/lib/drupid/download_strategy.rb +26 -42
- data/lib/drupid/drush.rb +28 -136
- data/lib/drupid/extend/pathname.rb +3 -1
- data/lib/drupid/library.rb +3 -2
- data/lib/drupid/makefile.rb +1 -1
- data/lib/drupid/patch.rb +2 -1
- data/lib/drupid/platform.rb +30 -10
- data/lib/drupid/platform_project.rb +1 -1
- data/lib/drupid/project.rb +88 -63
- data/lib/drupid/updater.rb +111 -45
- data/lib/drupid/utils.rb +18 -9
- data/lib/drupid/version.rb +49 -3
- metadata +12 -15
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3a929de2a2d0b7af58b9721bfbbcca432d7a4c89
|
4
|
+
data.tar.gz: b34541cadc20ec1c9ec0fc56ae739c9350ccd67b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4f4b0a07712d7a4d42f812696392c09b4420b873f36efddbf9862bc85bd8455ffeacc5e205daa3f80fc03686faa624d83302d230ae11b47dd332f8acef5977ff
|
7
|
+
data.tar.gz: 4a9445e9f04fb27f411e4ab4b990dfc735a7b3035a0a5e745816387d114e195da9da896800a29b97c0ecf44de3476df246c6677313adb0e230814fbf45f140f7
|
data/bin/drupid
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
|
-
# Copyright (c) 2012 Lifepillar
|
4
|
+
# Copyright (c) 2012-2013 Lifepillar
|
5
5
|
#
|
6
6
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
7
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -39,14 +39,15 @@ module Drupid
|
|
39
39
|
:nodeps => false,
|
40
40
|
:nolibs => false,
|
41
41
|
:out => nil,
|
42
|
-
:site => nil
|
42
|
+
:site => nil,
|
43
|
+
:updatedb => false
|
43
44
|
}
|
44
45
|
@updater = nil
|
45
46
|
end
|
46
47
|
|
47
48
|
def preflight_dependencies
|
48
49
|
odie 'Drupid requires Ruby 1.8.7 or later' if RUBY_VERSION < '1.8.7'
|
49
|
-
['diff','curl','git','
|
50
|
+
['diff','curl','git','mktemp','patch','rsync'].each do |cmd|
|
50
51
|
if `which #{cmd} 2>/dev/null`.chomp.empty?
|
51
52
|
odie "Drupid requires '#{cmd}', but '#{cmd}' was not found in your PATH."
|
52
53
|
end
|
@@ -61,7 +62,7 @@ module Drupid
|
|
61
62
|
o.banner = "Drupid synchronizes a Drush makefile" +
|
62
63
|
" with a Drupal platform, and more!\n" +
|
63
64
|
"Usage:\n" +
|
64
|
-
"drupid -s <MAKEFILE> -p <DIRECTORY> [-
|
65
|
+
"drupid -s <MAKEFILE> -p <DIRECTORY> [-cdDflnSuv]\n" +
|
65
66
|
"drupid --clear-cache [-nv]\n" +
|
66
67
|
"drupid --edit [<URL>] [-v] [-o <FILE>]\n" +
|
67
68
|
"drupid --graph -p <DIRECTORY> [-Sv]\n" +
|
@@ -81,7 +82,7 @@ module Drupid
|
|
81
82
|
o.on('-D', '--debug', 'Enable debugging.') { $DEBUG = true; $VERBOSE = true }
|
82
83
|
o.on('-e', '--edit [URL]', 'Create patches interactively.',
|
83
84
|
'With no URL, edit the current directory.') { |u| @options[:command] = :edit; @options[:edit] = u }
|
84
|
-
o.on('-f', '--force', 'Force completion, even if there are errors.') { |b| @options[:force] = b }
|
85
|
+
o.on('-f', '--force', 'Force completion, even if there are warnings or errors.') { |b| @options[:force] = b }
|
85
86
|
o.on('-g', '--graph', 'Generate a dependency graph and exit.') { @options[:command] = :graph }
|
86
87
|
o.on('-h', '--help', 'Print help and exit.') {
|
87
88
|
puts o
|
@@ -97,6 +98,7 @@ module Drupid
|
|
97
98
|
end
|
98
99
|
o.on('-S', '--site NAME', 'Process the given site.',
|
99
100
|
'(For multi-site platforms.)') { |s| @options[:site] = s }
|
101
|
+
o.on('-u', '--updatedb', "Update Drupal's database after a successful sync.") { @options[:updatedb] = true }
|
100
102
|
o.on('-v', '--verbose', 'Be verbose.') { $VERBOSE = true }
|
101
103
|
o.on('-V', '--version', 'Print version and exit.') { puts DRUPID_USER_AGENT; exit 0 }
|
102
104
|
o.parse!
|
@@ -132,7 +134,7 @@ module Drupid
|
|
132
134
|
rescue => ex
|
133
135
|
odie "Could not analyze platform: #{ex}"
|
134
136
|
end
|
135
|
-
@updater = Drupid::Updater.new(mf, pl, @options
|
137
|
+
@updater = Drupid::Updater.new(mf, pl, @options)
|
136
138
|
blah 'Syncing (this may take a while)...'
|
137
139
|
ohai 'Preflighting changes...'
|
138
140
|
@updater.sync(
|
@@ -166,6 +168,21 @@ module Drupid
|
|
166
168
|
'.lock' != @updater.makefile.path.extname
|
167
169
|
@updater.makefile.save(@updater.makefile.path.sub_ext('.make.lock'))
|
168
170
|
end
|
171
|
+
if (not failed) and @options[:updatedb]
|
172
|
+
if which('drush').nil?
|
173
|
+
owarn 'Not updating the database because Drush cannot be found.'
|
174
|
+
elsif @updater.updatedb
|
175
|
+
ohai "Success!"
|
176
|
+
else
|
177
|
+
ofail "Database update failed."
|
178
|
+
failed = true
|
179
|
+
end
|
180
|
+
end
|
181
|
+
if failed
|
182
|
+
exit 1
|
183
|
+
else
|
184
|
+
exit 0
|
185
|
+
end
|
169
186
|
end
|
170
187
|
|
171
188
|
def clear_cache
|
@@ -256,6 +273,7 @@ module Drupid
|
|
256
273
|
rescue Interrupt
|
257
274
|
puts
|
258
275
|
drupid.ohai "Drupid interrupted"
|
276
|
+
exit 1
|
259
277
|
rescue => ex
|
260
278
|
puts
|
261
279
|
drupid.debug 'Backtrace:', ex.backtrace.join("\n")
|
data/lib/drupid.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
# Copyright (c) 2012 Lifepillar
|
3
|
+
# Copyright (c) 2012-2013 Lifepillar
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -38,7 +38,7 @@ module Kernel
|
|
38
38
|
end unless Kernel.respond_to? :silence_warnings
|
39
39
|
|
40
40
|
module Drupid
|
41
|
-
DRUPID_VERSION = '1.0
|
41
|
+
DRUPID_VERSION = '1.1.0'
|
42
42
|
DRUPID_USER_AGENT = "Drupid #{DRUPID_VERSION} (Ruby #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}; #{RUBY_PLATFORM})"
|
43
43
|
end
|
44
44
|
|
data/lib/drupid/component.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
# Copyright (c) 2012 Lifepillar
|
3
|
+
# Copyright (c) 2012-2013 Lifepillar
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -120,9 +120,12 @@ module Drupid
|
|
120
120
|
@local_path = cached_location
|
121
121
|
debug "#{extended_name} is cached"
|
122
122
|
else
|
123
|
-
raise "No download URL specified for #{extended_name}"
|
123
|
+
raise "No download URL specified for #{extended_name}" if download_url.nil?
|
124
124
|
blah "Fetching #{extended_name}"
|
125
|
-
downloader = Drupid.makeDownloader download_url.to_s,
|
125
|
+
downloader = Drupid.makeDownloader self.download_url.to_s,
|
126
|
+
self.cached_location.dirname.to_s,
|
127
|
+
self.cached_location.basename.to_s,
|
128
|
+
self.download_specs
|
126
129
|
downloader.fetch
|
127
130
|
downloader.stage
|
128
131
|
@local_path = downloader.staged_path
|
@@ -134,8 +137,8 @@ module Drupid
|
|
134
137
|
def patch
|
135
138
|
fetch unless exist?
|
136
139
|
return unless has_patches?
|
137
|
-
patched_location.rmtree if patched_location.exist? #
|
138
|
-
@local_path.ditto patched_location
|
140
|
+
dont_debug { patched_location.rmtree if patched_location.exist? } # Make sure that no previous patched copy exists
|
141
|
+
dont_debug { @local_path.ditto patched_location }
|
139
142
|
@local_path = patched_location
|
140
143
|
# Download patches
|
141
144
|
patched_location.dirname.cd do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
# Copyright (c) 2012 Lifepillar
|
3
|
+
# Copyright (c) 2012-2013 Lifepillar
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -90,7 +90,7 @@ module Drupid
|
|
90
90
|
when %r[^https?://svn\.] then Subversion
|
91
91
|
when %r[\.git$] then Git
|
92
92
|
when %r[\/] then Curl
|
93
|
-
else
|
93
|
+
else Curl
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -153,10 +153,9 @@ module Drupid
|
|
153
153
|
|
154
154
|
# Retrieves a file from this object's URL.
|
155
155
|
def fetch
|
156
|
-
@tarball_path.rmtree if @tarball_path.exist?
|
156
|
+
dont_debug { @tarball_path.rmtree if @tarball_path.exist? }
|
157
157
|
begin
|
158
|
-
|
159
|
-
@dest.mkpath unless @dest.exist?
|
158
|
+
dont_debug { @dest.mkpath }
|
160
159
|
_fetch
|
161
160
|
rescue Exception => e
|
162
161
|
ignore_interrupts { @tarball_path.unlink if @tarball_path.exist? }
|
@@ -173,8 +172,8 @@ module Drupid
|
|
173
172
|
# Invokes #fetch to retrieve the file if needed.
|
174
173
|
def stage wd = @dest
|
175
174
|
fetch unless @tarball_path.exist?
|
176
|
-
|
177
|
-
|
175
|
+
dont_debug { wd.mkpath }
|
176
|
+
debug "Staging into #{wd}"
|
178
177
|
target = wd + @tarball_path.basename
|
179
178
|
type = @tarball_path.compression_type
|
180
179
|
if type
|
@@ -185,27 +184,31 @@ module Drupid
|
|
185
184
|
if 1 == content.size and content.first.directory?
|
186
185
|
src = content.first
|
187
186
|
target = wd + src.basename
|
188
|
-
|
187
|
+
debug "Moving #{src} into #{wd}"
|
188
|
+
dont_debug { FileUtils.mv src.to_s, wd.to_s, :force => true }
|
189
189
|
else # the archive did not have a root folder or it expanded to a file instead of a folder
|
190
190
|
# We cannot move the temporary directory we are in, so we copy its content
|
191
191
|
src = Pathname.pwd
|
192
192
|
target = wd + src.basename
|
193
|
-
target.rmtree if target.exist? # Overwrite
|
194
|
-
target.mkpath
|
193
|
+
dont_debug { target.rmtree if target.exist? } # Overwrite
|
194
|
+
dont_debug { target.mkpath }
|
195
195
|
src.ditto target
|
196
196
|
end
|
197
197
|
debug "Temporary staging target: #{target}"
|
198
198
|
end
|
199
199
|
elsif wd != @dest
|
200
|
-
|
201
|
-
|
200
|
+
debug "Moving #{@tarball_path} into #{wd}"
|
201
|
+
dont_debug { FileUtils.mv @tarball_path.to_s, wd.to_s, :force => true }
|
202
|
+
end
|
202
203
|
if @name and @name != target.basename.to_s
|
203
204
|
new_path = target.dirname + @name
|
204
|
-
new_path.rmtree if new_path.exist?
|
205
|
+
dont_debug { new_path.rmtree if new_path.exist? }
|
206
|
+
debug "Renaming from #{target} to #{new_path}"
|
205
207
|
File.rename target.to_s, new_path.to_s
|
206
208
|
target = target.dirname+@name
|
207
209
|
end
|
208
210
|
@staged_path = target
|
211
|
+
debug "Staging completed"
|
209
212
|
end
|
210
213
|
|
211
214
|
private
|
@@ -226,25 +229,6 @@ module Drupid
|
|
226
229
|
|
227
230
|
end # Curl
|
228
231
|
|
229
|
-
|
230
|
-
class Drush < Curl
|
231
|
-
def initialize url, dest, name, download_specs = {}
|
232
|
-
super
|
233
|
-
@tarball_path = @dest + @name
|
234
|
-
end
|
235
|
-
|
236
|
-
def _fetch
|
237
|
-
output = Drupid::Drush.pm_download url, :destination => dest
|
238
|
-
p = Drupid::Drush.download_path(output)
|
239
|
-
if p
|
240
|
-
@tarball_path = Pathname.new(p).realpath
|
241
|
-
else
|
242
|
-
raise "Download failed for project #{name} (using Drush):\n#{output}"
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end # Drush
|
246
|
-
|
247
|
-
|
248
232
|
# Detect and download from Apache Mirror
|
249
233
|
class CurlApacheMirror < Curl
|
250
234
|
def _fetch
|
@@ -331,8 +315,8 @@ module Drupid
|
|
331
315
|
# Invokes #fetch to retrieve the file if needed.
|
332
316
|
def stage wd = @dest
|
333
317
|
fetch unless @clone.exist?
|
334
|
-
|
335
|
-
|
318
|
+
dont_debug { wd.mkpath }
|
319
|
+
debug "Staging into #{wd}"
|
336
320
|
target = wd + @clone.basename
|
337
321
|
Dir.chdir @clone do
|
338
322
|
if @specs.has_key?('branch')
|
@@ -388,8 +372,8 @@ module Drupid
|
|
388
372
|
|
389
373
|
def stage wd = @dest
|
390
374
|
fetch unless @co.exist?
|
391
|
-
|
392
|
-
|
375
|
+
dont_debug { wd.mkpath }
|
376
|
+
debug "Staging into #{wd}"
|
393
377
|
target = wd + @co.basename
|
394
378
|
svn 'export', '--force', @co, target
|
395
379
|
end
|
@@ -449,16 +433,16 @@ module Drupid
|
|
449
433
|
|
450
434
|
def stage wd = @dest
|
451
435
|
fetch unless @co.exist?
|
452
|
-
|
453
|
-
|
436
|
+
dont_debug { wd.mkpath }
|
437
|
+
debug "Staging into #{wd}"
|
454
438
|
target = wd + @co.basename
|
455
|
-
FileUtils.cp_r Dir[(@co+"{.}").to_s], target
|
439
|
+
dont_debug { FileUtils.cp_r Dir[(@co+"{.}").to_s], target }
|
456
440
|
|
457
441
|
require 'find'
|
458
442
|
Find.find(Dir.pwd) do |path|
|
459
443
|
if FileTest.directory?(path) && File.basename(path) == "CVS"
|
460
444
|
Find.prune
|
461
|
-
|
445
|
+
dont_debug { FileUtils.rm_r path, :force => true }
|
462
446
|
end
|
463
447
|
end
|
464
448
|
end
|
@@ -496,8 +480,8 @@ module Drupid
|
|
496
480
|
|
497
481
|
def stage wd = @dest
|
498
482
|
fetch unless @co.exist?
|
499
|
-
|
500
|
-
|
483
|
+
dont_debug { wd.mkpath }
|
484
|
+
debug "Staging into #{wd}"
|
501
485
|
dst = wd + @co.basename
|
502
486
|
Dir.chdir @clone do
|
503
487
|
#if @spec and @ref
|
data/lib/drupid/drush.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
-
# Copyright (c) 2012 Lifepillar
|
3
|
+
# Copyright (c) 2012-2013 Lifepillar
|
4
4
|
#
|
5
5
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
# of this software and associated documentation files (the "Software"), to deal
|
@@ -19,125 +19,23 @@
|
|
19
19
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
|
+
require 'yaml'
|
22
23
|
|
23
24
|
module Drupid
|
24
25
|
|
25
26
|
# A wrapper around drush.
|
26
|
-
module Drush
|
27
|
-
|
28
|
-
DRUSH = `which drush`.strip
|
29
|
-
|
30
|
-
def self.drush *args
|
31
|
-
runBabyRun DRUSH, args
|
32
|
-
end
|
33
|
-
|
34
|
-
# Executes 'drush core-status' at the given path and
|
35
|
-
# returns the output of the command.
|
36
|
-
def self.status path, options = {}
|
37
|
-
output = nil
|
38
|
-
FileUtils.cd(path) do
|
39
|
-
output = drush 'core-status', '--pipe'
|
40
|
-
end
|
41
|
-
output
|
42
|
-
end
|
43
|
-
|
44
|
-
# Executes 'drush pm-releases --all' for the given project and
|
45
|
-
# returns the output of the command.
|
46
|
-
def self.pm_releases project_name, options = {}
|
47
|
-
drush 'pm-releases', '--all', project_name
|
48
|
-
end
|
49
|
-
|
50
|
-
# Parses the output of 'drush pm-releases' and returns
|
51
|
-
# the version of the latest recommended release, or nil
|
52
|
-
# if no such release exists.
|
53
|
-
def self.recommended_release pm_releases_output
|
54
|
-
pm_releases_output.each_line do |l|
|
55
|
-
return $~[1] if (l.match(/^\s*([^\s]+).*Recommended/))
|
56
|
-
end
|
57
|
-
nil
|
58
|
-
end
|
59
|
-
|
60
|
-
# Parses the output of 'drush pm-releases' and returns
|
61
|
-
# the version of the latest supported release, or nil
|
62
|
-
# if no such release exists.
|
63
|
-
def self.supported_release pm_releases_output
|
64
|
-
pm_releases_output.each_line do |l|
|
65
|
-
return $~[1] if (l.match(/^\s*([^\s]+).*Supported/))
|
66
|
-
end
|
67
|
-
nil
|
68
|
-
end
|
69
|
-
|
70
|
-
# Executes 'drush pm-download <project_name>' and
|
71
|
-
# returns the output of the command.
|
72
|
-
# If :working_dir is set to an existing directory, move into that directory before
|
73
|
-
# executing the command.
|
74
|
-
#
|
75
|
-
# Options: source, destination, working_dir
|
76
|
-
def self.pm_download project_name, options = {}
|
77
|
-
args = ['pm-download', '-y']
|
78
|
-
args << "--source=#{options[:source]}" if options[:source]
|
79
|
-
args << "--destination\=#{options[:destination]}" if options[:destination]
|
80
|
-
args << "--variant=profile-only"
|
81
|
-
args << "--verbose" if $VERBOSE
|
82
|
-
args << project_name
|
83
|
-
if options[:working_dir] and File.directory?(options[:working_dir])
|
84
|
-
wd = options[:working_dir]
|
85
|
-
else
|
86
|
-
wd = FileUtils.pwd
|
87
|
-
end
|
88
|
-
output = nil
|
89
|
-
FileUtils.cd(wd) do
|
90
|
-
output = runBabyRun DRUSH, args, :redirect_stderr_to_stdout => true
|
91
|
-
end
|
92
|
-
output
|
93
|
-
end
|
94
|
-
|
95
|
-
# Parses the output of 'drush pm-download' and returns
|
96
|
-
# the path to the downloaded project, or nil
|
97
|
-
# if the path cannot be determined.
|
98
|
-
def self.download_path pm_download_output
|
99
|
-
pm_download_output.match(/^\s*Project.+downloaded to *(.\[.+[\n\r])?\s*(.+)\./)
|
100
|
-
return File.expand_path($~[2]) if $~
|
101
|
-
return nil
|
102
|
-
end
|
103
|
-
|
104
|
-
# Parses the output of 'drush pm-download' and returns
|
105
|
-
# the version of the downloaded project, or nil
|
106
|
-
# if the version cannot be determined.
|
107
|
-
def self.downloaded_version pm_download_output
|
108
|
-
pm_download_output.match(/^\s*Project.+\((.+)\) +downloaded +to/)
|
109
|
-
return $~[1] if $~
|
110
|
-
return nil
|
111
|
-
end
|
112
|
-
|
113
|
-
# Executes 'drush pm-info' at the given path and with an
|
114
|
-
# optional list of projects.
|
115
|
-
# Returns the output of the command.
|
116
|
-
def self.pm_info path, projects = [], options = {}
|
117
|
-
output = nil
|
118
|
-
args = Array.new
|
119
|
-
args << 'pm-info'
|
120
|
-
args << projects.join(' ') unless nil != projects and projects.empty?
|
121
|
-
FileUtils.cd(path) do
|
122
|
-
output = runBabyRun DRUSH, args, :redirect_stderr_to_stdout => true
|
123
|
-
end
|
124
|
-
output
|
125
|
-
end
|
126
|
-
|
127
|
-
# Returns the version of Drupal (e.g., '7.12')
|
128
|
-
# if the given path contains Drupal;
|
129
|
-
# returns nil otherwise.
|
130
|
-
def self.drupal_version path, options = {}
|
131
|
-
st = self.status(path, options)
|
132
|
-
return nil unless st.match(/drupal_version=(\d+\.\d+)/)
|
133
|
-
return $~[1]
|
134
|
-
end
|
27
|
+
module Drush
|
135
28
|
|
136
29
|
# Returns true if a Drupal's site is bootstrapped at the given path;
|
137
30
|
# returns false otherwise.
|
138
31
|
def self.bootstrapped?(path, options = {})
|
139
|
-
|
140
|
-
|
32
|
+
output = ''
|
33
|
+
FileUtils.cd(path) do
|
34
|
+
output = %x|drush core-status --format=yaml|
|
35
|
+
end
|
36
|
+
st = YAML.load(output)
|
37
|
+
return false unless st
|
38
|
+
return (st['bootstrap'] =~ /Successful/) ? true : false
|
141
39
|
end
|
142
40
|
|
143
41
|
# Returns true if the project at the given path is an enabled theme
|
@@ -150,34 +48,28 @@ module Drupid
|
|
150
48
|
#
|
151
49
|
# Options: verbose
|
152
50
|
def self.installed?(site_path, project_name, project_path, options = {})
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
51
|
+
output = nil
|
52
|
+
FileUtils.cd(site_path) do
|
53
|
+
# Redirect stderr to stdout because we do not want to output
|
54
|
+
# Drush's error messages when Drupid is run in verbose mode.
|
55
|
+
output = %x|drush pm-info --format=yaml #{project_name} 2>&1|
|
56
|
+
return false unless $?.success? # site not fully bootstrapped
|
158
57
|
end
|
159
|
-
|
160
|
-
return false unless st.
|
161
|
-
type =
|
162
|
-
|
163
|
-
|
164
|
-
('
|
165
|
-
('theme' == type and project_status =~ /^enabled/)
|
58
|
+
st = YAML.load(output)
|
59
|
+
return false unless st.has_key?(project_name)
|
60
|
+
type = st[project_name]['type']
|
61
|
+
status = st[project_name]['status']
|
62
|
+
('module' == type and status !~ /not installed/) or
|
63
|
+
('theme' == type and status =~ /^enabled/)
|
166
64
|
end
|
167
65
|
|
168
|
-
#
|
66
|
+
# Runs drush updatedb at the specified path.
|
169
67
|
#
|
170
|
-
#
|
171
|
-
def self.
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
args << '--no-core' if options[:nocore]
|
176
|
-
args << "--contrib-destination=#{options[:contrib_path]}" if options[:contrib_path]
|
177
|
-
args << "--no-patch-txt"
|
178
|
-
args << makefile
|
179
|
-
args << target
|
180
|
-
drush(*args)
|
68
|
+
# Raises a Drupid:ErrorDuringExecution exception if an error occurs.
|
69
|
+
def self.updatedb site_path
|
70
|
+
FileUtils.cd(site_path) do
|
71
|
+
return system 'drush updatedb -y'
|
72
|
+
end
|
181
73
|
end
|
182
74
|
|
183
75
|
end # module Drush
|