Sha256: edf59dbb147e11af0db4bd06c11f08993c19e635ea3bd8535ba498859ba40aeb

Contents?: true

Size: 1.28 KB

Versions: 36

Compression:

Stored size: 1.28 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', 'HEAD').execute!
          end
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 2 rubygems

Version Path
avm-git-0.18.0 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.94.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
avm-git-0.17.0 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.86.5 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
avm-git-0.16.0 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.86.4 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.86.3 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
avm-git-0.15.0 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.86.2 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.84.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.83.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.82.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
avm-git-0.14.0 lib/avm/git/scms/git/run_commit.rb
eac_tools-0.81.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.80.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.79.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.78.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.77.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.77.0 sub/avm-git/lib/avm/git/scms/git/run_commit.rb
eac_tools-0.76.1 sub/avm-git/lib/avm/git/scms/git/run_commit.rb