class SleepingKingStudios::Tasks::ProcessRunner
Base class for helpers that execute a system process.
Attributes
default_env[R]
@return [Hash] Environment variables to set for the RSpec process.
default_options[R]
@return [Array] Options to pass to RSpec.
Public Class Methods
new(env: {})
click to toggle source
@param env [Hash] Environment variables to set for the RSpec process. @param options [Array] Options to pass to RSpec.
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 10 def initialize env: {}, options: [] @default_env = env.dup @default_options = options return unless ENV['BUNDLE_GEMFILE'] @default_env[:bundle_gemfile] ||= ENV['BUNDLE_GEMFILE'] end
Private Instance Methods
base_command()
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 27 def base_command ':' end
build_command(**kwargs)
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 31 def build_command **kwargs env = build_environment(**kwargs) opts = build_options(**kwargs) "#{env} #{base_command} #{opts}".strip end
build_environment(env:, **_kwargs)
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 38 def build_environment env:, **_kwargs default_env. merge(env). map do |key, value| key = tools.str.underscore(key).upcase value = %("#{value}") if value.is_a?(String) "#{key}=#{value}" end. # map join ' ' end
build_options(files: [], options: [], **_kwargs)
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 50 def build_options files: [], options: [], **_kwargs (Array(files) + default_options + options).join ' ' end
stream_process(command)
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 54 def stream_process command unbundled_env do IO.popen(command) do |io| loop do char = io.getc char ? print(char) : break end # loop end # popen end # with_unbundled_env end
tools()
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 66 def tools SleepingKingStudios::Tools::Toolbelt.new end
unbundled_env() { || ... }
click to toggle source
# File lib/sleeping_king_studios/tasks/process_runner.rb, line 70 def unbundled_env # :nocov: if Bundler.respond_to?(:with_unbundled_env) Bundler.with_unbundled_env { yield } else Bundler.with_clean_env { yield } end # :nocov: end