def testAddCodeSignAllTargetAllConfigurations(self): project = XcodeProject(self.obj) project.add_code_sign('iPhone Distribution', 'MYTEAM', '0x0x0x0x0', 'Provisioning name') self.assertEqual(project.objects['0'].attributes.TargetAttributes[u'1'].ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual(project.objects['0'].attributes.TargetAttributes[u'2'].ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual(project.objects['5'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['6'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['7'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['8'].buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual(project.objects['5'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['6'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['7'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['8'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual(project.objects['5'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['6'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['7'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['8'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual(project.objects['5'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['6'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['7'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual(project.objects['8'].buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name')
def testEmbedFrameworkInRightCopySection(self): project = XcodeProject(self.obj) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 1) project.add_file('X.framework', file_options=FileOptions(embed_framework=True)) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 3)
def testAddFileUnknownAllowed(self): project = XcodeProject(self.obj) build_file = project.add_file("file.unknowntype", file_options=FileOptions(ignore_unknown_type=True)) # unknown files are added as resources self.assertEqual(project.objects.get_objects_in_section(u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testAddFolderAsReference(self): project = XcodeProject(self.obj,path="tests/project.pbxproj") build_file = project.add_folder('samples', create_groups=False) self.assertListEqual(project.get_groups_by_name('samples'), []) self.assertEqual(project.objects.get_objects_in_section(u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testAddFileSource(self): project = XcodeProject(self.obj) build_file = project.add_file("file.m") # 2 source files are created 1 x target self.assertEqual(project.objects.get_objects_in_section(u'PBXSourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testGetGroupsByPathFromParent(self): project = XcodeProject(self.obj) groups = project.get_groups_by_path('..', parent=project.objects['1p']) self.assertIn(project.objects['2p'], groups) self.assertIn(project.objects['3p'], groups) self.assertNotIn(project.objects['5p'], groups) self.assertNotIn(project.objects['6p'], groups)
def testAddFileWithAbsolutePathOnUnknownTree(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/test.framework"), tree='DEVELOPER_DIR') self.assertEqual(project.objects[build_file[0].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[1].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[2].fileRef].sourceTree, '<absolute>') self.assertEqual(project.objects[build_file[3].fileRef].sourceTree, '<absolute>')
def testAddLibrarySearchPaths(self): project = XcodeProject(self.obj) project.add_library_search_paths('path/to/search') self.assertEqual(project.objects['5'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['6'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['7'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['8'].buildSettings.LIBRARY_SEARCH_PATHS, 'path/to/search/**')
def testAddHeaderSearchPaths(self): project = XcodeProject(self.obj) project.add_header_search_paths('path/to/search') self.assertEqual(project.objects['5'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['6'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['7'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['8'].buildSettings.HEADER_SEARCH_PATHS, 'path/to/search/**')
def testGetFilesByNameWithParent(self): project = XcodeProject(self.obj) files = project.get_files_by_name('file', 'group2') self.assertEqual(files.__len__(), 2) files = project.get_files_by_name('file', 'group3') self.assertEqual(files.__len__(), 1)
def testAddOtherLDFlags(self): project = XcodeProject(self.obj) project.add_other_ldflags('-ObjC') self.assertEqual(project.objects['5'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['6'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['7'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['8'].buildSettings.OTHER_LDFLAGS, '-ObjC')
def testAddFileNoCreateBuildFiles(self): project = XcodeProject(self.obj) items = project.objects.__len__() build_file = project.add_file(".", file_options=FileOptions(create_build_files=False)) # no create build file flag self.assertEqual(project.objects.__len__(), items) self.assertEqual(build_file, [])
def testAddFrameworkSearchPaths(self): project = XcodeProject(self.obj) project.add_framework_search_paths('path/to/search') self.assertEqual(project.objects['5'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['6'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['7'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**') self.assertEqual(project.objects['8'].buildSettings.FRAMEWORK_SEARCH_PATHS, 'path/to/search/**')
def testGetGroupsByNameFromParent(self): project = XcodeProject(self.obj) groups = project.get_groups_by_name('app', parent=project.objects['1']) self.assertIn(project.objects['2'], groups) self.assertIn(project.objects['3'], groups) self.assertNotIn(project.objects['5'], groups) self.assertNotIn(project.objects['6'], groups)
def testAddFlags(self): project = XcodeProject(self.obj) project.add_flags('flag', '-flag') self.assertEqual(project.objects['5'].buildSettings.flag, '-flag') self.assertEqual(project.objects['6'].buildSettings.flag, '-flag') self.assertEqual(project.objects['7'].buildSettings.flag, '-flag') self.assertEqual(project.objects['8'].buildSettings.flag, '-flag')
def testAddProjectNotForced(self): project = XcodeProject(self.obj) _ = project.add_project('samplescli/dependency.xcodeproj', file_options=FileOptions(create_build_files=False)) reference_proxies = project.add_project('samplescli/dependency.xcodeproj', force=False, file_options=FileOptions(create_build_files=False)) self.assertListEqual(reference_proxies, [])
def testRemoveByIdRecursivelyWithFiles(self): project = XcodeProject(self.obj) result = project.remove_group_by_id('a') self.assertTrue(result) self.assertIsNone(project.objects['a']) self.assertIsNone(project.objects['b']) self.assertIsNone(project.objects['c'])
def testAddFileFrameworkWithAbsolutePath(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/test.framework")) expected_flags = ["$(SRCROOT)/tests/samples", "$(inherited)"] self.assertListEqual(project.objects['5'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['6'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['7'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags) self.assertListEqual(project.objects['8'].buildSettings.FRAMEWORK_SEARCH_PATHS, expected_flags)
def testRemoveFilesByPath(self): project = XcodeProject(self.obj) original = project.__str__() build_files = project.add_file("file.m") result = project.remove_files_by_path('file.m') self.assertTrue(result) self.assertEqual(project.__str__(), original)
def testAddFileLibraryWithAbsolutePath(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/testLibrary.a")) expected_flags = "$(SRCROOT)/tests/samples" self.assertEqual(project.objects['5'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['6'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['7'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags) self.assertEqual(project.objects['8'].buildSettings.LIBRARY_SEARCH_PATHS, expected_flags)
def testRemoveRunScriptNotFound(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la', insert_before_compile=True) self.assertEqual(project.objects[project.objects['1'].buildPhases[0]].shellScript, u'ls -la') self.assertEqual(project.objects[project.objects['2'].buildPhases[0]].shellScript, u'ls -la') project.remove_run_script(u'ls') self.assertEqual(project.objects[project.objects['1'].buildPhases[0]].shellScript, u'ls -la') self.assertEqual(project.objects[project.objects['2'].buildPhases[0]].shellScript, u'ls -la')
def testRemoveByIdNonRecursive(self): project = XcodeProject(self.obj) group = project.objects['1'] result = project.remove_group_by_id('1', recursive=False) self.assertTrue(result) self.assertFalse(project.objects['root'].has_child(group)) self.assertIsNone(project.objects['1']) self.assertIsNotNone(project.objects['2']) self.assertIsNotNone(project.objects['3'])
def testRemoveFileByIdFromTarget(self): project = XcodeProject(self.obj) build_files = project.add_file("file.m") file = project.get_files_by_name('file.m')[0] result = project.remove_file_by_id(file.get_id(), target_name='report') self.assertTrue(result) self.assertIsNotNone(project.objects[file.get_id()]) self.assertEqual(project.objects.get_objects_in_section('PBXBuildFile').__len__(), 3) self.assertEqual(project.objects.get_objects_in_section('PBXSourcesBuildPhase').__len__(), 1)
def testAddFileFrameworkEmbedded(self): project = XcodeProject(self.obj) options = FileOptions(create_build_files=True, weak=True, embed_framework=True, code_sign_on_copy=True) build_file = project.add_file("file.framework", file_options=options) # 2 source files are created 1 x target self.assertEqual(project.objects.get_objects_in_section(u'PBXFrameworksBuildPhase').__len__(), 2) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 4) self.assertListEqual(build_file[0].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual(build_file[1].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual(build_file[2].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy']) self.assertListEqual(build_file[3].settings.ATTRIBUTES, [u'Weak', u'CodeSignOnCopy', u'RemoveHeadersOnCopy'])
def testAddFileOfAllTypes(self): for ext in ProjectFiles._FILE_TYPES: project = XcodeProject(self.obj) options = FileOptions(embed_framework=False) build_file = project.add_file("file{0}".format(ext), file_options=options) _, phase = ProjectFiles._FILE_TYPES[ext] amount = 0 if phase is not None: amount = 2 self.assertEqual(project.objects.get_objects_in_section(phase).__len__(), amount) self.assertEqual(build_file.__len__(), amount)
def testGetParentGroupFromMainGroup(self): project = XcodeProject( { 'objects': { 'project': {'isa': 'PBXProject', 'mainGroup': 'group'}, 'group': {'isa': 'PBXGroup', 'name': 'group1'} }, 'rootObject': 'project' }) group = project._get_parent_group(None) self.assertIsNotNone(group) self.assertEqual(project.objects[project.objects['project'].mainGroup], group)
def testAddFileFrameworkFromSDKRootIgnoresEmbedAndCodeSign(self): project = XcodeProject(self.obj) options = FileOptions(create_build_files=True, weak=True, embed_framework=True, code_sign_on_copy=True) build_file = project.add_file("file.framework", tree=TreeType.SDKROOT, file_options=options) # 2 source files are created 1 x target self.assertEqual(project.objects.get_objects_in_section(u'PBXFrameworksBuildPhase').__len__(), 2) self.assertEqual(project.objects.get_objects_in_section(u'PBXCopyFilesBuildPhase').__len__(), 3) self.assertEqual(build_file.__len__(), 4) self.assertListEqual(build_file[0].settings.ATTRIBUTES, [u'Weak']) self.assertIsNone(build_file[1]['settings']) self.assertListEqual(build_file[2].settings.ATTRIBUTES, [u'Weak']) self.assertIsNone(build_file[3]['settings'])
def testRemoveOtherLDFlags(self): project = XcodeProject(self.obj) project.add_other_ldflags('-ObjC') self.assertEqual(project.objects['5'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['6'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['7'].buildSettings.OTHER_LDFLAGS, '-ObjC') self.assertEqual(project.objects['8'].buildSettings.OTHER_LDFLAGS, '-ObjC') project.remove_other_ldflags('-ObjC') self.assertIsNone(project.objects['5'].buildSettings['OTHER_LDFLAGS']) self.assertIsNone(project.objects['6'].buildSettings['OTHER_LDFLAGS']) self.assertIsNone(project.objects['7'].buildSettings['OTHER_LDFLAGS']) self.assertIsNone(project.objects['8'].buildSettings['OTHER_LDFLAGS'])
def testAddFolderNonRecursive(self): project = XcodeProject(self.obj) result = project.add_folder('samples/', recursive=False) # should add test.framework and testLibrary.a and 2 groups, samples, dirA samples = project.get_groups_by_name('samples') dirA = project.get_groups_by_name('dirA') dirB = project.get_groups_by_name('dirB') self.assertNotEqual(samples, []) self.assertNotEqual(dirA, []) self.assertEqual(dirB, []) self.assertEqual(samples[0].children.__len__(), 3) # dirA, test.framework, testLibrary.a self.assertEqual(dirA[0].children.__len__(), 0)
def testAddFolderWithExclusions(self): project = XcodeProject(self.obj) result = project.add_folder('samples', excludes=['file.\\.m', 'test.*']) # should add test.framework and testLibrary.a and 2 groups, samples, dirA samples = project.get_groups_by_name('samples') dirA = project.get_groups_by_name('dirA') dirB = project.get_groups_by_name('dirB') self.assertNotEqual(samples, []) self.assertNotEqual(dirA, []) self.assertNotEqual(dirB, []) self.assertEqual(samples[0].children.__len__(), 1) # dirA, -test.framework, -testLibrary.a self.assertEqual(dirA[0].children.__len__(), 1) # dirB, -fileA.m self.assertEqual(dirB[0].children.__len__(), 0) # -fileB.m
def testGetParentGroupWithID(self): project = XcodeProject(self.obj) parent = project._get_parent_group('5p') self.assertEqual(parent, project.objects['5p'])
import sys print("Python Version:") print(sys.version) try: from pbxproj import XcodeProject from pbxproj.pbxsections import XCBuildConfigurationFlags except ImportError: print("It looks like you don't have the python package 'pbxproj' installed.") print("You need to install it - you can install it via the command:") print("sudo -H pip install pbxproj") exit(1) from pathlib import Path project = XcodeProject.load("Khrysalis Product Name.xcodeproj/project.pbxproj") project.add_folder('./Khrysalis Product Name/', target_name="Khrysalis Product Name", excludes=["^.*\\.((?!swift).)*$"]) project.remove_flags(XCBuildConfigurationFlags.LIBRARY_SEARCH_PATHS, None) project.save() print("Successfully added project files.")
project.get_files_by_name project.get_files_by_path project.get_groups_by_name project.get_groups_by_path project.get_object(id) object.get_id() ''' config = { 'xcodeproj': './cloud-search.xcodeproj' } # open project project = XcodeProject.load(config['xcodeproj'] + '/project.pbxproj') class GroupStruct: Dict = {} # if an object has parrent, then it's content is it's parent def __init__(self, project): self.groups = project.objects.get_objects_in_section('PBXGroup') # initialize the dictionary of groups for item in self.groups: itemID = item.get_id().upper() for child in item.children: self.Dict[child.upper()] = itemID ''' input: file id output: None if over maxIter, list of groups
def testRemoveBrokenGroupsByName(self): project = XcodeProject(self.obj) result = project.remove_group_by_name('broken') self.assertFalse(result)
#!/usr/local/bin/python3 from pbxproj import XcodeProject import json jsonPath = "muxed.json" with open(jsonPath) as f: conf = json.load(f) project = XcodeProject.load( './repos/vidapp/vidtest/vidtest.xcodeproj/project.pbxproj') mode = "Release" def getflag(target, flag): for conf in project.objects.get_configurations_on_targets(target, mode): cdict = conf["buildSettings"] return cdict[flag] def removeflag(target, flag): val = "" for conf in project.objects.get_configurations_on_targets(target, mode): cdict = conf["buildSettings"] val = cdict[flag] if val is None: return project.remove_flags(flag, val, target, "Debug") l = "vidtest"
def testAddReferenceFile(self): project = XcodeProject(self.obj, path="tests/project.pbxproj") build_file = project.add_file(os.path.abspath("samples/dirA")) self.assertEqual(project.objects.get_objects_in_section(u'PBXResourcesBuildPhase').__len__(), 2) self.assertEqual(build_file.__len__(), 2)
def testGetOrCreateGroupFound(self): project = XcodeProject(self.obj) group = project.get_or_create_group('root') self.assertIsNotNone(group) self.assertIn(group.get_id(), self.obj['objects'])
def testAddRunScriptBeforeCompile(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la', insert_before_compile=True) self.assertEqual(project.objects[project.objects['1'].buildPhases[0]].shellScript, u'ls -la') self.assertEqual(project.objects[project.objects['2'].buildPhases[0]].shellScript, u'ls -la')
'Core/Services/StitchCoreRemoteMongoDBService', 'Core/Services/StitchCoreTwilioService', 'Darwin/StitchCore', 'Darwin/Services/StitchAWSS3Service', 'Darwin/Services/StitchAWSSESService', 'Darwin/Services/StitchFCMService', 'Darwin/Services/StitchHTTPService', 'Darwin/Services/StitchLocalMongoDBService', 'Darwin/Services/StitchRemoteMongoDBService', 'Darwin/Services/StitchTwilioService', ] # open the project for module in modules: try: project = XcodeProject.load('{}/{}.xcodeproj/project.pbxproj'.format( module, os.path.basename(module))) frameworks = [ os.path.abspath('Frameworks/ios/libbson.framework'), os.path.abspath('Frameworks/ios/libmongoc.framework'), os.path.abspath('Frameworks/ios/MongoSwift.framework') ] # add a file to it, force=false to not add it if it's already in the project options = FileOptions(create_build_files=True, weak=True, embed_framework=True, code_sign_on_copy=True) for fmk in frameworks: project.add_file(fmk, force=False, file_options=options)
def testAddFileUnknown(self): project = XcodeProject(self.obj) with self.assertRaisesRegex(ValueError, '^Unknown file extension: '): project.add_file("file.unknowntype")
from pbxproj import XcodeProject import sys import os import fnmatch xcodeprojs = [] for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.xcodeproj'): #project.pbxproj'): xcodeprojs.append(file) if len(xcodeprojs) is 0: print( 'No xcodeproj was found. Ensure you are running in the same directory as it.' ) exit(1) if len(xcodeprojs) > 1: print('Multiple xcodeproj found. Script will run on all of them.') for xcodeproj in xcodeprojs: project = XcodeProject.load('{}/project.pbxproj'.format(xcodeproj)) project.add_run_script( '"${PODS_ROOT}/SwiftLint/swiftlint" autocorrect; "${PODS_ROOT}/SwiftLint/swiftlint"', insert_before_compile=True) project.save()
def testRemoveFlags(self): project = XcodeProject(self.obj) project.remove_flags('base', 'a') self.assertIsNone(project.objects['5'].buildSettings['base'])
def testAddProjectFlags(self): project = XcodeProject(self.obj) project.add_project_flags('flag', '-flag') self.assertEqual(project.objects['9'].buildSettings.flag, '-flag') self.assertEqual(project.objects['10'].buildSettings.flag, '-flag')
def testAddCodeSignAllTargetAllConfigurations(self): project = XcodeProject(self.obj) project.add_code_sign('iPhone Distribution', 'MYTEAM', '0x0x0x0x0', 'Provisioning name') self.assertEqual( project.objects['0'].attributes.TargetAttributes[u'1']. ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual( project.objects['0'].attributes.TargetAttributes[u'2']. ProvisioningStyle, PBXProvioningTypes.MANUAL) self.assertEqual( project.objects['5']. buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual( project.objects['6']. buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual( project.objects['7']. buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual( project.objects['8']. buildSettings['CODE_SIGN_IDENTITY[sdk=iphoneos*]'], 'iPhone Distribution') self.assertEqual( project.objects['5'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual( project.objects['6'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual( project.objects['7'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual( project.objects['8'].buildSettings['DEVELOPMENT_TEAM'], 'MYTEAM') self.assertEqual( project.objects['5'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual( project.objects['6'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual( project.objects['7'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual( project.objects['8'].buildSettings['PROVISIONING_PROFILE'], '0x0x0x0x0') self.assertEqual( project.objects['5']. buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual( project.objects['6']. buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual( project.objects['7']. buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name') self.assertEqual( project.objects['8']. buildSettings['PROVISIONING_PROFILE_SPECIFIER'], 'Provisioning name')
def testAddFileWithAbsolutePathDoesNotExist(self): project = XcodeProject(self.obj) build_file = project.add_file(os.path.abspath("samples/unexistingFile.m")) # nothing to do if the file is absolute but doesn't exist self.assertIsNone(build_file)
def testRemoveByNameNotFound(self): project = XcodeProject(self.obj) self.assertFalse(project.remove_group_by_name('xxx'))
def __init__(self, path, projectFolder, buildTarget): self.project = XcodeProject.load(path) self.path = path self.projectFolder = projectFolder self.buildTarget = buildTarget
def testRemoveFileByIdOnlyFiles(self): project = XcodeProject(self.obj) result = project.remove_file_by_id('group1') self.assertFalse(result)
def testGetParentGroupCreateDefault(self): project = XcodeProject({'objects': {}}) group = project._get_parent_group(None) self.assertIsNotNone(group) self.assertEqual(project.objects[group.get_id()], group)
def testAddFolderNotAFolder(self): project = XcodeProject(self.obj) result = project.add_folder('samples/testLibrary.a') self.assertIsNone(result)
def testGetOrCreateGroupNoName(self): project = XcodeProject(self.obj) group = project.get_or_create_group(None) self.assertIsNone(group)
def add_viper_files(config_path: str, project_name: str, module_name: str, targets_list: List[str], storyboard: str = None): with open(config_path, 'r') as stream: yaml_data = yaml.load(stream) settings = yaml_data project = XcodeProject.load(project_name + '/project.pbxproj') targets = [] if 'targets' in settings: targets = settings['targets'] # But this has higher priority if targets_list: targets = targets_list if storyboard: storyboard_name = storyboard else: storyboard_name = 'Main' today = datetime.date.today() today_str = today.strftime('%d.%m.%y') year_str = today.strftime('%Y') template_dir = settings['templates_dir'] dir_path = os.path.dirname(os.path.realpath(__file__)) if template_dir == '$TEMPLATES': template_dir = dir_path + '/Templates' project_full_dir = os.path.dirname( os.path.realpath(project_name)) + '/' + settings['project_dir'] templates_env = Environment(loader=FileSystemLoader(template_dir), autoescape=select_autoescape(['.tpl.swift'])) parts = { 'View': 'Views', 'Interactor': 'Interactors', 'Presenter': 'Presenters', 'Router': 'Routers', 'Controller': 'ViewControllers' } for key in parts.keys(): try: template = templates_env.get_template(key + '.tpl.swift') except exceptions.TemplateNotFound: print(Fore.RED + 'Cannot find template {0}'.format(key + '.tpl.swift')) print(Style.RESET_ALL) sys.exit(0) filename = '{2}/{3}/{1}{0}.swift'.format(key, module_name, project_full_dir, parts[key]) rendered_template = template.render(module_name=module_name, file_type=key, creation_date=today_str, creation_year=year_str, storyboard_name=storyboard_name, project_author=settings['author']) try: output_file = open(filename, 'w') output_file.write(rendered_template) output_file.close() except FileNotFoundError: print(Fore.RED + 'Cannot find file {0}; try to use `swivigen init`'.format( filename)) print(Style.RESET_ALL) sys.exit(0) if key == 'Controller': project_group = project.get_or_create_group( settings['uikit_controllers_group']) else: project_group = project.get_or_create_group('{0}s'.format(key)) __add_to_project(project, filename, project_group, targets) project.save()
def testAddFileNoPath(self): project = XcodeProject(self.obj) build_file = project.add_file(".", tree=None) # no tree or no path cannot be added self.assertIsNone(build_file)
def testAddProjectDoesntExists(self): project = XcodeProject(self.obj) reference_proxies = project.add_project(os.path.abspath("samples/unexistingFile.m")) # nothing to do if the file is absolute but doesn't exist self.assertIsNone(reference_proxies)
def testAddRunScriptAfterCompile(self): project = XcodeProject(self.obj) project.add_run_script(u'ls -la') self.assertEqual(project.objects[project.objects['1'].buildPhases[1]].shellScript, u'ls -la') self.assertEqual(project.objects[project.objects['2'].buildPhases[1]].shellScript, u'ls -la')
def testGetFilesByNameWithoutName(self): project = XcodeProject(self.obj) files = project.get_files_by_name('file1') self.assertEqual(files.__len__(), 2)
#!/usr/bin/env python3 from pbxproj import XcodeProject # open the project project = XcodeProject.load('Vyper.xcodeproj/project.pbxproj') # add a file to it, force=false to not add it if it's already in the project project.add_file('setup.py', force=False) # set a Other Linker Flags project.add_other_ldflags('') # TODO project.add_code_sign('Vyper Compiler[: <Company name> (MAAYFEXXXX)]', 'MAAYFEXXXX', '6f1ffc4d-xxxx-xxxx-xxxx-6dc186280e1e', 'My_provisioning_profile') #EOF project.save()
def testGetFileByPathWithNoTree(self): project = XcodeProject(self.obj) files = project.get_files_by_path('file') self.assertEqual(files.__len__(), 2)
def testGetFileByPathWithTree(self): project = XcodeProject(self.obj) files = project.get_files_by_path('file', TreeType.SDKROOT) self.assertEqual(files.__len__(), 1)
def testAddGroupToParent(self): project = XcodeProject(self.obj) group = project.add_group("my_group", parent=project.objects['1']) self.assertTrue(project.objects['1'].has_child(group))