class Redmine::Utils::PluginInstaller

Public Class Methods

new(plugins_folder, plugin_props) click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 8
def initialize(plugins_folder, plugin_props)
  @plugins_folder = plugins_folder
  @plugin         = plugin_props
end

Public Instance Methods

install() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 13
def install
  if folder_exists?
    update_plugin
  else
    clone_plugin
  end
  bundle
  migrate
end

Private Instance Methods

bundle() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 54
def bundle
  shell.execute(
    "cd #{dest_dir}; cd ..; bundle"
  )
end
clone_plugin() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 37
def clone_plugin
  shell.execute(
    "git clone #{@plugin.git} #{dest_dir}"
  )
end
commit_specification() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 49
def commit_specification
  return @plugin.tag if @plugin.tag
  return "origin/#{@plugin.branch}" if @plugin.branch
end
dest_dir() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 29
def dest_dir
  File.join(@plugins_folder, @plugin.folder)
end
folder_exists?() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 25
def folder_exists?
  File.directory?(dest_dir)
end
migrate() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 60
def migrate
  shell.execute(
    "cd #{dest_dir}; cd ..; bundle exec rake redmine:plugins"
  )
end
shell() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 33
def shell
  @shell ||= Redmine::Utils::System.new
end
update_plugin() click to toggle source
# File lib/redmine/utils/plugin_installer.rb, line 43
def update_plugin
  shell.execute(
    "cd #{dest_dir}; git fetch -a; git reset --hard #{commit_specification}"
  )
end