blufin-lib 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/blufin-lib.rb +22 -0
- data/lib/blufin-lib/core/arrays.rb +18 -0
- data/lib/blufin-lib/core/browser.rb +30 -0
- data/lib/blufin-lib/core/datetime_utils.rb +14 -0
- data/lib/blufin-lib/core/encryptor.rb +53 -0
- data/lib/blufin-lib/core/files.rb +385 -0
- data/lib/blufin-lib/core/network.rb +25 -0
- data/lib/blufin-lib/core/numbers.rb +15 -0
- data/lib/blufin-lib/core/routes.rb +85 -0
- data/lib/blufin-lib/core/ssh.rb +145 -0
- data/lib/blufin-lib/core/strings.rb +109 -0
- data/lib/blufin-lib/core/terminal.rb +413 -0
- data/lib/blufin-lib/core/tools.rb +108 -0
- data/lib/blufin-lib/test/TestEnvironmentValidator.rb +98 -0
- data/lib/version.rb +1 -0
- metadata +100 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
module Blufin
|
4
|
+
|
5
|
+
class Tools
|
6
|
+
|
7
|
+
OS_WINDOWS = 'windows'
|
8
|
+
OS_MAC = 'mac'
|
9
|
+
OS_LINUX = 'linux'
|
10
|
+
OS_UNIX = 'unix'
|
11
|
+
OS_OTHER = 'other'
|
12
|
+
|
13
|
+
# Get PATH to assets, scripts, etc.
|
14
|
+
# @return String
|
15
|
+
def self.get_base_path
|
16
|
+
base_path = File.dirname(File.expand_path(__FILE__))
|
17
|
+
base_path = base_path.gsub(/\/\w+\/\w+\z/i, '')
|
18
|
+
base_path
|
19
|
+
end
|
20
|
+
|
21
|
+
# Check that remote host is reachable.
|
22
|
+
# @return void
|
23
|
+
def self.check_remote_is_reachable(host_address)
|
24
|
+
if ping(host_address) != 0
|
25
|
+
Tools::Terminal::error('Cannot reach remote host', ["#{Tools::Terminal::format_highlight(host_address)} cannot be reached.", 'Please make sure the host is online and/or configured correctly.'])
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Ping a URL or IP and returns the exit status. 0 = success, anything else means it failed.
|
30
|
+
# @return Integer
|
31
|
+
def self.ping(host_address, verbose = true)
|
32
|
+
Tools::Terminal::output("Checking if #{Tools::Terminal::format_highlight(host_address)} is reachable...") if verbose == true
|
33
|
+
`ping -t 1 -c 1 #{host_address}`
|
34
|
+
$?.exitstatus
|
35
|
+
end
|
36
|
+
|
37
|
+
# Check that SSHPASS is installed.
|
38
|
+
# @return void
|
39
|
+
def self.check_sshpass_is_installed
|
40
|
+
if @sshpass_installed.nil?
|
41
|
+
sshpass_result = Tools::Terminal::command_capture('sshpass -h', nil, false, false)
|
42
|
+
sshpass_result = sshpass_result[0].split(' ')
|
43
|
+
unless sshpass_result[0].downcase == 'usage:'
|
44
|
+
if this_is_a_mac
|
45
|
+
error_message = "Find how to install it at: #{Tools::Terminal::format_highlight('https://www.google.co.uk/search?q=install+sshpass+on+mac')}"
|
46
|
+
else
|
47
|
+
error_message = "Install it using: #{Tools::Terminal::format_command('sudo apt-get install sshpass')}"
|
48
|
+
end
|
49
|
+
Tools::Terminal::error("#{Tools::Terminal::format_highlight('sshpass')} is not installed", error_message, true)
|
50
|
+
end
|
51
|
+
@sshpass_installed = true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Returns TRUE if Mac, FALSE if Linux (or anything else for that matter)
|
56
|
+
# @return boolean
|
57
|
+
def self.this_is_a_mac
|
58
|
+
return os == OS_MAC
|
59
|
+
end
|
60
|
+
|
61
|
+
# Get the operating system.
|
62
|
+
# @return String
|
63
|
+
def self.os
|
64
|
+
@os ||= (
|
65
|
+
host_os = RbConfig::CONFIG['host_os']
|
66
|
+
case host_os
|
67
|
+
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
|
68
|
+
OS_WINDOWS
|
69
|
+
when /darwin|mac os/
|
70
|
+
OS_MAC
|
71
|
+
when /linux/
|
72
|
+
OS_LINUX
|
73
|
+
when /solaris|bsd/
|
74
|
+
OS_UNIX
|
75
|
+
else
|
76
|
+
OS_OTHER
|
77
|
+
end
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Checks if a String or Integer is a whole number,
|
82
|
+
# @return boolean
|
83
|
+
def self.is_whole_number(value)
|
84
|
+
if value =~ /^\s*\d+\s*$/
|
85
|
+
true
|
86
|
+
elsif value.is_a? Integer
|
87
|
+
true
|
88
|
+
else
|
89
|
+
false
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
# Get the character at a specific index in a string.
|
94
|
+
# @return string
|
95
|
+
def self.get_char_at(char_at, string)
|
96
|
+
if is_whole_number(char_at)
|
97
|
+
char_at = char_at.to_i
|
98
|
+
char_at = (char_at - 1)
|
99
|
+
string[char_at]
|
100
|
+
else
|
101
|
+
raise(RuntimeError, "The value for CharAt must be a whole number. The script received (#{char_at.class}) #{char_at}.")
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Blufin
|
2
|
+
|
3
|
+
module Test
|
4
|
+
|
5
|
+
class EnvironmentValidator
|
6
|
+
|
7
|
+
CHECK_API = 'check-api'
|
8
|
+
CHECK_CRON = 'check-cron'
|
9
|
+
CHECK_WORKER = 'check-worker'
|
10
|
+
CHECK_MYSQL = 'check-mysql'
|
11
|
+
CHECK_RABBIT_MQ = 'check-rabbit-mq'
|
12
|
+
|
13
|
+
def initialize(opts, base_prefix)
|
14
|
+
|
15
|
+
raise RuntimeError, "Opts must be an array, you passed: #{opts.class}" unless opts.is_a?(Hash)
|
16
|
+
|
17
|
+
@base_prefix = base_prefix
|
18
|
+
|
19
|
+
valid_opts = [CHECK_API, CHECK_CRON, CHECK_WORKER, CHECK_MYSQL, CHECK_RABBIT_MQ]
|
20
|
+
|
21
|
+
opts.keys.each { |opt| raise RuntimeError, "#{opt} is not a valid value" unless valid_opts.include?(opt) }
|
22
|
+
|
23
|
+
Blufin::Terminal::info('Checking for necessary components...') if opts.length > 0
|
24
|
+
|
25
|
+
validation_results = []
|
26
|
+
validation_results << check_api(opts[CHECK_API]) if opts.keys.include?(CHECK_API)
|
27
|
+
validation_results << check_cron(opts[CHECK_CRON]) if opts.keys.include?(CHECK_CRON)
|
28
|
+
validation_results << check_worker(opts[CHECK_WORKER]) if opts.keys.include?(CHECK_WORKER)
|
29
|
+
validation_results << check_mysql if opts.keys.include?(CHECK_MYSQL)
|
30
|
+
validation_results << check_rabbit_mq if opts.keys.include?(CHECK_RABBIT_MQ)
|
31
|
+
|
32
|
+
Blufin::Terminal::error('Your environment is not setup correctly. Please check the above output.', nil, true) if validation_results.include?(false)
|
33
|
+
|
34
|
+
puts
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
# Checks that the API is running.
|
41
|
+
# @return void
|
42
|
+
def check_api(uri)
|
43
|
+
check_service_common(uri, 'api')
|
44
|
+
end
|
45
|
+
|
46
|
+
# Checks that the WORKER is running.
|
47
|
+
# @return void
|
48
|
+
def check_cron(uri)
|
49
|
+
check_service_common(uri, 'cron')
|
50
|
+
end
|
51
|
+
|
52
|
+
# Checks that the WORKER is running.
|
53
|
+
# @return void
|
54
|
+
def check_worker(uri)
|
55
|
+
check_service_common(uri, 'worker')
|
56
|
+
end
|
57
|
+
|
58
|
+
# Checks that the MySQL is running.
|
59
|
+
# @return void
|
60
|
+
def check_mysql
|
61
|
+
if system('mysqladmin version >& /dev/null')
|
62
|
+
Blufin::Terminal::output(Blufin::Terminal::format_highlight('mysql'), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Pass', 22)
|
63
|
+
true
|
64
|
+
else
|
65
|
+
Blufin::Terminal::output(Blufin::Terminal::format_invalid('mysql'), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Fail', 196)
|
66
|
+
false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# Checks that the RabbitMQ is running.
|
71
|
+
# @return void
|
72
|
+
def check_rabbit_mq
|
73
|
+
if system('rabbitmqadmin --help >& /dev/null')
|
74
|
+
Blufin::Terminal::output(Blufin::Terminal::format_highlight('rabbit-mq'), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Pass', 22)
|
75
|
+
return true
|
76
|
+
else
|
77
|
+
Blufin::Terminal::output(Blufin::Terminal::format_invalid('rabbit-mq'), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Fail', 196)
|
78
|
+
end
|
79
|
+
false
|
80
|
+
end
|
81
|
+
|
82
|
+
# Common method for checking Java services are running.
|
83
|
+
def check_service_common(uri, service_name)
|
84
|
+
service_name = "#{@base_prefix}-#{service_name}"
|
85
|
+
if system("curl -I #{uri} -k >& /dev/null")
|
86
|
+
Blufin::Terminal::output(Blufin::Terminal::format_highlight(service_name), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Pass', 22)
|
87
|
+
return true
|
88
|
+
else
|
89
|
+
Blufin::Terminal::output(Blufin::Terminal::format_invalid(service_name), Blufin::Terminal::MSG_CUSTOM_AUTO_PAD, 'Fail', 196)
|
90
|
+
end
|
91
|
+
false
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
data/lib/version.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
BLUFIN_LIB_VERSION = '1.4.0'
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: blufin-lib
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Albert Rannetsperger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: openssl
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: tty-spinner
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.0
|
55
|
+
description: Common functionality shared between ruby gems.
|
56
|
+
email: alb3rtuk@hotmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/blufin-lib.rb
|
62
|
+
- lib/blufin-lib/core/arrays.rb
|
63
|
+
- lib/blufin-lib/core/browser.rb
|
64
|
+
- lib/blufin-lib/core/datetime_utils.rb
|
65
|
+
- lib/blufin-lib/core/encryptor.rb
|
66
|
+
- lib/blufin-lib/core/files.rb
|
67
|
+
- lib/blufin-lib/core/network.rb
|
68
|
+
- lib/blufin-lib/core/numbers.rb
|
69
|
+
- lib/blufin-lib/core/routes.rb
|
70
|
+
- lib/blufin-lib/core/ssh.rb
|
71
|
+
- lib/blufin-lib/core/strings.rb
|
72
|
+
- lib/blufin-lib/core/terminal.rb
|
73
|
+
- lib/blufin-lib/core/tools.rb
|
74
|
+
- lib/blufin-lib/test/TestEnvironmentValidator.rb
|
75
|
+
- lib/version.rb
|
76
|
+
homepage: https://github.com/alb3rtuk
|
77
|
+
licenses:
|
78
|
+
- MIT
|
79
|
+
metadata: {}
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project:
|
96
|
+
rubygems_version: 2.6.12
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: Blufin Lib
|
100
|
+
test_files: []
|