Sha256: ec90a4c37f8530bd63f6f8e978aada5f8cfdb21ce362a70f0a091da5bd03a151

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

module Middleman
  module Deploy
    module Strategies
      module Git
        class ForcePush < Base
          def process
            Dir.chdir(self.build_dir) do
              add_remote_url
              checkout_branch
              commit_branch('-f')
            end
          end

          private

          def add_remote_url
            url = get_remote_url

            unless File.exist?('.git')
              `git init`
              `git remote add origin #{url}`
              `git config user.name "#{self.user_name}"`
              `git config user.name "#{self.user_email}"`
            else
              # check if the remote repo has changed
              unless url == `git config --get remote.origin.url`.chop
                `git remote rm origin`
                `git remote add origin #{url}`
              end
              # check if the user name has changed
              `git config user.name "#{self.user_name}"` unless self.user_name == `git config --get user.name`
              # check if the user email has changed
              `git config user.email "#{self.user_email}"` unless self.user_email == `git config --get user.email`
            end
          end

          def get_remote_url
            remote  = self.remote
            url     = remote

            # check if remote is not a git url
            unless remote =~ /\.git$/
              url = `git config --get remote.#{url}.url`.chop
            end

            # if the remote name doesn't exist in the main repo
            if url == ''
              puts "Can't deploy! Please add a remote with the name '#{remote}' to your repo."
              exit
            end

            url
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
middleman-deploy-1.0.0 lib/middleman-deploy/strategies/git/force_push.rb