class Blufin::SiteServices

Constants

ANNOTATION_TEST_NOT_REQUIRED
ANNOTATION_TEST_REQUIRED
API
CRON
LIB
PACKAGE_AUTO_GENERATED
PACKAGE_SYSTEM_ENUMS
REGEX_JAVA
REGEX_SERVICES
REGEX_SERVICES_CAPITALIZED
SDK
SDK_CORE
SDK_INTERNAL
SDK_OAUTH
WORKER

Public Class Methods

build_core_service(service, skip_tests = false) click to toggle source

Build blufin-core-lib. @return void

# 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) click to toggle source

Build a site lib. NOTE: Cannot use 'build_site_services' because the lib is not maven packaged. @return void

# 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) click to toggle source

Build a service. @return void

# 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) click to toggle source

Deploy a service. @return void

# 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_services() click to toggle source

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

# 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) click to toggle source

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

# 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) click to toggle source

Returns service(s) hash for site. @return Hash

# 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) click to toggle source

Validate core service. @return String

# 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) click to toggle source

Validate site service. @return String

# 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

Private Class Methods

get_skip_tests_param(skip_tests) click to toggle source

Returns MVN skipTests string if input is TRUE, blank-string if FALSE. @return String

# File lib/core/site/site_services.rb, line 156
def self.get_skip_tests_param(skip_tests)
    skip_tests ? ' -Dmaven.test.skip=true -Dfindbugs.skip=true' : ''
end