# Copyright © 2017 Applause Inc. All rights reserved.
require 'fileutils' require 'git' require 'cocoapods'
PODSPEC_TEMPLATE_PATH = “./Applause-Podspecs/%{pod_name}/%{pod_name}.template” PODSPEC_PATH = “./Applause-Podspecs/%{pod_name}/%{version}/%{pod_name}.podspec”
namespace :podspec do
desc "Generates podspec for given setup name" task :generate, [:setup_name] do |t, args| setup_name = args[:setup_name] setup = BuildConfiguration.load(setup_name) version = Plist.version(setup.release_configuration.plist) pod_name = setup.release_configuration.pod_name template_path = PODSPEC_TEMPLATE_PATH % {pod_name: pod_name, version: version} podspec_path = PODSPEC_PATH % {pod_name: pod_name, version: version} podspec = generate_podspec(template_path, version) save_podspec(podspec_path, podspec) end task :verify, [:setup_name] do |t, args| pod_name, version = properties_from_setup(args[:setup_name]) podspec_path = PODSPEC_PATH % {pod_name: pod_name, version: version} if !lint_podspec(podspec_path) raise "*** Podspec is not valid! ***" end end desc "Generates and commits podspec for given setup name" task :commit, [:setup_name] => :generate do |t, args| setup_name = args[:setup_name] setup = BuildConfiguration.load(setup_name) version = Plist.version(setup.release_configuration.plist) pod_name = setup.release_configuration.pod_name podspec_path = PODSPEC_PATH % {pod_name: pod_name, version: version} commit_message = "Generated #{pod_name} Podspec for #{version}" commit(podspec_path, commit_message) end def generate_podspec(template_path, version) template_file = File.open(template_path) template = template_file.read podspec = template % {version: version} puts "New podspec:" puts podspec return podspec end def save_podspec(podspec_path, podspec_contents) dirname = File.dirname(podspec_path) unless File.directory?(dirname) FileUtils.mkdir_p(dirname) end File.open(podspec_path, 'w') {|f| f.write(podspec_contents) } end def lint_podspec(podspec_path) validator = Pod::Validator.new(podspec_path, []) valid = validator.validate if !valid validator.print_results else puts "*** Podspec is valid! ***" end return valid end def commit(file, message) sdk_repo = Git.open('.') sdk_repo.add(file) sdk_repo.commit(message) end def properties_from_setup(setup_name) setup = BuildConfiguration.load(setup_name) version = Plist.version(setup.release_configuration.plist) pod_name = setup.release_configuration.pod_name return [pod_name, version] end
end