Class: Plugin
- Inherits:
-
Object
- Object
- Plugin
- Defined in:
- lib/rails/commands/plugin.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Class Method Summary collapse
Instance Method Summary collapse
- #git_url? ⇒ Boolean
- #info ⇒ Object
-
#initialize(uri, name = nil) ⇒ Plugin
constructor
A new instance of Plugin.
- #install(method = nil, options = {}) ⇒ Object
- #installed? ⇒ Boolean
- #svn_url? ⇒ Boolean
- #to_s ⇒ Object
- #uninstall ⇒ Object
Constructor Details
#initialize(uri, name = nil) ⇒ Plugin
Returns a new instance of Plugin.
118 119 120 121 |
# File 'lib/rails/commands/plugin.rb', line 118 def initialize(uri, name = nil) @uri = uri guess_name(uri) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
116 117 118 |
# File 'lib/rails/commands/plugin.rb', line 116 def name @name end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri.
116 117 118 |
# File 'lib/rails/commands/plugin.rb', line 116 def uri @uri end |
Class Method Details
.find(name) ⇒ Object
123 124 125 |
# File 'lib/rails/commands/plugin.rb', line 123 def self.find(name) new(name) end |
Instance Method Details
#git_url? ⇒ Boolean
135 136 137 |
# File 'lib/rails/commands/plugin.rb', line 135 def git_url? @uri =~ /^git:\/\// || @uri =~ /\.git$/ end |
#info ⇒ Object
179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/rails/commands/plugin.rb', line 179 def info tmp = "#{rails_env.root}/_tmp_about.yml" if svn_url? cmd = "svn export #{@uri} \"#{rails_env.root}/#{tmp}\"" puts cmd if $verbose system(cmd) end open(svn_url? ? tmp : File.join(@uri, 'about.yml')) do |stream| stream.read end rescue "No about.yml found in #{uri}" ensure FileUtils.rm_rf tmp if svn_url? end |
#install(method = nil, options = {}) ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/rails/commands/plugin.rb', line 144 def install(method=nil, = {}) method ||= rails_env.best_install_method? if :http == method method = :export if svn_url? method = :git if git_url? end uninstall if installed? and [:force] unless installed? send("install_using_#{method}", ) run_install_hook else puts "already installed: #{name} (#{uri}). pass --force to reinstall" end end |
#installed? ⇒ Boolean
139 140 141 142 |
# File 'lib/rails/commands/plugin.rb', line 139 def installed? File.directory?("#{rails_env.root}/vendor/plugins/#{name}") \ or rails_env.externals.detect{ |name, repo| self.uri == repo } end |
#svn_url? ⇒ Boolean
131 132 133 |
# File 'lib/rails/commands/plugin.rb', line 131 def svn_url? @uri =~ /svn(?:\+ssh)?:\/\/*/ end |
#to_s ⇒ Object
127 128 129 |
# File 'lib/rails/commands/plugin.rb', line 127 def to_s "#{@name.ljust(30)}#{@uri}" end |
#uninstall ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/rails/commands/plugin.rb', line 161 def uninstall path = "#{rails_env.root}/vendor/plugins/#{name}" if File.directory?(path) puts "Removing 'vendor/plugins/#{name}'" if $verbose run_uninstall_hook rm_r path else puts "Plugin doesn't exist: #{path}" end if rails_env.use_externals? # clean up svn:externals externals = rails_env.externals externals.reject!{|n, u| name == n or name == u} rails_env.externals = externals end end |