lib/flammarion/revelator.rb in flammarion-0.0.13 vs lib/flammarion/revelator.rb in flammarion-0.0.14

- old
+ new

@@ -1,39 +1,27 @@ module Flammarion + # @api private + # @todo This all needs a lot of clean up module Revelator - def which(cmd) - exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] - ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| - exts.each do |ext| - exe = File.join(path, "#{cmd}#{ext}") - return exe if File.executable?(exe) && !File.directory?(exe) - end - end - return nil - end - CHROME_PATH = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' - def open_a_window_on_windows + def open_a_window_on_windows(options) file_path = File.absolute_path(File.join(File.dirname(__FILE__), "..")) file_path = `cygpath -w '#{file_path}'`.strip if RbConfig::CONFIG["host_os"] == "cygwin" resource = %[file\://#{file_path}/html/build/index.html] chrome_path = CHROME_PATH chrome_path = `cygpath -u '#{CHROME_PATH}'`.strip if RbConfig::CONFIG["host_os"] == "cygwin" - spawn(chrome_path, %[--app=#{resource}?path=#{@window_id}&port=#{server.port}]) + Process.detach(spawn(chrome_path, %[--app=#{resource}?path=#{@window_id}&port=#{server.port}&title="#{options[:title] || "Flammarion%20Engraving"}"])) end - def open_a_window - return open_a_window_on_windows if RbConfig::CONFIG["host_os"] =~ /cygwin|mswin|mingw/ - developmentMode = system("lsof -i:#{4567}", out: '/dev/null') + def open_a_window(options = {}) + return open_a_window_on_windows(options) if RbConfig::CONFIG["host_os"] =~ /cygwin|mswin|mingw/ + developmentMode = system("lsof -i:#{4567}", out: '/dev/null') and File.exist?("#{File.dirname(__FILE__)}/../html/source/index.html.slim") host = "file://#{File.dirname(File.absolute_path(__FILE__))}/../html/build/index.html" host = "http://localhost:4567/" if developmentMode - # data_dir = Dir.mktmpdir("flammarion") - # File.open("#{data_dir}/First\ Run", "w") {} + @expect_title = options[:title] || "Flammarion-#{rand.to_s[2..-1]}" - @expect_title = "Flammarion-#{rand.to_s[2..-1]}" - if which('electron') then Process.detach(spawn("electron #{File.dirname(File.absolute_path(__FILE__))}/../../electron '#{host}?path=#{@window_id}&port=#{server.port}&title=#{@expect_title}'")) return end @@ -41,8 +29,20 @@ @chrome.in, @chrome.out, @chrome.err, @chrome.thread = Open3.popen3("#{executable} --app='#{host}?path=#{@window_id}&port=#{server.port}&title=#{@expect_title}'") break if @chrome.in end raise StandardError.new("Cannot launch any browser") unless @chrome.in + end + + private + def which(cmd) + exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : [''] + ENV['PATH'].split(File::PATH_SEPARATOR).each do |path| + exts.each do |ext| + exe = File.join(path, "#{cmd}#{ext}") + return exe if File.executable?(exe) && !File.directory?(exe) + end + end + return nil end end end