class Itamae::Plugin::Resource::SetupSeleniumDriver
Public Instance Methods
action_run(options)
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 21 def action_run(options) case attributes.type.to_sym when :chrome run_setup_chromedriver when :gecko run_setup_geckodriver end updated! end
pre_action()
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 12 def pre_action attributes.cwd = attributes.tmp_dir attributes.install_dir = File.join(attributes.install_dir, '/') end
set_current_attributes()
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 17 def set_current_attributes current.executed = false end
Private Instance Methods
do_not_run_command_because_of_not_if?(command)
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 113 def do_not_run_command_because_of_not_if?(command) run_command(command, error: false).exit_status == 0 end
run_command_if_not(name, if_not_command, command)
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 104 def run_command_if_not(name, if_not_command, command) if do_not_run_command_because_of_not_if?(if_not_command) Itamae.logger.debug "#{resource_type}[#{name}] Execution skipped because already done" else run_command command show_differences_message(name, 'executed', false, true) end end
run_setup_chromedriver()
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 34 def run_setup_chromedriver host = 'chromedriver.storage.googleapis.com' base_url = 'https://' + host browser_version = run_command('sudo yum list | grep google-chrome-stable').stdout.split[1] browser_version = Gem::Version.new(browser_version.to_s).segments[0..2].join('.') driver_version_url = base_url + "/LATEST_RELEASE_#{browser_version}" driver_version = Net::HTTP.get_response(URI(driver_version_url)).body download_url = base_url + "/#{driver_version}/chromedriver_linux64.zip" header = Net::HTTP.start(host) { |http| http.head("/#{driver_version}/chromedriver_linux64.zip") } etag = header['etag'][1...-1] Itamae.logger.debug "browser version: #{browser_version}" Itamae.logger.debug "driver version: #{driver_version}" Itamae.logger.debug "download url: #{download_url}" Itamae.logger.debug "etag: #{etag}" run_command_if_not( 'download chromedriver', "echo '#{etag} chromedriver_linux64-#{driver_version}.zip' | md5sum -c -", <<-COMMANDS rm -Rf chromedriver_linux64-#{driver_version}* curl -o chromedriver_linux64-#{driver_version}.zip #{download_url} COMMANDS ) run_command_if_not( 'install chromedriver', "#{attributes.install_dir}chromedriver -v | grep 'ChromeDriver #{driver_version}'", <<-COMMANDS unzip chromedriver_linux64-#{driver_version}.zip sudo mv -f chromedriver #{attributes.install_dir} COMMANDS ) end
run_setup_geckodriver()
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 69 def run_setup_geckodriver base_url = "https://github.com/mozilla/geckodriver/releases" url = base_url + '/latest' response = nil 5.times do response = Net::HTTP.get_response(URI(url)) break unless response.is_a?(Net::HTTPRedirection) url = response['location'] end driver_version = response.uri.to_s[/[^v]*$/] download_url = base_url + "/download/v#{driver_version}/geckodriver-v#{driver_version}-linux64.tar.gz" Itamae.logger.debug "driver version: #{driver_version}" Itamae.logger.debug "download url: #{download_url}" run_command_if_not( 'download geckodriver', "test -e geckodriver-v#{driver_version}-linux64.tar.gz", <<-COMMANDS rm -Rf geckodriver-v#{driver_version}-linux64* curl -L -o geckodriver-v#{driver_version}-linux64.tar.gz #{download_url} COMMANDS ) run_command_if_not( 'install geckodriver', "#{attributes.install_dir}geckodriver -V | grep 'geckodriver #{driver_version}'", <<-COMMANDS tar zxf geckodriver-v#{driver_version}-linux64.tar.gz sudo mv -f geckodriver #{attributes.install_dir} COMMANDS ) end
show_differences_message(name, key, current_value, value)
click to toggle source
# File lib/itamae/plugin/resource/setup_selenium_driver.rb, line 117 def show_differences_message(name, key, current_value, value) Itamae.logger.color :green do Itamae.logger.info "#{resource_type}[#{name}] #{key} will change from '#{current_value}' to '#{value}'" end end