Add class Diversipub::App
This commit is contained in:
parent
5c64924b67
commit
279ada4197
3 changed files with 77 additions and 1 deletions
|
@ -1,4 +1,25 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require 'diversipub'
|
gem_name = 'diversipub'
|
||||||
|
|
||||||
|
begin
|
||||||
|
require gem_name
|
||||||
|
rescue LoadError
|
||||||
|
lib = File.expand_path('../lib', __dir__).freeze
|
||||||
|
file = File.join lib, "#{gem_name}.rb"
|
||||||
|
$LOAD_PATH.unshift lib if File.file?(file) && !$LOAD_PATH.include?(lib)
|
||||||
|
require gem_name
|
||||||
|
end
|
||||||
|
|
||||||
|
main = Diversipub::Main.new(
|
||||||
|
program_name: $PROGRAM_NAME,
|
||||||
|
argv: ARGV,
|
||||||
|
env: ENV,
|
||||||
|
stdin: $stdin,
|
||||||
|
stdout: $stdout,
|
||||||
|
stderr: $stderr,
|
||||||
|
)
|
||||||
|
|
||||||
|
trap('INT') { main.finish } if Signal.list['INT']
|
||||||
|
exit main.run
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require_relative 'diversipub/main'
|
||||||
require_relative 'diversipub/version'
|
require_relative 'diversipub/version'
|
||||||
|
|
54
lib/diversipub/main.rb
Normal file
54
lib/diversipub/main.rb
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# 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
|
Loading…
Add table
Reference in a new issue