Giter VIP home page Giter VIP logo

Comments (12)

jasperblues avatar jasperblues commented on July 21, 2024

I think not currently, though it should be very simple to support.

from xcodeeditor.

iziz avatar iziz commented on July 21, 2024

I was edited in XCGroup
But fail in XCTarget addMember (invalid path)
Could you give me some help ?

- (void)addSourceFile:(XCSourceFileDefinition*)sourceFileDefinition withPath:(NSString*)targetPath
{
    [self makeGroupMemberWithName:[sourceFileDefinition sourceFileName] contents:[sourceFileDefinition data]
                             type:[sourceFileDefinition type] fileOperationStyle:[sourceFileDefinition fileOperationStyle]
                         withPath:targetPath];
    [[_project objects] setObject:[self asDictionary] forKey:_key];
}

- (void)makeGroupMemberWithName:(NSString*)name contents:(id)contents type:(XcodeSourceFileType)type
             fileOperationStyle:(XcodeFileOperationStyle)fileOperationStyle
                       withPath:(NSString*)targetPath
{
    NSString* filePath;
    XCSourceFile* currentSourceFile = (XCSourceFile*) [self memberWithDisplayName:name];
    if ((currentSourceFile) == nil)
    {
        NSDictionary* reference = [self makeFileReferenceWithPath:name
                                                             name:nil type:type];
        NSString* fileKey = [[XCKeyBuilder forItemNamed:[NSString stringWithFormat:@"%@/%@", targetPath, name]] build];

        [[_project objects] setObject:reference forKey:fileKey];
        [self addMemberWithKey:fileKey];
    }

    filePath = targetPath;

    BOOL writeFile = NO;
    if (fileOperationStyle == FileOperationStyleOverwrite)
    {
        writeFile = YES;
        [_fileOperationQueue fileWithName:name existsInProjectDirectory:filePath];
    }
    else if (fileOperationStyle == FileOperationStyleAcceptExisting &&
             ![_fileOperationQueue fileWithName:name existsInProjectDirectory:filePath])
    {
        writeFile = YES;
    }

    if (writeFile)
    {
        if ([contents isKindOfClass:[NSString class]])
        {
            [_fileOperationQueue queueTextFile:name inDirectory:filePath withContents:contents];
        }
        else
        {
            [_fileOperationQueue queueDataFile:name inDirectory:filePath withContents:contents];
        }
    }
}

from xcodeeditor.

jasperblues avatar jasperblues commented on July 21, 2024

There's a different flag for relative vs absolute file paths.

  • Try creating an absolute file in Xcode. . open the project.pbxproj and take a look.

from xcodeeditor.

iziz avatar iziz commented on July 21, 2024

Ah, I did not want to add with absolute path. (sorry didn't mentioned that before)
I tried to add with relative path.

Anyways, Thank for your answer.

from xcodeeditor.

jasperblues avatar jasperblues commented on July 21, 2024

Did you try running all of the tests? There's a sample project that gets unpacked into /tmp

You can observe the updates there by opening that project in Xcode.

  • Currently you can add a source- file by specifying the contents of the file.
  • To use an existing file on the disk, and adding it into the project is not really supported, unless you put the file in the correct place.
  • You could read the file from disk and set it as the argument to XcodeEditor.

from xcodeeditor.

iziz avatar iziz commented on July 21, 2024

Yes. I think it need support for

path = IZIZ/TIimaveView.m; 

or

path = ../IZIZ/TIimaveView.m; 

or

path = II/ZZ/TIimaveView.m; 

instead of

path = TIimaveView.m; 

in

FD88D16718ACA2EE00B74C6D /* TIimaveView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TIimaveView.m; path = IZIZ/TIimaveView.m; sourceTree = "<group>";

from xcodeeditor.

jasperblues avatar jasperblues commented on July 21, 2024

Its possible to add the source with a specific path, if you create groups as needed as you go. Will this work for you?

from xcodeeditor.

iziz avatar iziz commented on July 21, 2024

Sorry for late ACK
I'm using below with edited XCGroup file

NSString *projectName = @"RestInPeace";
NSString *workingRoot = @(getenv("WORKING_SRC_ROOT"));

unsigned long startPosition = workingRoot.length - projectName.length;

NSRange replacementRange = NSMakeRange(startPosition, projectName.length);
NSString *targetProjectFile = [workingRoot stringByReplacingCharactersInRange:replacementRange
                                                                   withString:TARGET_PROJECT];

XCProject *project = [[XCProject alloc] initWithFilePath:targetProjectFile];
XCGroup *currentTargetGroup = [project groupWithPathFromRoot:targetGroup];

XCSourceFileDefinition *newSourceFile =
    [[XCSourceFileDefinition alloc] initWithName:fileName text:content type:sourceType];

[newSourceFile setFileOperationType:XCFileOperationTypeOverwrite];
[currentTargetGroup addSourceFile:newSourceFile withPath:TARGET_NAME];

if (shouldAddToTarget) {
    XCSourceFile *sourceFile = [project fileWithName:fileName];
    XCTarget *targetObj = [project targetWithName:TARGET_NAME];
    [targetObj addMember:sourceFile];

    XCTarget *targetObjDev = [project targetWithName:TARGET_NAME_DEV];
    [targetObjDev addMember:sourceFile];
}

XCGroup.h

- (void)addSourceFile:(XCSourceFileDefinition*)sourceFileDefinition withPath:(NSString*)pathPrefix;

XCGroup.m

- (void)makeGroupMemberWithName:(NSString*)name contents:(id)contents type:(XcodeSourceFileType)type
             fileOperationStyle:(XCFileOperationType)fileOperationStyle withPath:(NSString*)targetPath
...
- (void)addSourceFile:(XCSourceFileDefinition*)sourceFileDefinition withPath:(NSString*)pathPrefix
{
    [self makeGroupMemberWithName:[sourceFileDefinition sourceFileName] contents:[sourceFileDefinition data]
                             type:[sourceFileDefinition type] fileOperationStyle:[sourceFileDefinition fileOperationType]
                         withPath:targetPath];
    ....
}

from xcodeeditor.

jasperblues avatar jasperblues commented on July 21, 2024

You mean its working OK for you now?

What is the edit? Something you went merged into the main XcodeEditor branch?

from xcodeeditor.

iziz avatar iziz commented on July 21, 2024

Yep! OK
I will create merge request~

from xcodeeditor.

jasperblues avatar jasperblues commented on July 21, 2024

Ok, glad to hear it's working for you now.

from xcodeeditor.

abhisheksaatal avatar abhisheksaatal commented on July 21, 2024

Hi iziz/jasper,

I am not able to find this api with the parameter withPath,
is it available in some other branch?

[group addSourceFile:newSourceFile withPath:TARGET_NAME];

from xcodeeditor.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.