default_platform(:ios)

platform :ios do
  	lane :tests do
      cocoapods(clean: true, podfile: "Example/Podfile")
  		scan()
	end

	lane :release do 
      releaseBranchName = git_branch

      unless releaseBranchName.partition('/').first == "release"
        raise "Incorrect branch, expected release branch".red
      end

      sh("git", "fetch")
      sh("git", "checkout", releaseBranchName)

		  version = releaseBranchName.partition('/').last
      mileStoneNumber = milestone_number(versionNumber: version)
		
  		version_bump_podspec(path: "InjectableLoggers.podspec", version_number: version)
  		cocoapods(clean: true, podfile: "Example/Podfile")

  		scan()
  		pod_lib_lint

  		sh("git", "add", "-A")
  		sh("git", "commit", "-m", "Bump version to #{version} [ci skip]")
      sh("git", "fetch")
  		sh("git", "checkout", "master")
  		sh("git", "merge", releaseBranchName)
  		sh("git", "tag", version)
  		sh("git", "push", "origin", "--tags", "master")
  		sh("git", "checkout", "develop")
  		sh("git", "merge", "master")
  		sh("git", "push", "origin", "develop")

  		pod_push

      github_release = set_github_release(repository_name: "lvnkmn/InjectableLoggers",
                                          api_token: ENV["GITHUB_TOKEN"],
                                          name: version,
                                          tag_name: version,
                                          description: "[Closed Issues](https://github.com/lvnkmn/InjectableLoggers/milestone/#{mileStoneNumber}?closed=1)",
                                          commitish: "master")
	end

  lane :milestone_number do |options|
    version = options[:versionNumber]
    UI.message "Will get milestone number for version #{version}"
    url = 'https://api.github.com/repos/lvnkmn/InjectableLoggers/milestones'
    uri = URI(url)
    params = { :access_token => ENV["GITHUB_TOKEN"] }
    uri.query = URI.encode_www_form(params)
    response = Net::HTTP.get(uri)
    UI.message "got response:"
    UI.message response
    mileStones = JSON.parse(response)
    milestone = mileStones.select { |milestone| milestone["title"] == version }[0]
    mileStoneNumber = milestone["number"]
    UI.message "got milestone number #{mileStoneNumber}"
    mileStoneNumber
  end
end
