Skip to content

Commit

Permalink
XCGroup: modification to read and write correctly if the group is a P…
Browse files Browse the repository at this point in the history
…BXVariantGroup
  • Loading branch information
JoelGerboreLaser committed Nov 9, 2016
1 parent 2a56ae1 commit 703c2e4
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 12 deletions.
10 changes: 10 additions & 0 deletions Source/XCGroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@

XCFileOperationQueue* _fileOperationQueue;
XCProject* _project;
XcodeMemberType _memberType;

}

Expand Down Expand Up @@ -77,8 +78,12 @@

+ (XCGroup*)groupWithProject:(XCProject*)project key:(NSString*)key alias:(NSString*)alias path:(NSString*)path children:(NSArray<id<XcodeGroupMember>>*)children;

+ (XCGroup*)groupWithProject:(XCProject*)project key:(NSString*)key alias:(NSString*)alias path:(NSString*)path children:(NSArray<id<XcodeGroupMember>>*)children memberType:(XcodeMemberType)groupType;

- (id)initWithProject:(XCProject*)project key:(NSString*)key alias:(NSString*)alias path:(NSString*)path children:(NSArray<id<XcodeGroupMember>>*)children;

- (id)initWithProject:(XCProject*)project key:(NSString*)key alias:(NSString*)alias path:(NSString*)path children:(NSArray<id<XcodeGroupMember>>*)children memberType:(XcodeMemberType)groupType;

#pragma mark Parent group

- (void)removeFromParentGroup;
Expand Down Expand Up @@ -134,6 +139,11 @@
*/
- (XCGroup*)addGroupWithAlias:(NSString *)alias;

/**
* Adds a _group with an alias to this _group and a particular type (only PBXGroupType and PBXVariantGroupType are valid)
*/
- (XCGroup*)addGroupWithAlias:(NSString *)alias groupType:(XcodeMemberType)type;

/**
* Adds a version group with a path relative to this group.
*/
Expand Down
34 changes: 27 additions & 7 deletions Source/XCGroup.m
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,24 @@ + (XCGroup *)groupWithProject:(XCProject *)project key:(NSString *)key alias:(NS
children:(NSArray *)children
{

return [[XCGroup alloc] initWithProject:project key:key alias:alias path:path children:children];
return [[XCGroup alloc] initWithProject:project key:key alias:alias path:path children:children memberType:PBXGroupType];
}

+ (XCGroup *)groupWithProject:(XCProject *)project key:(NSString *)key alias:(NSString *)alias path:(NSString *)path children:(NSArray<id<XcodeGroupMember>> *)children memberType:(XcodeMemberType)groupType
{
return [[XCGroup alloc]initWithProject:project key:key alias:alias path:path children:children memberType:groupType];
}

//-------------------------------------------------------------------------------------------
#pragma mark - Initialization & Destruction
//-------------------------------------------------------------------------------------------

- (id)initWithProject:(XCProject *)project key:(NSString *)key alias:(NSString *)alias path:(NSString *)path
children:(NSArray *)children
- (id)initWithProject:(XCProject *)project key:(NSString *)key alias:(NSString *)alias path:(NSString *)path children:(NSArray<id<XcodeGroupMember>> *)children memberType:(XcodeMemberType)groupType
{
self = [super init];

assert(groupType == PBXGroupType || groupType == PBXVariantGroupType);

if (self) {
_project = project;
_fileOperationQueue = [_project fileOperationQueue];
Expand All @@ -59,10 +66,18 @@ - (id)initWithProject:(XCProject *)project key:(NSString *)key alias:(NSString *
if (!_children) {
_children = [[NSMutableArray alloc] init];
}

_memberType = groupType;
}
return self;
}

- (id)initWithProject:(XCProject *)project key:(NSString *)key alias:(NSString *)alias path:(NSString *)path
children:(NSArray *)children
{
return [self initWithProject:project key:key alias:alias path:path children:children memberType:PBXGroupType];
}

//-------------------------------------------------------------------------------------------
#pragma mark - Interface Methods
//-------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -276,7 +291,12 @@ - (XCGroup *)addGroupWithPath:(NSString *)path
return group;
}

- (XCGroup*)addGroupWithAlias:(NSString *)alias
- (XCGroup *)addGroupWithAlias:(NSString *)alias
{
return [self addGroupWithAlias:alias groupType:PBXGroupType];
}

- (XCGroup*)addGroupWithAlias:(NSString *)alias groupType:(XcodeMemberType)type
{
NSString *groupKey = [[XCKeyBuilder forItemNamed:alias] build];

Expand All @@ -290,7 +310,7 @@ - (XCGroup*)addGroupWithAlias:(NSString *)alias
}
}

XCGroup *group = [[XCGroup alloc] initWithProject:_project key:groupKey alias:alias path:nil children:nil];
XCGroup *group = [[XCGroup alloc] initWithProject:_project key:groupKey alias:alias path:nil children:nil memberType:type];
NSDictionary *groupDict = [group asDictionary];

[_project objects][groupKey] = groupDict;
Expand Down Expand Up @@ -828,7 +848,7 @@ - (NSDictionary *)makeFileReferenceWithPath:(NSString *)path name:(NSString *)na
- (NSDictionary *)asDictionary
{
NSMutableDictionary *groupData = [NSMutableDictionary dictionary];
groupData[@"isa"] = [NSString xce_stringFromMemberType:PBXGroupType];
groupData[@"isa"] = [NSString xce_stringFromMemberType:_memberType];
groupData[@"sourceTree"] = @"<group>";

if (_alias != nil) {
Expand Down Expand Up @@ -859,4 +879,4 @@ - (void)addSourceFile:(XCSourceFile *)sourceFile toTargets:(NSArray *)targets
}
}

@end
@end
10 changes: 7 additions & 3 deletions Source/XCProject.m
Original file line number Diff line number Diff line change
Expand Up @@ -300,8 +300,12 @@ - (XCGroup *)groupWithPathFromRoot:(NSString *)path

- (XCGroup *)createGroupWithDictionary:(NSDictionary *)dictionary forKey:(NSString *)key
{
return [XCGroup groupWithProject:self key:key alias:[dictionary valueForKey:@"name"]
path:[dictionary valueForKey:@"path"] children:[dictionary valueForKey:@"children"]];
return [XCGroup groupWithProject:self
key:key
alias:[dictionary valueForKey:@"name"]
path:[dictionary valueForKey:@"path"]
children:[dictionary valueForKey:@"children"]
memberType:[[dictionary valueForKey:@"isa"] xce_asMemberType]];
}

//-------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -535,4 +539,4 @@ - (BOOL)doPruneEmptyGroups
return hadEmptyGroups;
}

@end
@end
4 changes: 2 additions & 2 deletions XcodeEditorTests/XCGroupTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ @interface XCFrameworkPath : NSObject
@implementation XCFrameworkPath

static const NSString *SDK_PATH =
@"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk";
@"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk";

+ (NSString *)eventKitUIPath
{
Expand Down Expand Up @@ -488,4 +488,4 @@ - (void)test_allows_deleting_a_group_after_adding_contents
}


@end
@end

0 comments on commit 703c2e4

Please sign in to comment.