require 'xcodeproj' root, output, kingfisher = ARGV project = Xcodeproj::Project.new("#{output}/Gesture.xcodeproj") app = project.new_target(:application, 'Gesture', :ios, '16.6') tests = project.new_target(:ui_test_bundle, 'GestureUITests', :ios, '16.6') sources = %w[ SodaLive/Sources/V2/Component/Banner/SubBanner.swift SodaLive/Sources/V2/Component/Banner/SubBannerCarousel.swift SodaLive/Sources/UI/Theme/Color.swift SodaLive/Sources/UI/Theme/Spacing.swift SodaLive/Sources/Extensions/ColorExtension.swift SodaLive/Sources/Extensions/FontModifier.swift work/tests/SubBannerGestureHarness.swift ] sources.each do |path| source = path.end_with?('/SubBannerCarousel.swift') && ARGV[3] ? ARGV[3] : "#{root}/#{path}" app.source_build_phase.add_file_reference(project.main_group.new_file(source)) end tests.source_build_phase.add_file_reference(project.main_group.new_file("#{root}/work/tests/SubBannerGestureUITests.swift")) tests.add_dependency(app) [app, tests].each do |target| target.build_configurations.each do |configuration| configuration.build_settings.merge!({ 'PRODUCT_BUNDLE_IDENTIFIER' => "invalid.sodalive.gesturefix.#{target.name}", 'GENERATE_INFOPLIST_FILE' => 'YES', 'CODE_SIGNING_ALLOWED' => 'NO', 'SWIFT_VERSION' => '5.0', 'TARGETED_DEVICE_FAMILY' => '1', 'ARCHS' => 'x86_64', 'SWIFT_OPTIMIZATION_LEVEL' => '-Onone' }) end end app.build_configurations.each do |configuration| configuration.build_settings.merge!({ 'SWIFT_INCLUDE_PATHS' => "\"#{kingfisher}\"", 'OTHER_LDFLAGS' => ['$(inherited)', "\"#{kingfisher}/Kingfisher.o\""], 'INFOPLIST_KEY_UILaunchScreen_Generation' => 'YES' }) end tests.build_configurations.each { |configuration| configuration.build_settings['TEST_TARGET_NAME'] = 'Gesture' } project.save scheme = Xcodeproj::XCScheme.new scheme.add_build_target(app) scheme.add_build_target(tests) scheme.set_launch_target(app) scheme.add_test_target(tests) scheme.save_as(project.path, 'Gesture', true)