class Xcodegen < Formula desc "Tool that generates your Xcode project from a project spec" homepage "https://github.com/yonaskolb/XcodeGen" url "https://github.com/yonaskolb/XcodeGen/archive/1.8.0.tar.gz" sha256 "fed2da98f176f18d3b761b76def4c3324d4a9a5c77cc7392388042db33dc9cee" head "https://github.com/yonaskolb/XcodeGen.git" depends_on :xcode def install # libxml2 has to be included in ISYSTEM_PATH for building one of # dependencies. It didn't happen automatically before Xcode 9.3 # so homebrew patched environment variable to get it work. # But since Xcode 9.3 includes it already, the build will fail # because of redefinition of libxml2 module. # It's a bug of homebrew but before it's fixed, it's easier # to provide in-place workaround for now. # Please remove this once homebrew is patched. # step 1: capture old value and patch environment if OS::Mac::Xcode.version >= Version.new("9.3") then old_isystem_paths = ENV["HOMEBREW_ISYSTEM_PATHS"] ENV["HOMEBREW_ISYSTEM_PATHS"] = old_isystem_paths.gsub("/usr/include/libxml2", "") end # step 2: usual build system "make", "install", "PREFIX=#{prefix}" # step 3: restoring environment to pristine state ENV["HOMEBREW_ISYSTEM_PATHS"] = old_isystem_paths if defined? old_isystem_paths end test do (testpath/"xcodegen.yml").write <<-EOS.undent name: GeneratedProject targets: TestProject: type: application platform: iOS sources: TestProject settings: PRODUCT_BUNDLE_IDENTIFIER: com.test PRODUCT_NAME: TestProject EOS Dir.mkdir(File.join(testpath, "TestProject")) system("#{bin}/XcodeGen --spec #{File.join(testpath, "xcodegen.yml")}") system("xcodebuild --project #{File.join(testpath, "GeneratedProject.xcodeproj")}") end end