2015-04-21 09:19:00 +00:00
|
|
|
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)
|
2015-04-30 13:08:52 +00:00
|
|
|
built_in_extensions.concat(get_extension_from_file("downloaded",extensions_to_update))
|
2015-04-21 09:19:00 +00:00
|
|
|
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
|
2015-04-27 12:45:05 +00:00
|
|
|
# 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
|
2015-04-21 09:19:00 +00:00
|
|
|
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)
|
2015-04-27 12:45:05 +00:00
|
|
|
buffer = Bundler.with_clean_env { `cd #{Rails.root} && bundle outdated` }
|
2015-04-21 09:19:00 +00:00
|
|
|
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
|