Class: Blufin::SiteServices

Inherits:
Object
  • Object
show all
Defined in:
lib/core/site/site_services.rb

Constant Summary collapse

API =
'api'
CRON =
'cron'
LIB =
'lib'
SDK =
'sdk'
SDK_CORE =
'sdk-core'
SDK_INTERNAL =
'sdk-internal'
SDK_OAUTH =
'sdk-oauth'
WORKER =
'worker'
PACKAGE_SYSTEM_ENUMS =
'org.blufin.base.enums'
PACKAGE_AUTO_GENERATED =
'system'
ANNOTATION_TEST_REQUIRED =
'@TestRequired'
ANNOTATION_TEST_NOT_REQUIRED =
'@TestNotRequired'
'@TestNotRelatedToClass'
REGEX_SERVICES =
"#{Blufin::SiteServices::API}|#{Blufin::SiteServices::CRON}|#{Blufin::SiteServices::WORKER}"
REGEX_SERVICES_CAPITALIZED =
"#{Blufin::SiteServices::API.capitalize}|#{Blufin::SiteServices::CRON.capitalize}|#{Blufin::SiteServices::WORKER.capitalize}"
REGEX_JAVA =
"#{REGEX_SERVICES}|#{Blufin::SiteServices::LIB}|#{Blufin::SiteServices::SDK}-core|#{Blufin::SiteServices::SDK}-internal|#{Blufin::SiteServices::SDK}-core"
@@services_core =
nil

Class Method Summary collapse

Class Method Details

.build_core_service(service, skip_tests = false) ⇒ Object

Build blufin-core-lib.

Returns:

  • void



29
30
31
32
33
# File 'lib/core/site/site_services.rb', line 29

def self.build_core_service(service, skip_tests = false)
    validate_core_service(service)
    result = Blufin::Terminal.command("mvn clean install#{get_skip_tests_param(skip_tests)}", "#{Blufin::SiteResolver::path_to_blufin_java}/blufin-#{service}")
    Blufin::Terminal::error("#{Blufin::Terminal::format_highlight("blufin-#{service}")} failed to compile.") unless result[0]
end

.build_site_lib(site, skip_tests = false) ⇒ Object

Build a site lib. NOTE: Cannot use ‘build_site_services’ because the lib is not maven packaged.

Returns:

  • void



47
48
49
50
51
# File 'lib/core/site/site_services.rb', line 47

def self.build_site_lib(site, skip_tests = false)
    Blufin::SiteResolver::validate_site(site)
    result = Blufin::Terminal.command("mvn clean install#{get_skip_tests_param(skip_tests)}", "#{Blufin::SiteResolver::path_to_java_lib(site)}")
    Blufin::Terminal::error("#{Blufin::Terminal::format_highlight("#{Blufin::SiteResolver::get_site_name(site)}-lib")} failed to compile.") unless result[0]
end

.build_site_service(site, service, skip_tests = false) ⇒ Object

Build a service.

Returns:

  • void



37
38
39
40
41
42
# File 'lib/core/site/site_services.rb', line 37

def self.build_site_service(site, service, skip_tests = false)
    Blufin::SiteResolver::validate_site(site)
    service = validate_site_service(site, service)
    result  = Blufin::Terminal.command("mvn clean package#{get_skip_tests_param(skip_tests)}", get_available_site_services(site)[service][0])
    Blufin::Terminal::error("#{Blufin::Terminal::format_highlight("#{Blufin::SiteResolver::get_site_name(site)}-#{service}")} failed to compile.") unless result[0]
end

.deploy(site, service) ⇒ Object

Deploy a service.

Returns:

  • void

Raises:

  • (RuntimeError)


55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/core/site/site_services.rb', line 55

def self.deploy(site, service)

    Blufin::SiteResolver::validate_site(site)
    service = validate_site_service(site, service, true)

    # TODO - Re-program this when we need it.
    raise RuntimeError, 'Needs to be re-written to generate YML file from DB values.' if true

    yml_file = nil

    # If YML file not found, stop script.
    Blufin::Terminal::error('File not found', yml_file, true) unless Blufin::Files::file_exists(yml_file)

    # TODO - CURRENTLY LOOKS FOR TO 1.0.0-SNAPSHOT. THIS MUST BE DYNAMIC.
    # TODO - CURRENTLY HAWAII TIMEZONE IS HARD-CODED. SHOULD DYNAMICALLY GRAB TIMEZONE FROM YML FILE.
    Blufin::Terminal.command("java -Duser.timezone=\"US/Hawaii\" -Xms128M -Xmx256M -XX:+UseParallelGC -jar #{get_available_site_services(site)[service][0]}/target/#{Blufin::SiteResolver::get_site_name(site)}-#{service}-1.0.0-SNAPSHOT.jar server #{yml_file}", get_available_site_services(site)[service][0])

end

.get_available_core_servicesObject

Returns Array of services (without the “blufin-” prefix).

Returns:

  • Array



100
101
102
103
104
105
106
107
108
109
110
# File 'lib/core/site/site_services.rb', line 100

def self.get_available_core_services
    if @@services_core.nil?
        @@services_core = []
        Blufin::Files::get_dirs_in_dir(Blufin::Config::get_path('Paths', 'BlufinJava')).each do |dir|
            service = dir.split('/')
            service = service[service.length - 1].gsub('blufin-', '')
            @@services_core << service unless service.downcase == 'target'
        end
    end
    @@services_core
end

.get_available_services_output(services = [], color_selected = false) ⇒ Object

Creates clean terminal output of available services in 2 columns with colors.

Returns:

  • Array



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/core/site/site_services.rb', line 114

def self.get_available_services_output(services = [], color_selected = false)
    output      = []
    half_first  = []
    half_second = []
    half        = (get_available_core_services.length / 2).to_i
    (0..half).each { |n| half_first << get_available_core_services[n] }
    ((half + 1)..(get_available_core_services.length - 1)).each { |n| half_second << get_available_core_services[n] }
    hfm = half_first.max_by(&:length).length + 4
    hsm = half_second.max_by(&:length).length+4
    (0..[half_first.length, half_second.length].max).each do |n|
        if color_selected
            left  = half_first[n].nil? ? '' : half_first[n].ljust(hfm, ' ')
            right = half_second[n].nil? ? '' : half_second[n].ljust(hsm, ' ')
            left  = services.include?(half_first[n]) ? "\x1B[38;5;154m#{left}\x1B[38;5;240m" : "\x1B[38;5;240m#{left}"
            right = services.include?(half_second[n]) ? "\x1B[38;5;154m#{right}\x1B[38;5;240m" : "\x1B[38;5;240m#{right}"
        else
            left  = half_first[n].nil? ? '' : "\x1B[38;5;154m#{half_first[n].ljust(hfm, ' ')}\x1B[0m"
            right = half_second[n].nil? ? '' : "\x1B[38;5;154m#{ half_second[n].ljust(hsm, ' ')}\x1B[0m"
        end
        output << "#{left}#{right}"
    end
    output
end

.get_available_site_services(site) ⇒ Object

Returns service(s) hash for site.

Returns:

  • Hash



140
141
142
143
144
145
146
147
148
149
150
# File 'lib/core/site/site_services.rb', line 140

def self.get_available_site_services(site)
    Blufin::SiteResolver::validate_site(site)
    valid_sites = {
        API    => %W(#{Blufin::SiteResolver::path_to_java_api(site)} #{Blufin::SiteResolver::path_to_blufin_java}#{Blufin::Site::PATH_TO_BLUFIN_API}),
        CRON   => %W(#{Blufin::SiteResolver::path_to_java_cron(site)} #{Blufin::SiteResolver::path_to_blufin_java}#{Blufin::Site::PATH_TO_BLUFIN_CRON}),
        LIB    => %W(#{Blufin::SiteResolver::path_to_java_lib(site)} #{Blufin::SiteResolver::path_to_blufin_java}#{Blufin::Site::PATH_TO_BLUFIN_CORE_LIB}),
        SDK    => %W(#{Blufin::SiteResolver::path_to_java_sdk(site)} #{Blufin::SiteResolver::path_to_blufin_java}#{Blufin::Site::PATH_TO_BLUFIN_SDK}),
        WORKER => %W(#{Blufin::SiteResolver::path_to_java_worker(site)} #{Blufin::SiteResolver::path_to_blufin_java}#{Blufin::Site::PATH_TO_BLUFIN_WORKER})
    }
    valid_sites
end

.validate_core_service(service) ⇒ Object

Validate core service.

Returns:

  • String



76
77
78
79
# File 'lib/core/site/site_services.rb', line 76

def self.validate_core_service(service)
    Blufin::Terminal::error("Non-existent service: #{Blufin::Terminal::format_invalid(service)} \xe2\x80\x94 available services are:", Blufin::SiteServices::get_available_services_output, true) unless get_available_core_services.include?(service)
    service
end

.validate_site_service(site, service, for_deploy = false) ⇒ Object

Validate site service.

Returns:

  • String



83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/core/site/site_services.rb', line 83

def self.validate_site_service(site, service, for_deploy = false)
    Blufin::SiteResolver::validate_site(site)
    @error_message = ['Valid services are:', nil]
    get_available_site_services(site).keys.each do |service_inner|
        next if for_deploy && service_inner == LIB
        @error_message << "  \x1B[38;5;154m#{service_inner}\x1B[0m"
    end
    if for_deploy == true && service == LIB
        Blufin::Terminal::error("You cannot deploy: #{Blufin::Terminal::format_highlight('lib')}", @error_message, true)
    elsif !get_available_site_services(site).keys.include?(service)
        Blufin::Terminal::error("You must specify a valid #{Blufin::Terminal::format_highlight('service')}.", @error_message, true)
    end
    service
end