itamae-plugin-recipe-selenium 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: '091154a228fefdaf126d978d1a3d1af7f85c7a4e1ee6c9f9127320baa35e878a'
4
- data.tar.gz: e64ca4cbe95a6416aa6e703b50d965dbb45fe11913d2a9bceb9a61cdacb97f8d
2
+ SHA1:
3
+ metadata.gz: 66d4ba73c62582d5e221a6478f32359a8b31a8ef
4
+ data.tar.gz: c5b22c860d68d0414c425a2d2fcb678f40cfe07c
5
5
  SHA512:
6
- metadata.gz: eabad90af13e794a0adfeaa2c450f591d9c1d934c6b7d08fb44950d8942057e713c4b9ea60fa6816a766b01036548693a5ce29bc01b3dc54e8843fa3a894fdf7
7
- data.tar.gz: 80df270031008bbf159c71a7c693580a8aaab4147318deff24c695795f4db6732ba43218778899d6089b13a353171615a605c56e74ae1d9d39da32436c5a8af5
6
+ metadata.gz: 84fcdca7e3233e384672e363e71826c063fe51fa43debb79a83433f12765b39c54afa6d657da0fbd53400b4001c40abb62bc67f100cd2dd9046f4b6c5564129c
7
+ data.tar.gz: 65ebe9d587fa439db64ef22fb4e92fb2052cc647d05fc6874eb0dbaf02c40af4a5b574e694e6afaa3b0b24364a9b408181ef1527a850d093566fce151e444295
@@ -1,6 +1,5 @@
1
1
  require "itamae/plugin/recipe/selenium/version"
2
2
 
3
- include_recipe './selenium/tmp_directory'
4
3
  include_recipe './selenium/chrome'
5
4
  include_recipe './selenium/chromedriver'
6
5
  include_recipe './selenium/geckodriver'
@@ -1,29 +1,7 @@
1
- require 'net/http'
1
+ include_recipe './tmp_directory'
2
2
 
3
- host = 'chromedriver.storage.googleapis.com'
4
- base_url = 'https://' + host
5
- browser_version = run_command('sudo yum list | grep google-chrome-stable').stdout.split[1]
6
- browser_version = Gem::Version.new(browser_version.to_s).segments[0..2].join('.')
7
- driver_version_url = base_url + "/LATEST_RELEASE_#{browser_version}"
8
- version = Net::HTTP.get_response(URI(driver_version_url)).body
9
- download_url = base_url + "/#{version}/chromedriver_linux64.zip"
10
- header = Net::HTTP.start(host) { |http| http.head("/#{version}/chromedriver_linux64.zip") }
11
- etag = header['etag'][1...-1]
12
-
13
- execute "download chromedriver-#{version}" do
14
- cwd '/tmp/itamae-plugin-recipe-selenium'
15
- command <<-EOF
16
- rm -Rf chromedriver_linux64-#{version}*
17
- curl -o chromedriver_linux64-#{version}.zip #{download_url}
18
- EOF
19
- not_if "echo '#{etag} chromedriver_linux64-#{version}.zip' | md5sum -c -"
20
- end
21
-
22
- execute "install chromedriver-#{version}" do
23
- cwd '/tmp/itamae-plugin-recipe-selenium'
24
- command <<-EOF
25
- unzip chromedriver_linux64-#{version}.zip
26
- sudo mv -f chromedriver /usr/local/bin/
27
- EOF
28
- not_if "/usr/local/bin/chromedriver -v | grep 'ChromeDriver #{version}'"
3
+ setup_selenium_driver "setup chromedriver" do
4
+ type :chrome
5
+ tmp_dir '/tmp/itamae-plugin-recipe-selenium'
6
+ install_dir '/usr/local/bin'
29
7
  end
@@ -1,31 +1,7 @@
1
- require 'net/http'
1
+ include_recipe './tmp_directory'
2
2
 
3
- base_url = "https://github.com/mozilla/geckodriver/releases"
4
- url = base_url + '/latest'
5
- response = nil
6
- 5.times do
7
- response = Net::HTTP.get_response(URI(url))
8
-
9
- break unless response.is_a?(Net::HTTPRedirection)
10
- url = response['location']
11
- end
12
- version = response.uri.to_s[/[^v]*$/]
13
- download_url = base_url + "/download/v#{version}/geckodriver-v#{version}-linux64.tar.gz"
14
-
15
- execute "download geckodriver-#{version}" do
16
- cwd '/tmp/itamae-plugin-recipe-selenium'
17
- command <<-EOF
18
- rm -Rf geckodriver-v#{version}-linux64*
19
- curl -L -o geckodriver-v#{version}-linux64.tar.gz #{download_url}
20
- EOF
21
- not_if "test -e geckodriver-v#{version}-linux64.tar.gz"
22
- end
23
-
24
- execute "install geckodriver-#{version}" do
25
- cwd '/tmp/itamae-plugin-recipe-selenium'
26
- command <<-EOF
27
- tar zxf geckodriver-v#{version}-linux64.tar.gz
28
- sudo mv -f geckodriver /usr/local/bin/
29
- EOF
30
- not_if "/usr/local/bin/geckodriver -V | grep 'geckodriver #{version}'"
3
+ setup_selenium_driver "setup geckodriver" do
4
+ type :gecko
5
+ tmp_dir '/tmp/itamae-plugin-recipe-selenium'
6
+ install_dir '/usr/local/bin'
31
7
  end
@@ -2,7 +2,7 @@ module Itamae
2
2
  module Plugin
3
3
  module Recipe
4
4
  module Selenium
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.2"
6
6
  end
7
7
  end
8
8
  end
@@ -0,0 +1,125 @@
1
+ require 'net/http'
2
+
3
+ module Itamae
4
+ module Plugin
5
+ module Resource
6
+ class SetupSeleniumDriver < Itamae::Resource::Base
7
+ define_attribute :action, default: :run
8
+ define_attribute :type, type: [String, Symbol], default: :chrome
9
+ define_attribute :tmp_dir, type: String, default: '/tmp'
10
+ define_attribute :install_dir, type: String, default: '/usr/local/bin/'
11
+
12
+ def pre_action
13
+ attributes.cwd = attributes.tmp_dir
14
+ attributes.install_dir = File.join(attributes.install_dir, '/')
15
+ end
16
+
17
+ def set_current_attributes
18
+ current.executed = false
19
+ end
20
+
21
+ def action_run(options)
22
+ case attributes.type.to_sym
23
+ when :chrome
24
+ run_setup_chromedriver
25
+ when :gecko
26
+ run_setup_geckodriver
27
+ end
28
+
29
+ updated!
30
+ end
31
+
32
+ private
33
+
34
+ def run_setup_chromedriver
35
+ host = 'chromedriver.storage.googleapis.com'
36
+ base_url = 'https://' + host
37
+ browser_version = run_command('sudo yum list | grep google-chrome-stable').stdout.split[1]
38
+ browser_version = Gem::Version.new(browser_version.to_s).segments[0..2].join('.')
39
+ driver_version_url = base_url + "/LATEST_RELEASE_#{browser_version}"
40
+ driver_version = Net::HTTP.get_response(URI(driver_version_url)).body
41
+ download_url = base_url + "/#{driver_version}/chromedriver_linux64.zip"
42
+ header = Net::HTTP.start(host) { |http| http.head("/#{driver_version}/chromedriver_linux64.zip") }
43
+ etag = header['etag'][1...-1]
44
+
45
+ Itamae.logger.debug "browser version: #{browser_version}"
46
+ Itamae.logger.debug "driver version: #{driver_version}"
47
+ Itamae.logger.debug "download url: #{download_url}"
48
+ Itamae.logger.debug "etag: #{etag}"
49
+
50
+ run_command_if_not(
51
+ 'download chromedriver',
52
+ "echo '#{etag} chromedriver_linux64-#{driver_version}.zip' | md5sum -c -",
53
+ <<-COMMANDS
54
+ rm -Rf chromedriver_linux64-#{driver_version}*
55
+ curl -o chromedriver_linux64-#{driver_version}.zip #{download_url}
56
+ COMMANDS
57
+ )
58
+
59
+ run_command_if_not(
60
+ 'install chromedriver',
61
+ "#{attributes.install_dir}chromedriver -v | grep 'ChromeDriver #{driver_version}'",
62
+ <<-COMMANDS
63
+ unzip chromedriver_linux64-#{driver_version}.zip
64
+ sudo mv -f chromedriver #{attributes.install_dir}
65
+ COMMANDS
66
+ )
67
+ end
68
+
69
+ def run_setup_geckodriver
70
+ base_url = "https://github.com/mozilla/geckodriver/releases"
71
+ url = base_url + '/latest'
72
+ response = nil
73
+ 5.times do
74
+ response = Net::HTTP.get_response(URI(url))
75
+
76
+ break unless response.is_a?(Net::HTTPRedirection)
77
+ url = response['location']
78
+ end
79
+ driver_version = response.uri.to_s[/[^v]*$/]
80
+ download_url = base_url + "/download/v#{driver_version}/geckodriver-v#{driver_version}-linux64.tar.gz"
81
+
82
+ Itamae.logger.debug "driver version: #{driver_version}"
83
+ Itamae.logger.debug "download url: #{download_url}"
84
+
85
+ run_command_if_not(
86
+ 'download geckodriver',
87
+ "test -e geckodriver-v#{driver_version}-linux64.tar.gz",
88
+ <<-COMMANDS
89
+ rm -Rf geckodriver-v#{driver_version}-linux64*
90
+ curl -L -o geckodriver-v#{driver_version}-linux64.tar.gz #{download_url}
91
+ COMMANDS
92
+ )
93
+
94
+ run_command_if_not(
95
+ 'install geckodriver',
96
+ "#{attributes.install_dir}geckodriver -V | grep 'geckodriver #{driver_version}'",
97
+ <<-COMMANDS
98
+ tar zxf geckodriver-v#{driver_version}-linux64.tar.gz
99
+ sudo mv -f geckodriver #{attributes.install_dir}
100
+ COMMANDS
101
+ )
102
+ end
103
+
104
+ def run_command_if_not(name, if_not_command, command)
105
+ if do_not_run_command_because_of_not_if?(if_not_command)
106
+ Itamae.logger.debug "#{resource_type}[#{name}] Execution skipped because already done"
107
+ else
108
+ run_command command
109
+ show_differences_message(name, 'executed', false, true)
110
+ end
111
+ end
112
+
113
+ def do_not_run_command_because_of_not_if?(command)
114
+ run_command(command, error: false).exit_status == 0
115
+ end
116
+
117
+ def show_differences_message(name, key, current_value, value)
118
+ Itamae.logger.color :green do
119
+ Itamae.logger.info "#{resource_type}[#{name}] #{key} will change from '#{current_value}' to '#{value}'"
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae-plugin-recipe-selenium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - y-matsuda
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-30 00:00:00.000000000 Z
11
+ date: 2019-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: itamae
@@ -95,6 +95,7 @@ files:
95
95
  - lib/itamae/plugin/recipe/selenium/templates/etc/yum.repos.d/google-chrome.repo.erb
96
96
  - lib/itamae/plugin/recipe/selenium/tmp_directory.rb
97
97
  - lib/itamae/plugin/recipe/selenium/version.rb
98
+ - lib/itamae/plugin/resource/setup_selenium_driver.rb
98
99
  homepage: https://github.com/maedadev/itamae-plugin-recipe-selenium
99
100
  licenses:
100
101
  - MIT
@@ -114,7 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
115
  - !ruby/object:Gem::Version
115
116
  version: '0'
116
117
  requirements: []
117
- rubygems_version: 3.0.6
118
+ rubyforge_project:
119
+ rubygems_version: 2.5.2.3
118
120
  signing_key:
119
121
  specification_version: 4
120
122
  summary: itamae recipe for god process monitoring framework