21
1
Fork 0
mirror of https://github.com/Evolix/chexpire.git synced 2024-05-17 07:58:39 +02:00
chexpire/app/services/system_command.rb
2018-05-30 17:01:32 +02:00

38 lines
580 B
Ruby

require "null_logger"
class SystemCommand
attr_reader :program
attr_reader :args
attr_reader :logger
def initialize(program, args, logger: NullLogger.new)
@program = program
@args = Array.wrap(args)
@logger = logger
end
def execute
logger.log :before_command, syscmd
raw = `syscmd`
logger.log :after_command, raw
raw
end
def syscmd
escaped_args = args.map { |arg|
'"' + escape_arg(arg) + '"'
}
[program, escaped_args].join(" ")
end
private
def escape_arg(arg)
arg.to_s.gsub('"') { '\"' }
end
end