2011-01-20 9 views
9

Tengo algunos problemas para copiar carpetas en proyectos XCode con AppleScript. Sin Applescript, arrastro la carpeta a Xcode.applescript para copiar carpetas en Xcode?

He utilizado un controlador de Applescript similar, como el que se muestra a continuación, para copiar bibliotecas en XCode usando "wrapper.library" para el tipo de archivo. A continuación, estoy usando "wrapper.folder" para intentar copiar una carpeta en XCode y no está funcionando.

on addFolder(fname, fpath) 
    tell application "Xcode" 
    tell project "Unity-iPhone" 
    set my_targets to targets 
    set s_target to item 1 of my_targets 
    set compile_phase to compile sources phase of s_target 
    set link_phase to get link binary with libraries phase of s_target 
    tell root group 
    set a to make new file reference with properties {full path:fpath & fname, name:fname, file type:"wrapper.folder"} 
    add a to link_phase 
    end tell 
    end tell 
    end tell 
    end addFolder 

¿Alguien tiene alguna idea de lo que me falta o cómo escribir un AppleScript para copiar una carpeta en XCode?

+0

Tengo curiosidad por saber cómo resolvió este problema ... –

+0

Este complemento Xcode podría ayudar: https://github.com/larsxschneider/Xcode-Scripting-Interface –

+1

Nunca he encontrado una solución, excepto para mover las carpetas de forma manual. Sé que se puede hacer porque he utilizado AppleScript compilados que pueden mover carpetas. –

Respuesta

1

Se está trabajando para mí:

--this is for xcode 3.x 
tell application "Xcode" 
    tell active project document 
     tell root group 
      --Note: Large folders make it seems that the script is hanging. Give it some time to list all items in the given folder. 
      make new file reference with properties {name:"My Desktop Folder", full path:(POSIX path of (path to desktop folder)), file type:"wrapper.folder"} 
     end tell 
    end tell 
end tell 

El código para Xcode 4 es un poco diferente

--this is for Xcode 4.x 
tell application "Xcode" 
    tell project 1 
     tell root group 
      --Note: big folders make it seems that the application (not the script like in Xcode 3) is hanging. Give it some time to list all items in the given folder. 
      make new file reference with properties {name:"My Desktop Folder", full path:(POSIX path of (path to desktop folder)), file kind:"folder"} 
     end tell 
    end tell 
end tell 

La opción 'copiar a la carpeta de destino si es necesario' simplemente copiar los archivos al proyecto (si aún no están allí) y luego haga una referencia de archivo a los archivos copiados en lugar de los archivos originales. Puede hacer lo mismo con el Finder o un comando de shell como cp o ditto, y luego hacer una referencia a los archivos copiados. Entonces no usaría la ruta completa sino las rutas relativas en su lugar. Con las rutas relativas moviendo el proyecto a otra carpeta no le dará ningún problema.

+0

Interesante. Esto agrega una referencia de archivo de carpeta al proyecto. (Tenga en cuenta que el icono de la carpeta es azul, no amarillo.) Sin embargo, estos archivos no se agregan a la fase de compilación o copia del proyecto. – ThomasW

Cuestiones relacionadas