Sha256: bbb492ac9aa084407b52ee3c0f81b401c24e743f658b2734b9ac2ea5ba635116

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'eac_cli/core_ext'
require 'eac_ruby_utils/console/docopt_runner'
require 'avm/git/file_auto_fixup'
require 'avm/git/auto_commit/rules'

module Avm
  module Tools
    class Runner
      class Git
        class AutoFixup
          runner_with :help do
            desc 'Auto fixup files.'
            arg_opt '-r', '--rule', 'Apply a rule in the specified order.', repeat: true
            pos_arg :files, repeat: true, optional: true
          end

          def run
            files.each do |file|
              ::Avm::Git::FileAutoFixup.new(runner_context.call(:git), file, rules).run
            end
          end

          private

          def files
            files_from_option || dirty_files
          end

          def files_from_option
            r = parsed.files
            r.any? ? r.map { |p| p.to_pathname.expand_path } : nil
          end

          def dirty_files
            runner_context.call(:git).dirty_files.map(&:path)
          end

          def rules
            parsed.rule.map do |rule_string|
              ::Avm::Git::AutoCommit::Rules.parse(rule_string)
            end
          end

          def select
            parsed.last? ? 1 : parsed.select
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
avm-tools-0.93.0 lib/avm/tools/runner/git/auto_fixup.rb
avm-tools-0.92.0 lib/avm/tools/runner/git/auto_fixup.rb