81 lines
3.0 KiB
Ruby
81 lines
3.0 KiB
Ruby
require 'xcodeproj'
|
|
require 'fileutils'
|
|
|
|
root = File.expand_path(__dir__)
|
|
project_path = File.join(root, 'Bookibra.xcodeproj')
|
|
FileUtils.rm_rf(project_path)
|
|
|
|
project = Xcodeproj::Project.new(project_path)
|
|
target = project.new_target(:application, 'Bookibra', :ios, '17.0')
|
|
|
|
project.build_configurations.each do |config|
|
|
config.build_settings['SWIFT_VERSION'] = '5.9'
|
|
config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = 'com.bookibra.ios'
|
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '17.0'
|
|
config.build_settings['TARGETED_DEVICE_FAMILY'] = '1,2'
|
|
config.build_settings['CODE_SIGN_STYLE'] = 'Automatic'
|
|
config.build_settings['MARKETING_VERSION'] = '1.0'
|
|
config.build_settings['CURRENT_PROJECT_VERSION'] = '1'
|
|
end
|
|
|
|
target.build_configurations.each do |config|
|
|
config.build_settings['SWIFT_VERSION'] = '5.9'
|
|
config.build_settings['INFOPLIST_FILE'] = 'Bookibra/Resources/Info.plist'
|
|
config.build_settings['PRODUCT_BUNDLE_IDENTIFIER'] = 'com.bookibra.ios'
|
|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '17.0'
|
|
config.build_settings['TARGETED_DEVICE_FAMILY'] = '1,2'
|
|
config.build_settings['ASSETCATALOG_COMPILER_APPICON_NAME'] = 'AppIcon'
|
|
config.build_settings['GENERATE_INFOPLIST_FILE'] = 'NO'
|
|
config.build_settings['SWIFT_EMIT_LOC_STRINGS'] = 'YES'
|
|
config.build_settings['LD_RUNPATH_SEARCH_PATHS'] = ['$(inherited)', '@executable_path/Frameworks']
|
|
end
|
|
|
|
# xcconfig mapping
|
|
config_map = {
|
|
'Debug' => 'Bookibra/Resources/Debug.xcconfig',
|
|
'Release' => 'Bookibra/Resources/Release.xcconfig'
|
|
}
|
|
project.build_configurations.each do |cfg|
|
|
path = config_map[cfg.name]
|
|
next unless path
|
|
cfg.base_configuration_reference = project.files.find { |f| f.path == path } || project.main_group.new_file(path)
|
|
end
|
|
target.build_configurations.each do |cfg|
|
|
path = config_map[cfg.name]
|
|
next unless path
|
|
cfg.base_configuration_reference = project.files.find { |f| f.path == path } || project.main_group.new_file(path)
|
|
end
|
|
|
|
main = project.main_group
|
|
bookibra_group = main.new_group('Bookibra', 'Bookibra')
|
|
|
|
# Source files
|
|
swift_files = Dir.glob(File.join(root, 'Bookibra', '**', '*.swift')).sort
|
|
swift_files.each do |abs|
|
|
rel = abs.sub(root + '/', '')
|
|
ref = bookibra_group.new_file(rel.sub('Bookibra/', ''))
|
|
target.source_build_phase.add_file_reference(ref)
|
|
end
|
|
|
|
# Resource files/directories (only top-level bundles, no nested xcassets internals)
|
|
resource_paths = [
|
|
'Bookibra/Resources/Assets.xcassets',
|
|
'Bookibra/Resources/en.lproj/Localizable.strings',
|
|
'Bookibra/Resources/tr.lproj/Localizable.strings',
|
|
'Bookibra/Resources/mock_book_remote.json'
|
|
]
|
|
resource_paths.each do |rel|
|
|
ref = bookibra_group.new_file(rel.sub('Bookibra/', ''))
|
|
target.resources_build_phase.add_file_reference(ref)
|
|
end
|
|
|
|
# Frameworks
|
|
frameworks_group = main['Frameworks'] || main.new_group('Frameworks')
|
|
['AVFoundation.framework', 'VisionKit.framework', 'SwiftData.framework'].each do |framework|
|
|
ref = frameworks_group.new_file("System/Library/Frameworks/#{framework}")
|
|
target.frameworks_build_phase.add_file_reference(ref)
|
|
end
|
|
|
|
project.save
|
|
puts "Created #{project_path}"
|