diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-05 18:47:59 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-05 18:47:59 +0000 |
commit | 990fcc8cf0ac25cba98a38ef04bd5527fad35ac3 (patch) | |
tree | 4158ed3cbd79180ea3241f1f4daf1d426fe80e8b /tools/xcodebodge | |
parent | 110187521175f10a8bcf522aa763a6fdb286cdc6 (diff) | |
download | chromium_src-990fcc8cf0ac25cba98a38ef04bd5527fad35ac3.zip chromium_src-990fcc8cf0ac25cba98a38ef04bd5527fad35ac3.tar.gz chromium_src-990fcc8cf0ac25cba98a38ef04bd5527fad35ac3.tar.bz2 |
Make xcodebodge even more friendly by making list_native_targets
default command and printing hints about likely next commands.
Review URL: http://codereview.chromium.org/20080
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9230 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools/xcodebodge')
-rwxr-xr-x | tools/xcodebodge/xcodebodge.py | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/tools/xcodebodge/xcodebodge.py b/tools/xcodebodge/xcodebodge.py index 5343fc3..2907d78 100755 --- a/tools/xcodebodge/xcodebodge.py +++ b/tools/xcodebodge/xcodebodge.py @@ -173,7 +173,7 @@ class XcodeProject(object): if section in ('PBXBuildFile', 'PBXFileReference'): content = eval('%s.FromContent(content)' % section) # Multiline sections - elif section in ('PBXGroup', 'PBXVariantGroup', 'PBXProject', + elif section in ('PBXGroup', 'PBXVariantGroup', 'PBXProject', 'PBXNativeTarget', 'PBXSourcesBuildPhase'): # Accumulate lines content_lines = [] @@ -274,7 +274,7 @@ class XcodeProject(object): GroupPathRecurse(group, self.source_root_path) if not self._root_group: raise RuntimeError('XcodeProject failed to find root group by UUID') - + def FileContent(self): """Generate and return the project file content as a list of lines""" content = [] @@ -393,7 +393,7 @@ class XcodeProject(object): def RemoveSourceFileReference(self, file_ref): """Remove a source file's PBXFileReference from the project, cleaning up all - PBXGroup and PBXBuildFile references to that PBXFileReference and + PBXGroup and PBXBuildFile references to that PBXFileReference and furthermore, removing any PBXBuildFiles from all PBXNativeTarget source lists. @@ -477,7 +477,7 @@ class XcodeProject(object): """ needed_path = os.path.dirname(abs_path) possible_groups = [ g for g in self._sections['PBXGroup'] - if g.abs_path == needed_path and + if g.abs_path == needed_path and not g.name in NON_SOURCE_GROUP_NAMES ] if len(possible_groups) < 1: return None @@ -509,7 +509,7 @@ class XcodeProject(object): return groups_with_source[0] else: return possible_groups[0] - + def AddSourceFile(self, path): """Add a source file to the project, attempting to position it in the GUI group heirarchy reasonably. @@ -683,7 +683,7 @@ class PBXBuildFile(object): if parsed.group(2) != parsed.group(5): raise RuntimeError('PBXBuildFile name mismatch "%s" vs "%s"' % (parsed.group(2), parsed.group(5))) - if not parsed.group(3) in ('Sources', 'Frameworks', + if not parsed.group(3) in ('Sources', 'Frameworks', 'Resources', 'CopyFiles', 'Headers', 'Copy Into Framework', 'Rez', 'Copy Generated Headers'): @@ -752,7 +752,7 @@ class PBXFileReference(object): last_known_type, explicit_type, path_parsed.group(1), tree_parsed.group(1), content_line) - def __init__(self, uuid, name, last_known_file_type, explicit_file_type, + def __init__(self, uuid, name, last_known_file_type, explicit_file_type, path, source_tree, raw_line): self.uuid = uuid self.name = name @@ -886,7 +886,7 @@ class PBXGroup(object): self.child_uuids = child_uuids self.child_names = child_names self.abs_path = None - # Semantically I'm not sure these aren't an error, but they + # Semantically I'm not sure these aren't an error, but they # appear in some projects self._tab_width = tab_width self._uses_tabs = uses_tabs @@ -939,15 +939,15 @@ class PBXGroup(object): '%s' \ '%s' \ '\t\t};\n' % ( - self.uuid, header_comment, + self.uuid, header_comment, self.__class__.__name__, - children, + children, indent_width_attribute, name_attribute, path_attribute, self.source_tree, tab_width_attribute, uses_tabs_attribute) - - + + class PBXVariantGroup(PBXGroup): pass @@ -1159,14 +1159,9 @@ def Main(): project = XcodeProject(project_path) # Switch on command - if len(args) < 1: - Usage(option_parser) - # List native target names - elif args[0] == 'list_native_targets': - # List targets - if len(args) != 1: - option_parser.error('list_native_targets takes no arguments') + # List native target names (default command) + if len(args) < 1 or args[0] == 'list_native_targets': # Ape xcodebuild output target_names = [] for target in project.NativeTargets(): @@ -1175,6 +1170,13 @@ def Main(): project.name, '\n '.join(target_names)) + if len(args) < 1: + # Be friendly and print some hints for further actions. + print + print 'To add or remove files from given target, run:' + print '\txcodebodge.py -p <project> -t <target> add_source <file_name>' + print '\txcodebodge.py -p <project> -t <target> remove_source <file_name>' + # List files in a native target elif args[0] == 'list_target_sources': if len(args) != 1: @@ -1257,13 +1259,13 @@ def Main(): if source_ref.file_type in SOURCES_XCODE_FILETYPES: project.AddSourceFileToSourcesBuildPhase(source_ref, sources_phase) project.Update() - + # Private sanity check. On an unmodified project make sure our output is # the same as the input elif args[0] == 'parse_sanity': if ''.join(project.FileContent()) != ''.join(project._raw_content): option_parser.error('Project rewrite sanity fail "%s"' % project.path) - + else: Usage(option_parser) |