55 lines
1.0 KiB
Ruby
55 lines
1.0 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Diversipub
|
||
|
##
|
||
|
# The whole application runner.
|
||
|
#
|
||
|
class Main
|
||
|
attr_reader :program_name, :argv, :env, :stdin, :stdout, :stderr
|
||
|
|
||
|
def initialize(program_name:, argv:, env:, stdin:, stdout:, stderr:)
|
||
|
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
|
||
|
p program_name
|
||
|
p argv
|
||
|
p env
|
||
|
p stdin
|
||
|
p stdout
|
||
|
p stderr
|
||
|
sleep 1 while @running
|
||
|
true
|
||
|
end
|
||
|
|
||
|
def finish
|
||
|
puts 'finishing'
|
||
|
@running = false
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
attr_writer :stdin, :stdout, :stderr
|
||
|
|
||
|
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
|
||
|
end
|
||
|
end
|