lib/fourchette/fork.rb in fourchette-0.1.2 vs lib/fourchette/fork.rb in fourchette-0.1.3

- old
+ new

@@ -1,53 +1,50 @@ class Fourchette::Fork include Fourchette::Logger - def initialize params + def initialize(params) @params = params @heroku = Fourchette::Heroku.new @github = Fourchette::GitHub.new end def update create_unless_exists - tarball = Fourchette::Tarball.new - tarball_url = tarball.url(github_git_url, git_branch_name, ENV['FOURCHETTE_GITHUB_PROJECT']) - options = { - source_blob: { - url: tarball_url - } - } - build = @heroku.client.build.create(fork_name, options) + build = @heroku.client.build.create(fork_name, tarball_options) monitor_build(build) end - def monitor_build build - logger.info "Start of the build process on Heroku..." + def monitor_build(build) + logger.info 'Start of the build process on Heroku...' build_info = @heroku.client.build.info(fork_name, build['id']) # Let's just leave some time to Heroku to download the tarball and start # the process. This is some random timing that seems to make sense at first. sleep 30 if build_info['status'] == 'failed' - @github.comment_pr(pr_number, "The build failed on Heroku. See the activity tab on Heroku.") + @github.comment_pr( + pr_number, 'The build failed on Heroku. See the activity tab on Heroku.' + ) fail Fourchette::DeployException end end def create - @github.comment_pr(pr_number, "Fourchette is initializing a new fork.") if Fourchette::DEBUG + @github.comment_pr( + pr_number, 'Fourchette is initializing a new fork.') if Fourchette::DEBUG create_unless_exists update end def delete @heroku.delete(fork_name) - @github.comment_pr(pr_number, "Test app deleted!") + @github.comment_pr(pr_number, 'Test app deleted!') end def fork_name - "#{ENV['FOURCHETTE_HEROKU_APP_PREFIX']}-PR-#{pr_number}".downcase # It needs to be lowercase only. + # It needs to be lowercase only. + "#{ENV['FOURCHETTE_HEROKU_APP_PREFIX']}-PR-#{pr_number}".downcase end def branch_name @params['pull_request']['head']['ref'] end @@ -55,28 +52,56 @@ def pr_number @params['pull_request']['number'] end def create_unless_exists - unless @heroku.app_exists?(fork_name) - @heroku.fork(ENV['FOURCHETTE_HEROKU_APP_TO_FORK'] ,fork_name) + unless app_exists? + @heroku.fork(ENV['FOURCHETTE_HEROKU_APP_TO_FORK'], fork_name) post_fork_url end end private + def app_exists? + @heroku.app_exists?(fork_name) + end + + def tarball_options + { + source_blob: { + url: tarball_url + } + } + end + + def tarball_url + Fourchette::Tarball.new.url( + github_git_url, + git_branch_name, + ENV['FOURCHETTE_GITHUB_PROJECT'] + ) + end + # Update PR with URL. This is a method so that we can override it and just not # have that, if we don't want. Use case: we have custom domains, so we post # the URLs later on. def post_fork_url - @github.comment_pr(pr_number, "Test URL: #{@heroku.client.app.info(fork_name)['web_url']}") + @github.comment_pr( + pr_number, + "Test URL: #{@heroku.client.app.info(fork_name)['web_url']}" + ) end def git_branch_name "remotes/origin/#{branch_name}" end def github_git_url - @params['pull_request']['head']['repo']['clone_url'].gsub("//github.com", "//#{ENV['FOURCHETTE_GITHUB_USERNAME']}:#{ENV['FOURCHETTE_GITHUB_PERSONAL_TOKEN']}@github.com") + @params['pull_request']['head']['repo']['clone_url'] + .gsub( + '//github.com', + "//#{ENV['FOURCHETTE_GITHUB_USERNAME']}:" \ + "#{ENV['FOURCHETTE_GITHUB_PERSONAL_TOKEN']}@github.com" + ) end end