Sha256: e2318c3a6c63b952ebe33a105d359841c0515334268ca686c3a2f2080f58020a
Contents?: true
Size: 1.32 KB
Versions: 5
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true require 'lino' module RubyLeiningen module Commands class Base attr_reader :binary def initialize(opts = {}) @binary = opts[:binary] || RubyLeiningen.configuration.binary end def stdin nil end def stdout $stdout end def stderr $stderr end def execute(parameters = {}) parameters = resolve_parameters(parameters) do_before(parameters) result = build_and_execute_command(parameters) do_after(parameters) result end private def build_and_execute_command(parameters) command = configure_command(instantiate_builder, parameters).build command.execute(stdin:, stdout:, stderr:) end def instantiate_builder Lino::CommandLineBuilder .for_command(binary) end def do_before(_); end def configure_command(builder, _parameters) builder end def do_after(_); end def resolve_parameters(parameters) parameter_defaults(parameters) .merge(parameters) .merge(parameter_overrides(parameters)) end def parameter_defaults(_parameters) {} end def parameter_overrides(_parameters) {} end end end end
Version data entries
5 entries across 5 versions & 1 rubygems