class XCApp::ProjectCreator
Constants
- SUPPORTED_LANGUAGES
- TEMPLATES_DIR_NAME
Public Class Methods
new()
click to toggle source
# File lib/xcapp/project_creator.rb, line 19 def initialize @templates_folder = File.expand_path('../../' + TEMPLATES_DIR_NAME, __FILE__) end
Public Instance Methods
add_folder_files_to_project_group(folder, group)
click to toggle source
# File lib/xcapp/project_creator.rb, line 80 def add_folder_files_to_project_group folder, group Dir.entries(folder).select { |file| !(['.', '..'].include? file) }.map { |file| group.new_file file } end
add_references_to_project_group(project_folder, project_group)
click to toggle source
# File lib/xcapp/project_creator.rb, line 76 def add_references_to_project_group project_folder, project_group add_folder_files_to_project_group project_folder, project_group end
copy_template_app_files_to_project(project, project_name, path, language)
click to toggle source
# File lib/xcapp/project_creator.rb, line 44 def copy_template_app_files_to_project project, project_name, path, language app_group = project.new_group project_name, project_name dest_folder = File.join(path, project_name) copy_template_files_to_project :common, :app, dest_folder copy_template_files_to_project language, :app, dest_folder add_references_to_project_group dest_folder, app_group end
copy_template_files(template_source_folder, dest_folder)
click to toggle source
# File lib/xcapp/project_creator.rb, line 72 def copy_template_files template_source_folder, dest_folder FileUtils.copy_entry template_source_folder, dest_folder, false, false, true end
copy_template_files_to_project(language, type, dest_folder)
click to toggle source
# File lib/xcapp/project_creator.rb, line 64 def copy_template_files_to_project language, type, dest_folder raise 'Type is not valid. Available types: :app, :tests.' unless [:app, :tests].include? type raise 'Language must be :objc or :swift' unless [:common, :objc, :swift].include? language source_folder = "#{@templates_folder}/#{language.to_s}/#{type.to_s}" copy_template_files source_folder, dest_folder end
copy_template_tests_files_to_project(project, project_name, path, language)
click to toggle source
# File lib/xcapp/project_creator.rb, line 54 def copy_template_tests_files_to_project project, project_name, path, language tests_group = project.new_group "#{project_name}Tests", "#{project_name}Tests" dest_folder = File.join(path, "#{project_name}Tests") copy_template_files_to_project :common, :tests, dest_folder copy_template_files_to_project language, :tests, dest_folder add_references_to_project_group dest_folder, tests_group end
create_app_target(project, project_name, language, files)
click to toggle source
# File lib/xcapp/project_creator.rb, line 84 def create_app_target project, project_name, language, files files = files.reject { |file| file.path == "Info.plist" } # Skips Info.plist create_project_target project, project_name, :application, language, files end
create_default_build_configurations(project)
click to toggle source
# File lib/xcapp/project_creator.rb, line 100 def create_default_build_configurations project project.add_build_configuration 'Staging', :release end
create_default_scheme(project_path, project_name, app_target, test_target)
click to toggle source
# File lib/xcapp/project_creator.rb, line 112 def create_default_scheme project_path, project_name, app_target, test_target default_scheme = Xcodeproj::XCScheme.new default_scheme.add_build_target app_target default_scheme.add_test_target test_target default_scheme.set_launch_target app_target default_scheme.save_as project_path, project_name end
create_project(name, path, bundle_identifier, language)
click to toggle source
# File lib/xcapp/project_creator.rb, line 23 def create_project name, path, bundle_identifier, language raise 'Language must be :objc or :swift' unless ProjectCreator::SUPPORTED_LANGUAGES.include? language project_path = File.join(path, "#{name}.xcodeproj") project = Xcodeproj::Project.new project_path app_files = copy_template_app_files_to_project project, name, path, language tests_files = copy_template_tests_files_to_project project, name, path, language app_target = create_app_target project, name, language, app_files test_target = create_test_target project, name, language, tests_files create_default_build_configurations project set_default_build_settings project, name, bundle_identifier project.save create_default_scheme project_path, name, app_target, test_target end
create_project_target(project, target_name, target_type, language, files)
click to toggle source
# File lib/xcapp/project_creator.rb, line 93 def create_project_target project, target_name, target_type, language, files target = project.new_target target_type, target_name, :ios, nil, nil, language target.add_file_references files target end
create_test_target(project, project_name, language, files)
click to toggle source
# File lib/xcapp/project_creator.rb, line 89 def create_test_target project, project_name, language, files create_project_target project, "#{project_name}Tests", :unit_test_bundle, language, files end
set_default_build_settings(project, project_name, bundle_identifier)
click to toggle source
# File lib/xcapp/project_creator.rb, line 104 def set_default_build_settings project, project_name, bundle_identifier project.set_common_build_setting 'PRODUCT_BUNDLE_IDENTIFIER', bundle_identifier project.set_common_build_setting 'EXECUTABLE_NAME', project_name project.set_common_build_setting 'VERSIONING_SYSTEM', 'apple-generic' project.set_common_build_setting 'CURRENT_PROJECT_VERSION', '1' project.set_common_build_setting 'INFOPLIST_FILE', "$(SRCROOT)/#{project_name}/Info.plist"; end