orbit4-5/app/helpers/admin/module_store_helper.rb

68 lines
2.4 KiB
Ruby

module Admin::ModuleStoreHelper
def get_built_in_extensions
built_in_extensions = []
extensions_to_update = get_extensions_to_update
@extensions_to_update_count = extensions_to_update.count
built_in_extensions = get_extension_from_file("built_in",extensions_to_update)
built_in_extensions.concat(get_extension_from_file("downloaded",extensions_to_update))
return built_in_extensions
end
def get_extension_from_file(type,extensions_to_update)
temp = []
extensions = File.new("#{Rails.root}/#{type}_extensions.rb", "r")
while (extension = extensions.gets)
is_extension = extension.start_with?("gem")
extension = extension.split(',')
if is_extension
key = extension[0].split(/[\'\"]/)[1]
ma = ModuleApp.find_by_key(key) rescue nil
if !ma.nil?
update_available = extensions_to_update.include?(key) ? true : false
temp << {'key' => key, 'name' => ma.title, 'repo' => extension[1].split(/[\'\"]/)[1], 'tag' => (extension[2].split(/[\'\"]/)[1] rescue ""), "update_available" => update_available, "type" => type}
end
end
end
return temp
end
def get_extensions_to_update
# if !File.exists?("#{Rails.root}/built_in_extensions.rb.lock") || !File.exists?("#{Rails.root}/downloaded_extensions.rb.lock")
# update_extension_file("built_in")
# update_extension_file("downloaded")
# return []
# else
# update_extensions = get_update_info_for_extensions("built_in")
# update_extensions.concat(get_update_info_for_extensions("downloaded"))
# return update_extensions
# end
update_extensions = get_update_info_for_extensions("built_in")
return update_extensions
end
def update_extension_file(type)
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=#{type}_extensions.rb bundle update && bundle` }
end
def get_update_info_for_extensions(type)
buffer = Bundler.with_clean_env { `cd #{Rails.root} && bundle outdated` }
buffer = buffer.split("\n")
if buffer.last == "Bundle up to date!"
return []
elsif buffer.first.start_with?("The git source")
update_extension_file(type)
return []
else
output = []
buffer.each do |b|
if b.start_with?(" * ")
temp = b.split(" ")
output << temp[1] if !temp[1].nil?
end
end
return output
end
end
end