$:.push File.expand_path("../lib", __FILE__) # Maintain your gem's version: require "announcement/version" env_pwd = ENV['PWD'] app_path = File.expand_path(__dir__) template_path = env_pwd + '/app/templates' all_template = Dir.glob(template_path+'/*/') puts 'editing files for sassc' new_gemfile_text = File.read(app_path+'/temp_file/Gemfile') old_gemfile_text = File.read(env_pwd+'/Gemfile') check_texts = ['@import "../../bootstrap/variables";',".response-content {\n position: relative;\n}\n"] git_url = Bundler.with_clean_env{%x[cd '#{env_pwd}' && git config --get remote.origin.url].sub("\n",'')} git_remote = Bundler.with_clean_env{%x[cd '#{env_pwd}' && git remote].sub("\n",'')} if git_url != 'https://ruling.digital/git' puts 'changing remote url' Bundler.with_clean_env{system("cd #{env_pwd} && git remote set-url #{git_remote} https://ruling.digital/git")} end all_template.each do |folder| if !folder.include?('mobile') begin if folder.split('/')[-1] != 'mobile' unity_text = File.read(folder+'assets/stylesheets/template/base/_unity.scss') rescue '' if unity_text.split(/\n/).join.strip.empty? File.open(folder+'assets/stylesheets/template/base/_unity.scss', 'a') do |file| file.puts "@charset \"utf-8\";\n\n@import \"variables\";\n\n// Title\n.unity-title {\n margin: 0.5em 0;\n line-height: 1.5;\n font-family: $main-font;\n font-size: $font-h1;\n\n .layout-footer & {\n margin-bottom: 10px;\n border-bottom: none;\n\n span {\n display: inline;\n margin-bottom: 0;\n border-bottom: none;\n }\n }\n}\n\n.status {\n font-family: $main-font;\n font-size: 0.75rem;\n}\n\n.status-top {\n background-color: $theme-color-second;\n}\n\n.status-hot {\n background-color: $theme-color-third;\n}\n\n.status-source {\n background-color: $theme-color-main;\n\n a {\n color: $theme-white;\n }\n}\n" end end filename = folder+'assets/stylesheets/template/base/_variables.scss' texts = File.read(filename) regex_pattern = /.response-content[^{]*{[^}]*@media[^{]*{[^{]*}[^{]*@media[^{]*{[^{]*}[^}]*}[^}]*}/m if !texts.include? "$font-h1:" texts = "$font-h1: 1.5rem;\n$font-h2: 1.35rem;\n$font-h3: 1.2rem;\n$font-h4: 1.1rem;\n$font-h5: 1rem;\n$font-h6: 0.9rem;\n\n" + text end if !texts.include? "$main-font:" texts = "$main-font: Arial, \"微軟正黑體\", \"Helvetica Neue\", Helvetica, sans-serif;\n" + text end if !texts.include? "$theme-white" texts = "$theme-white: #fff;\n" + texts end folder = 'app/templates/ms_nctu_1129/' tp_text = File.read(folder+'assets/stylesheets/template/template.scss') rescue '' tp_last_text = tp_text tp_text.scan(/@import.*http.*;/).each do |pat| if pat.scan(/@import\W+url/).count==0 pat1 = pat.sub(/@import\W/,"@import url(") pat1 = pat1.sub(/;/,");") tp_last_text = tp_last_text.sub(pat,pat1) end end if texts.split(regex_pattern).count > 1 auto_save_text = texts.scan(regex_pattern).join('') File.open(folder+'assets/stylesheets/template/base/_autobackup.bak', 'a') do |file| file.puts auto_save_text end File.open(filename, 'w') do |file| file.puts (texts.split(regex_pattern).join('') + check_texts[1]) end else check_texts.each do |check_text| if !texts.include?(check_text) puts "editing #{folder}assets/stylesheets/template/base/_variables.scss" File.open(filename, 'a') do |file| file.puts check_text end end end end end rescue => e puts "not found #{folder}assets/stylesheets/template/base/_variables.scss" end end end if old_gemfile_text != new_gemfile_text unicorn_rails = %x[which unicorn_rails].sub("\n",'') puts 'updating gemfile' Bundler.with_clean_env{%x[cp -f '#{env_pwd}'/Gemfile '#{env_pwd}'/Gemfile.bak123]} Bundler.with_clean_env{%x[cp -f '#{app_path}'/temp_file/Gemfile '#{env_pwd}'/Gemfile]} old_playground = File.read (env_pwd+'/app/controllers/admin/playground_controller.rb') rescue '' new_playground = File.read (app_path+'/temp_file/playground_controller.rb') rescue '' command2 = '' if old_playground != new_playground puts 'updating playground' command2 = "cp -f #{app_path}/temp_file/playground_controller.rb #{env_pwd}/app/controllers/admin/playground_controller.rb ;" #File.open(ENV['PWD']+'/app/controllers/admin/playground_controller.rb', 'w') do |file| # file.write new_playground #end end old_multithread = File.read (env_pwd+'/app/models/multithread.rb') rescue '' new_multithread = File.read (app_path+'/temp_file/multithread.rb') rescue '' command3 = '' if old_multithread != new_multithread puts 'updating multithread' command3 = "cp -f #{app_path}/temp_file/multithread.rb #{env_pwd}/app/models/multithread.rb ;" #File.open(ENV['PWD']+'/app/models/multithread.rb', 'w') do |file| # file.write new_multithread #end end command4 = "cp -rf #{app_path}/temp_file/app #{env_pwd}" log_development = File.mtime(env_pwd+'/log/development.log').strftime('%Y%m%d%H%M').to_i rescue 0 log_production = File.mtime(env_pwd+'/log/production.log').strftime('%Y%m%d%H%M').to_i rescue 0 if log_development > log_production mode = 'development' else mode = 'production' end files = Dir[env_pwd+'/Gemfile.lock'] dir_name = env_pwd.split('/')[-1] watch_dog = %x[screen -ls auto_reopen_#{dir_name}] if watch_dog.scan("auto_reopen_#{dir_name}").count != 0 Bundler.with_clean_env{%x[screen -ls | grep auto_reopen_#{dir_name} | cut -d. -f1 | awk '{print $1}' | xargs kill]} end if files.count ==0 command1 = "gem install bundler -v 1.17.3 ; bundle install --force ; bundle update" else command1 = "gem install bundler -v 1.17.3 ; mv -f Gemfile.lock Gemfile.lock.bak123 ; bundle install --force ; bundle update" end filedata = File.read(env_pwd+"/built_in_extensions.rb") exist_str = "gem 'patchfile', git: 'http://gitlab.tp.rulingcom.com/chiu/patch_file.git'" if filedata.include? exist_str puts "patchfile exist" else file = env_pwd+"/built_in_extensions.rb" open(file, 'a') { |f| f.puts exist_str } end all_command = "#{command1} ; #{command2} #{command3} #{command4} ; kill -s TERM `cat tmp/pids/unicorn.pid` ; unset UNICORN_FD ; bundle exec #{unicorn_rails} -c config/unicorn.rb -D -E #{mode}|at now" watch_dog_cmd = "watch -n 30 \"unset UNICORN_FD && bundle exec #{unicorn_rails} -c config/unicorn.rb -D -E #{mode}|at now\"" #file = File.new(File.join(env_pwd,'bundle_update_background.sh'),"w") #file.write(all_command) #file.chmod(0755) #file.close a = Thread.start do Bundler.with_clean_env do puts env_pwd puts mode exec("cd #{env_pwd} && env -i HOME=\"$HOME\" bash -l -c \"#{all_command}\" ; screen -d -m -S auto_reopen_#{dir_name} #{watch_dog_cmd} ") end end now_priority = Thread.current.priority.to_i system('sleep 2') a.priority = now_priority + 2 a.run #Thread.exit end # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "announcement" s.version = Announcement::VERSION s.authors = ["RulingDigital"] s.email = ["orbit@rulingcom.com"] s.homepage = "http://www.rulingcom.com" s.summary = "Announcements for Orbit" s.description = "Announcements for Orbit" s.license = "MIT" s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] s.test_files = Dir["test/**/*"] s.add_dependency "rufus-scheduler", "~> 3.6.0" end