Sha256: bedc41076864695ab57278c8e50b5cdbe02bc391b5c4a934b23ef6fab76465f4

Contents?: true

Size: 1.8 KB

Versions: 111

Compression:

Stored size: 1.8 KB

Contents

# frozen_string_literal: true

require 'eac_cli/core_ext'
require 'avm/files/formatter'
require 'avm/git/file_auto_fixup'
require 'avm/git/auto_commit/rules'

module Avm
  module Tools
    class Runner
      class Git
        class AutoCommit
          runner_with :help do
            desc 'Auto fixup files.'
            bool_opt '-d', '--dirty', 'Select dirty files.'
            bool_opt '-f', '--format', 'Format files before commit.'
            arg_opt '-r', '--rule', 'Apply a rule in the specified order.', repeat: true
            pos_arg :files, repeat: true, optional: true
          end

          def run
            runner_context.call(:git).command('reset', 'HEAD').system!
            format_files
            files.each do |file|
              ::Avm::Git::FileAutoFixup.new(runner_context.call(:git), file, rules).run
            end
          end

          private

          def files_uncached
            (files_from_option + dirty_files).sort.uniq
          end

          def files_from_option
            parsed.files.map { |p| p.to_pathname.expand_path }
          end

          def format_files
            return unless parsed.format?

            infom 'Formating files...'
            ::Avm::Files::Formatter.new(files, ::Avm::Files::Formatter::OPTION_APPLY => true).run
          end

          def dirty_files
            return [] unless parsed.dirty?

            runner_context.call(:git).dirty_files.map do |file|
              file.path.to_pathname.expand_path(runner_context.call(:git).root_path)
            end
          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

111 entries across 111 versions & 2 rubygems

Version Path
avm-tools-0.142.2 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.37.2 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.142.1 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.37.1 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.142.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.37.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.141.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.36.1 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.140.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.36.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.139.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.35.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.138.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.34.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.137.0 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.33.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.32.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
avm-tools-0.136.2 lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.31.1 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb
eac_tools-0.31.0 sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb