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