class Deploy::Repository

Public Instance Methods

index_modified?() click to toggle source
# File lib/deploy/repository.rb, line 6
def index_modified?
  ! system('git diff-index --cached --quiet HEAD --ignore-submodules --')
end
prepare!(tag) click to toggle source
# File lib/deploy/repository.rb, line 10
def prepare!(tag)
  fail "No tag given" unless tag
  @tag = tag
  sync! unless tag_exists?
end

Private Instance Methods

commit!() click to toggle source
# File lib/deploy/repository.rb, line 36
def commit!
  puts "Committing version.txt..."
  unless system('git add public/version.txt') && system("git commit -m \"#{commit_message}\" ")
    fail "Failed to commit."
  end
end
commit_message() click to toggle source
# File lib/deploy/repository.rb, line 61
def commit_message
  @commit_message ||= "#{last_commit_message} - deploy"
end
last_commit_message() click to toggle source
# File lib/deploy/repository.rb, line 65
def last_commit_message
  @last_commit_message ||= `git log --pretty=%B -1`.chomp('')
end
push!() click to toggle source
# File lib/deploy/repository.rb, line 50
def push!
  puts "Pushing changes to origin..."
  unless system('git push origin HEAD') && system('git push origin --tags')
    fail "Failed to git push."
  end
end
sync!() click to toggle source
# File lib/deploy/repository.rb, line 24
def sync!
  version!
  commit!
  tag!
  push!
end
tag!() click to toggle source
# File lib/deploy/repository.rb, line 43
def tag!
  puts "Tagging #{@tag} as new version..."
  unless system("git tag -a #{@tag} -m \"#{tag_message}\" ")
    fail "Failed to tag"
  end
end
tag_exists?() click to toggle source
# File lib/deploy/repository.rb, line 18
def tag_exists?
  Open3.popen3("git rev-parse #{@tag}") { |_input, _output, error, _thread|
    error.read.chomp
  }.empty?
end
tag_message() click to toggle source
# File lib/deploy/repository.rb, line 57
def tag_message
  "Deployed #{@tag}"
end
version!() click to toggle source
# File lib/deploy/repository.rb, line 31
def version!
  FileUtils.mkdir_p 'public'
  File.open('public/version.txt', 'w') { |file| file.puts(@tag) }
end