parent
5c6198a023
commit
6ee52f5baa
@ -1,63 +1,19 @@
|
||||
require "file_utils"
|
||||
require "option_parser"
|
||||
|
||||
require "./config.cr"
|
||||
require "./service/environment.cr"
|
||||
require "./service/service_definition.cr"
|
||||
require "./service/service.cr"
|
||||
|
||||
START_PORT = 49152
|
||||
PORTS_CACHE_DIRECTORY = "#{CACHE_DIRECTORY}/ports/"
|
||||
Environment.load ENVIRONMENTS_DIRECTORY
|
||||
ServiceDefinition.load SERVICES_DIRECTORY
|
||||
Service.load RC_DIRECTORY
|
||||
|
||||
service = ""
|
||||
wanted_default_port : String? = nil
|
||||
|
||||
parser = OptionParser.parse do |parser|
|
||||
parser.banner = "usage: get-post <id> [default-port] [options]\n" +
|
||||
"options:\n"
|
||||
|
||||
parser.on "-h", "--help", "Prints this help message." do
|
||||
puts parser
|
||||
exit 0
|
||||
end
|
||||
|
||||
parser.unknown_args do |arg|
|
||||
if arg.size < 1 || arg.size > 2
|
||||
puts parser
|
||||
exit 1
|
||||
end
|
||||
|
||||
service = arg[0]
|
||||
wanted_default_port = arg[1]?
|
||||
end
|
||||
if ARGV.size != 2
|
||||
STDERR.puts "usage: get-port <service-id> <port-id>"
|
||||
exit 1
|
||||
end
|
||||
|
||||
service_port_file = "#{PORTS_CACHE_DIRECTORY}/#{service.gsub /\//, ":"}"
|
||||
|
||||
begin
|
||||
if File.exists? service_port_file
|
||||
puts File.read service_port_file
|
||||
exit 0
|
||||
end
|
||||
service_id, port_id = ARGV
|
||||
|
||||
FileUtils.mkdir_p PORTS_CACHE_DIRECTORY
|
||||
|
||||
used_ports = Dir.children(PORTS_CACHE_DIRECTORY)
|
||||
.map { |x| "#{PORTS_CACHE_DIRECTORY}/#{x}" }
|
||||
.map { |x| File.read(x).to_i }
|
||||
.sort
|
||||
|
||||
port = START_PORT
|
||||
if wanted_default_port && ! used_ports.any? &.==(wanted_default_port)
|
||||
port = wanted_default_port
|
||||
else
|
||||
while used_ports.any? &.==(port)
|
||||
port = port + 1
|
||||
end
|
||||
end
|
||||
|
||||
File.write service_port_file, port
|
||||
|
||||
puts port
|
||||
rescue e
|
||||
STDERR.puts "error: #{e.message}"
|
||||
exit 1
|
||||
end
|
||||
puts Service.get_by_id(service_id).not_nil!.ports[port_id]
|
||||
|
||||
|
Loading…
Reference in new issue