99 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| $:.push File.expand_path("../lib", __FILE__)
 | |
| 
 | |
| # Maintain your gem's version:
 | |
| require "faq/version"
 | |
| bundle_update_flag = ARGV[0]=='update' || ARGV[0]=='install'
 | |
| if bundle_update_flag
 | |
|   env_pwd = ENV['PWD']
 | |
|   begin
 | |
|     require ::File.expand_path('app/helpers/bundler_helper.rb',  env_pwd)
 | |
|     extend BundlerHelper
 | |
|   rescue LoadError
 | |
|     def bundler_with_clean_env(&block)
 | |
|       if block_given?
 | |
|         if Bundler.respond_to?(:with_unbundled_env)
 | |
|           Bundler.with_unbundled_env(&block)
 | |
|         else
 | |
|           Bundler.with_clean_env(&block)
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
|   app_path = File.expand_path(__dir__)
 | |
|   template_path = env_pwd + '/app/templates'
 | |
|   all_template = Dir.glob(template_path+'/*/')
 | |
|   default_faq_index_info = JSON.parse(File.read("#{app_path}/modules/faq/info.json"))["frontend"].sort_by{|h| h["filename"].to_i} rescue []
 | |
|   all_template.each do |folder|
 | |
|     if !folder.include?('mobile')
 | |
|       info_json_file = "#{folder}modules/faq/info.json"
 | |
|       if File.exist?(info_json_file)
 | |
|         begin
 | |
|           file_text = File.read(info_json_file) rescue ""
 | |
|           encode_file_text = file_text.encode("UTF-8", "UTF-8", invalid: :replace, replace: "???")
 | |
|           next if (encode_file_text.include?("???") rescue true)
 | |
|           info = JSON.parse(encode_file_text) rescue {}
 | |
|           flag = (info.count != 0 rescue false)
 | |
|           if flag
 | |
|             puts "Checking faq index"
 | |
|             frontend_info = info["frontend"].sort_by{|h| h["filename"].to_i} rescue []
 | |
|             update_flag = false
 | |
|             last_index = frontend_info[-1]["filename"].match(/\d+/)[0].to_i rescue nil
 | |
|             if !last_index.nil?
 | |
|               default_faq_index_info.each do |h|
 | |
|                 name_without_index = h["name"]["zh_tw"].sub(/\d+/,'')
 | |
|                 frontend_info_index = (frontend_info.index{|hh| hh["name"]["zh_tw"].include?(name_without_index)} rescue -1)
 | |
|                 if frontend_info_index == -1 || frontend_info_index.nil?
 | |
|                   update_flag = true
 | |
|                   copy_h = h.dup
 | |
|                   h.delete("force_cover")
 | |
|                   last_index = last_index + 1
 | |
|                   copy_h["filename"] = copy_h["filename"].sub(/\d+/){|ff| last_index.to_s}
 | |
|                   copy_h["name"].keys.each do |locale|
 | |
|                     copy_h["name"][locale] = copy_h["name"][locale].sub(/\d+/){|ff| last_index.to_s}
 | |
|                   end
 | |
|                   frontend_info << copy_h
 | |
|                   bundler_with_clean_env{%x[cp -f #{app_path}/modules/faq/#{h["filename"]}.html.erb #{folder}modules/faq/#{copy_h["filename"]}.html.erb]}
 | |
|                 elsif h["force_cover"] == "true"
 | |
|                   bundler_with_clean_env{%x[cp -f #{app_path}/modules/faq/#{h["filename"]}.html.erb #{folder}modules/faq/#{frontend_info[frontend_info_index]["filename"]}.html.erb]}
 | |
|                 end
 | |
|               end
 | |
|               if update_flag
 | |
|                 info["frontend"] = frontend_info
 | |
|                 puts "Writing json #{info["frontend"].count} in #{info_json_file}"
 | |
|                 begin
 | |
|                   info_json = JSON.pretty_generate(info).gsub(":[",":[\n").gsub(":{",":{\n")
 | |
|                 rescue
 | |
|                   info_json = info.to_s.gsub("=>",": \n")
 | |
|                 end
 | |
|                 File.open(info_json_file,"w+"){|f| f.write(info_json)}
 | |
|               end
 | |
|             end
 | |
|           end
 | |
|         rescue => e
 | |
|           puts e
 | |
|           puts e.backtrace
 | |
|           puts "There has some error when checking faq index"
 | |
|         end
 | |
|       else
 | |
|         if !Dir.exist?(File.dirname(info_json_file)) && Dir.exist?(File.dirname(File.dirname(info_json_file)))
 | |
|           bundler_with_clean_env{system ('cp -r '+ app_path + '/modules/ ' + folder)}
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | |
| # Describe your gem and declare its dependencies:
 | |
| Gem::Specification.new do |s|
 | |
|   s.name        = "faq"
 | |
|   s.version     = Faq::VERSION
 | |
|   s.authors     = ["Ruling Digital"]
 | |
|   s.email       = ["orbit@rulingcom.com"]
 | |
|   s.homepage    = "http://www.rulingcom.com"
 | |
|   s.summary     = "FAQ module of orbit"
 | |
|   s.description = "FAQ module to create FAQs for orbit"
 | |
|   s.license     = "MIT"
 | |
| 
 | |
|   s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
 | |
|   s.test_files = Dir["test/**/*"]
 | |
| end
 |