lib/dokkufy/plugin.rb
require 'open-uri'
require 'hpricot'
module Dokkufy
class Plugin
attr_accessor :hostname, :username, :path
def initialize hostname, username
self.hostname = hostname
self.username = username
end
def install id_or_name
self.path = id_or_name
Dokkufy::Server.new(hostname, username).install_plugin(path, name)
end
def uninstall id_or_name
self.path = id_or_name
Dokkufy::Server.new(hostname, username).uninstall_plugin(path, name)
end
def self.all with_notes = false
return @plugins if @plugins
open("http://progrium.viewdocs.io/dokku/plugins") do |f|
hp = Hpricot(f)
plugins = hp.search("tbody tr td").each_slice(3)
@plugins = plugins.each_with_index.map do |plugin, index|
first_element = plugin.first.children.reject{|e| e.inner_text.strip == ""}.first
entry = [index+1,
first_element.attributes["href"].split("github.com/").last,
first_element.inner_text]
entry << plugin.last.inner_text if with_notes
entry
end
end
end
private
def path=(id_or_name)
if id_or_name.to_i.to_s == id_or_name
Dokkufy::Plugin.all.each do |plugin|
if plugin[0] == id_or_name.to_i
@path = plugin[1]
return
end
end
else
@id = id_or_name
end
end
def name
Dokkufy::Plugin.all.each do |plugin|
if plugin[1] == path
return plugin[2].split(" ").first.downcase
end
end
end
end
end