Created
February 20, 2020 10:58
-
-
Save mungler/8c41bfe262cc4565571daf5640276dfe to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# assuming your project is called 'MyProject' and the xcodeproj file is inside a folder | |
# called 'MyProject' and is called 'MyProject.xcodeproj', and that j2objc generated source | |
# is output into the 'MyProject/generated_src', this script will integrate the generated | |
# source code and add all .m and .swift files to the project's main target | |
# use at your own risk... dont shout at me if this breaks your project, | |
# turns your hair blue or kills your dog... | |
require 'xcodeproj' | |
class XcodeFileManager | |
def self.process | |
Dir.chdir("MyProject") | |
add_group("MyProject.xcodeproj", "generated_src") | |
Dir.chdir("..") | |
end | |
private | |
def self.add_files(dir, group, main_target, changed = false) | |
Dir.glob(dir) do |item| | |
next if %w{. .DS_Store}.include?(item) | |
next if group.children.map { |f| f.name }.include? File.basename(item) | |
if File.directory?(item) | |
new_folder = File.basename(item) | |
created_group = group.new_group(new_folder) | |
changed = add_files("#{item}/*", created_group, main_target, changed) | |
else | |
i = group.new_file(item) | |
changed = true | |
if %w{.swift .m}.any? {|ext| item.end_with?(ext)} | |
main_target.add_file_references([i]) | |
end | |
end | |
end | |
changed | |
end | |
def self.add_group(project_path, folder) | |
project = Xcodeproj::Project.open(project_path) | |
generated_group = project.main_group[folder] || project.main_group.new_group(folder) | |
if add_files("#{folder}/*", generated_group, project.targets.first) | |
project.save | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment