#!/usr/bin/env ruby

require 'rubygems'
require 'json'
require 'pp'

STDOUT.sync = true
STDERR.sync = true

@hostname = ENV['JENKINS_URL'].split("/")[-1].downcase
@job_name = "#{ENV['OPENSHIFT_APP_NAME']}-build"
@job_url = "/job/#{@job_name}"
@app_name = ENV['OPENSHIFT_APP_NAME']
@uuid = ENV['OPENSHIFT_GEAR_UUID']
@namespace = ARGV[0]
@openshift_origin_domain = ARGV[1]
@job_xml = ARGV[2]


def create_job
  status_code = `/bin/sed -e "s,UPSTREAM_REPO_URL,ssh://#{@uuid}@#{@app_name}-#{@namespace}.#{@openshift_origin_domain}/~/git/#{@app_name}.git/,g" \
         -e "s,UPSTREAM_SSH,#{@uuid}@#{@app_name}-#{@namespace}.#{@openshift_origin_domain},g" \
         -e "s,JOB_NAME,#{@job_name},g" \
         -e "s,UPSTREAM_APP_NAME,#{@app_type},g" #{@job_xml} | curl -s -w %{http_code} --output /dev/null -X POST -H "Content-Type: application/xml" -H "Expect: " --data-binary @- --insecure https://${JENKINS_USERNAME}:${JENKINS_PASSWORD}@#{@hostname}/createItem?name=#{@job_name}`

  puts "create_job status: #{status_code}"
  if not File.exists? File.join('/var/lib/openshift', @uuid, 'app-root', 'data', 'jobs', @app_name, 'config.xml')
    puts  'build config does not exist'
    exit 1
  end

  if status_code != '200'
    exit 1
  end
end

create_job
