Sha256: 3ca5e4e7447e2275ad6f238cfc36ed6b3643f072df7801c56375caaf086161ac

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

module Middleman
  module Deploy
    module Strategies
      module Git
        class Base
          attr_accessor :branch, :build_dir, :remote, :commit_message

          def initialize(build_dir, remote, branch, commit_message)
            self.branch         = branch
            self.build_dir      = build_dir
            self.remote         = remote
            self.commit_message = commit_message
          end

          def process
            raise NotImplementedError
          end

        protected

          def add_signature_to_commit_message(base_message)
            signature = "#{Middleman::Deploy::PACKAGE} #{Middleman::Deploy::VERSION}"
            time      = "#{Time.now.utc}"

            "#{base_message} at #{time} by #{signature}"
          end

          def checkout_branch
            # if there is a branch with that name, switch to it, otherwise create a new one and switch to it
            if `git branch`.split("\n").any? { |b| b =~ /#{self.branch}/i }
              `git checkout #{self.branch}`
            else
              `git checkout -b #{self.branch}`
            end
          end

          def commit_branch(options='')
            message = self.commit_message ? self.commit_message : add_signature_to_commit_message('Automated commit')

            `git add -A`
            `git commit --allow-empty -am "#{message}"`
            `git push #{options} origin #{self.branch}`
          end

        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
middleman-deploy-0.2.4 lib/middleman-deploy/strategies/git/base.rb