| Class | Plugin |
| In: |
vendor/rails/railties/lib/commands/plugin.rb
|
| Parent: | Object |
| name | [R] | |
| uri | [R] |
# File vendor/rails/railties/lib/commands/plugin.rb, line 153
153: def self.find(name)
154: name =~ /\// ? new(name) : Repositories.instance.find_plugin(name)
155: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 148
148: def initialize(uri, name=nil)
149: @uri = uri
150: guess_name(uri)
151: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 165
165: def git_url?
166: @uri =~ /^git:\/\// || @uri =~ /\.git$/
167: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 206
206: def info
207: tmp = "#{rails_env.root}/_tmp_about.yml"
208: if svn_url?
209: cmd = "svn export #{@uri} \"#{rails_env.root}/#{tmp}\""
210: puts cmd if $verbose
211: system(cmd)
212: end
213: open(svn_url? ? tmp : File.join(@uri, 'about.yml')) do |stream|
214: stream.read
215: end rescue "No about.yml found in #{uri}"
216: ensure
217: FileUtils.rm_rf tmp if svn_url?
218: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 174
174: def install(method=nil, options = {})
175: method ||= rails_env.best_install_method?
176: if :http == method
177: method = :export if svn_url?
178: method = :clone if git_url?
179: end
180:
181: uninstall if installed? and options[:force]
182:
183: unless installed?
184: send("install_using_#{method}", options)
185: run_install_hook
186: else
187: puts "already installed: #{name} (#{uri}). pass --force to reinstall"
188: end
189: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 169
169: def installed?
170: File.directory?("#{rails_env.root}/vendor/plugins/#{name}") \
171: or rails_env.externals.detect{ |name, repo| self.uri == repo }
172: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 161
161: def svn_url?
162: @uri =~ /svn(?:\+ssh)?:\/\/*/
163: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 157
157: def to_s
158: "#{@name.ljust(30)}#{@uri}"
159: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 191
191: def uninstall
192: path = "#{rails_env.root}/vendor/plugins/#{name}"
193: if File.directory?(path)
194: puts "Removing 'vendor/plugins/#{name}'" if $verbose
195: run_uninstall_hook
196: rm_r path
197: else
198: puts "Plugin doesn't exist: #{path}"
199: end
200: # clean up svn:externals
201: externals = rails_env.externals
202: externals.reject!{|n,u| name == n or name == u}
203: rails_env.externals = externals
204: end