lib/takeltau/ship/project/start.rb in takeltau-0.44.8 vs lib/takeltau/ship/project/start.rb in takeltau-0.44.11
- old
+ new
@@ -1,78 +1,98 @@
# frozen_string_literal: true
# tau ship project start
module ShipProjectStart
# Start a takelship
+ # rubocop:disable Metrics/MethodLength
def ship_project_start(project)
- return false unless _ship_project_start_prerequisites_fulfilled?
+ return false unless _ship_project_start_matrjoschka?
takelship = _ship_info_lib_get_takelshipinfo
project = _ship_info_lib_get_project project, takelship
return false unless _ship_project_start_valid_project? takelship, project
ports = _ship_ports_lib_get_ports(takelship, project)
+ return false unless _ship_project_start_sailing? project, ports
+
log.debug 'Writing port configuration to takelage.yml'
_ship_ports_lib_write_ports(ports, project)
log.debug "Starting takelship project \"#{project}\""
_ship_container_lib_docker_privileged ports, project
-
- _ship_project_start_print_ports project, ports
+ say "Started project \"#{project}\" on takelship \"#{_ship_container_lib_ship_hostname}\".\n\n"
+ _ship_project_start_print_ports ports
end
+ # rubocop:enable Metrics/MethodLength
private
- # check prerequisistes
- def _ship_project_start_prerequisites_fulfilled?
- if _docker_container_lib_check_matrjoschka
- say 'Cannot start a takelship from within a takelage container!'
- return false
- end
+ # check if we are inside a takelage container
+ def _ship_project_start_matrjoschka?
+ return true unless _docker_container_lib_check_matrjoschka
- if ship_container_check_existing
- say "Container \"#{_ship_container_lib_ship_hostname}\" is already started!"
- return false
- end
+ say 'Cannot start a takelship from within a takelage container!'
+ false
+ end
- true
+ # check if the takelship is already existng
+ def _ship_project_start_sailing?(project, ports)
+ return true unless ship_container_check_existing
+
+ say "The takelship \"#{_ship_container_lib_ship_hostname}\" is sailing with project \"#{project}\".\n\n"
+ say _ship_project_start_print_ports ports
+ false
end
# check if the project is a valid takelship project
def _ship_project_start_valid_project?(takelship, project)
return true if _ship_info_lib_valid_project? takelship, project
say 'No valid project found!'
+ say 'Hint: ship project list'
false
end
# print ports after starting a takelship
- def _ship_project_start_print_ports(project, ports)
+ # rubocop:disable Metrics/MethodLength
+ # rubocop:disable Metrics/AbcSize
+ def _ship_project_start_print_ports(ports)
output = []
- output << "Started takelship project \"#{project}\"\n"
max_length = _ship_project_start_get_maxlength ports
-
ports.each_value do |port|
next unless port['localhost'].to_i.between? 1, 65_535
- left = "localhost:#{port['localhost']}"
- right = "(#{port['service']} #{port['protocol']})"
- output << "#{left.ljust(max_length)} #{right}"
+ url = "localhost:#{port['localhost']}"
+ service = "[#{port['service']} #{port['protocol']}]"
+ description = port['description']
+ description = " (#{description})" if port.key? 'description'
+ output << "#{url.ljust(max_length['url'])} #{service.ljust(max_length['service'])}#{description}"
end
output.join("\n")
end
+ # rubocop:enable Metrics/AbcSize
+ # rubocop:enable Metrics/MethodLength
# get max length of left column
+ # rubocop:disable Metrics/MethodLength
+ # rubocop:disable Metrics/AbcSize
def _ship_project_start_get_maxlength(ports)
- max_length = 0
+ max_length = {}
+ max_length['url'] = 0
+ max_length['service'] = 0
ports.each_value do |port|
localport = port['localhost']
next unless localport.to_i.between? 1, 65_535
- left_string = "localhost:#{localport}"
- max_length = left_string.length if max_length < left_string.length
+ url = "localhost:#{localport}"
+ max_length['url'] = url.length if max_length['url'] < url.length
+
+ service = "[#{port['service']} #{port['protocol']}]"
+ max_length['service'] = service.length if max_length['service'] < service.length
end
max_length
end
+ # rubocop:enable Metrics/AbcSize
+ # rubocop:enable Metrics/MethodLength
end