itamae-plugin-recipe-selenium 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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