1
0
Fork 0
diversipub/lib/diversipub/main.rb

85 lines
1.6 KiB
Ruby
Raw Normal View History

2023-05-02 10:38:09 +00:00
# frozen_string_literal: true
module Diversipub
##
# The whole application runner.
#
class Main
2023-05-10 10:20:56 +00:00
attr_reader :gem_root, :pwd, :program_name, :argv, :env,
:stdin, :stdout, :stderr
2023-05-02 10:38:09 +00:00
2023-05-10 10:20:56 +00:00
def initialize(gem_root:,
pwd:,
2023-05-03 12:29:58 +00:00
program_name:,
argv:,
env:,
stdin:,
stdout:,
stderr:)
2023-05-10 10:20:56 +00:00
self.gem_root = gem_root
2023-05-03 12:29:58 +00:00
self.pwd = pwd
2023-05-02 10:38:09 +00:00
self.program_name = program_name
self.argv = argv
self.env = env
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
@running = true
end
def run
2023-05-10 10:20:56 +00:00
p gem_root
2023-05-03 12:29:58 +00:00
p pwd
2023-05-02 10:38:09 +00:00
p program_name
p argv
p env
p stdin
p stdout
p stderr
2023-05-02 14:13:20 +00:00
2023-05-03 12:51:31 +00:00
puma_task.join_thread
2023-05-02 10:38:09 +00:00
true
end
2023-05-03 11:59:08 +00:00
def stop_gracefully
2023-05-03 12:51:31 +00:00
puma_task.stop_gracefully
2023-05-02 14:13:20 +00:00
nil
2023-05-02 10:38:09 +00:00
end
2023-05-03 12:51:31 +00:00
def stop_urgently
puma_task.stop_urgently
nil
end
2023-05-03 11:59:08 +00:00
2023-05-02 10:38:09 +00:00
private
attr_writer :stdin, :stdout, :stderr
2023-05-10 10:20:56 +00:00
def gem_root=(gem_root)
@gem_root = Pathname.new(gem_root).freeze
end
2023-05-03 12:29:58 +00:00
def pwd=(pwd)
@pwd = Pathname.new(pwd).freeze
end
2023-05-02 10:38:09 +00:00
def program_name=(program_name)
@program_name = String(program_name).freeze
end
def argv=(argv)
@argv = [*argv].map { |arg| String(arg).freeze }.freeze
end
def env=(env)
@env = [*env].to_h do |key, value|
[String(key).freeze, String(value).freeze]
end.freeze
end
2023-05-02 14:13:20 +00:00
2023-05-03 12:51:31 +00:00
def puma_task
@puma_task ||= PumaTask.new self
2023-05-02 14:28:02 +00:00
end
2023-05-02 10:38:09 +00:00
end
end