Sha256: 98f8b837ceb27a3cb7a1e64071ee2f26145e753ad76b62ad9099b65a1c132d4f

Contents?: true

Size: 1.29 KB

Versions: 37

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require 'avm/scms/commit'
require 'eac_ruby_utils/core_ext'

module Avm
  module Git
    module Scms
      class Git < ::Avm::Scms::Base
        class RunCommit
          enable_method_class

          common_constructor :scm, :commit_info

          # @return [Avm::Git::Scms::Git::Commit]
          def result
            reset
            add_paths
            commit

            scm.head_commit
          end

          protected

          def add_path(path)
            scm.git_repo.command(
              *(path.exist? ? ['add'] : ['rm', '-f']),
              path.relative_path_from(scm.path)
            ).execute!
          end

          def add_paths
            commit_info.paths.each { |path| add_path(path) }
          end

          def commit
            scm.git_repo.command('commit', *commit_args).execute!
          end

          # @return [Array<String>]
          def commit_args
            r = commit_info.fixup.if_present([]) { |v| ['--fixup', v.id] }
            r += commit_info.message.if_present([]) { |v| ['--message', v] }
            return r if r.any?

            raise 'Argument list is empty'
          end

          def reset
            scm.git_repo.command('reset', '--soft', 'HEAD').execute!
          end
        end
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 2 rubygems

Version Path
eac_tools-0.67.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.66.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.65.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.65.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.64.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.63.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.62.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.62.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
avm-git-0.13.2 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.61.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.61.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.60.3 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.60.2 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.60.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.60.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.59.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.58.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.57.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.56.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.56.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb