Sha256: fe14ab4345281aac7e83139612a55ac19e1cb3be23e5565f1c88dcc30715721c

Contents?: true

Size: 1.25 KB

Versions: 11

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

require 'rake_factory'
require 'git'

module RakeGit
  module Tasks
    class Commit < RakeFactory::Task
      default_name :commit
      default_description 'Commit changes to git.'

      parameter :message, required: true

      parameter :stage_tracked_files, default: true
      parameter :stage_untracked_files, default: true

      parameter :working_directory, default: '.'

      action do
        puts('Committing changes to git...')
        base = Git.open(working_directory)

        maybe_stage_tracked_files(base)
        maybe_stage_untracked_files(base)

        commit(base)
      end

      private

      def maybe_stage_tracked_files(base)
        return unless stage_tracked_files

        base.add(tracked_files(base), all: true)
      end

      def maybe_stage_untracked_files(base)
        return unless stage_untracked_files

        base.add(untracked_files(base), all: true)
      end

      def commit(base)
        base.commit(message)
      end

      def tracked_files(base)
        status = base.status

        [
          *status.added.keys,
          *status.changed.keys,
          *status.deleted.keys
        ]
      end

      def untracked_files(base)
        base.lib.untracked_files
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rake_git-0.3.0.pre.2 lib/rake_git/tasks/commit.rb
rake_git-0.3.0.pre.1 lib/rake_git/tasks/commit.rb
rake_git-0.2.0 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.12 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.11 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.10 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.9 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.8 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.7 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.6 lib/rake_git/tasks/commit.rb
rake_git-0.1.0.pre.5 lib/rake_git/tasks/commit.rb