¿Cómo puedo agregar programáticamente una fase de compilation de scripts de ejecución a un proyecto Xcode?

Me pregunto si es posible agregar una fase de compilation de scripts de ejecución a otro proyecto Xcode desde mi aplicación de utilidad de Mac. Puedo ver lo que ocurre en un proyecto Xcode cuando se agrega un script de ejecución (haciendo un diff), pero no sé cómo agregar de forma segura el equivalente en código.

¿Se supone que debo analizarlo manualmente? ¿Hay documentation o bibliotecas disponibles para esto? Esta sería una function útil si puedo asegurarme de hacerlo de manera segura y correcta. ¡No quiero estropear los proyectos de gente de Xcode!

La solución posiblemente más fácil es agregar una fase de ejecución de script al otro proyecto que define una línea de command que ejecuta un script que reside como un file particular en alguna location conocida.

El primer proyecto puede tener una Fase de ejecución de script o ejecutar un progtwig que crea o modifica este file de secuencia de commands. Cuando se inicia el otro proyecto, comienza la Fase de ejecución de guiones y – voilà – ejecuta lo que se haya definido.

De hecho, decidí agregar un script de ejecución. Resultó ser bastante fácil. Primero, en Xcode, agregue un script de ejecución a su proyecto y observe los cambios a través de la herramienta diff. Hay una adición a la matriz 'buildPhases' (que está anidada bastante profundo en algunos dictionarys arbitrariamente nombrados), y luego la key que se agregó a la matriz 'buildPhases' también se agregó al dictionary 'objects' con un dictionary que representa el formatting real de la fase de compilation del script de ejecución.

Por lo tanto, para replicar esto mediante progtwigción, obtenga los contenidos del file pbxproj en un NSDictionary e iteré a través de los dictionarys buscando la matriz buildPhases. Luego, agrega tu key. Finalmente, agregue un object a la matriz de 'objects' con la key y un dictionary que refleje el formatting en Xcode.

¡Guarde el file en el disco en la misma location y listo! Agregó programáticamente una fase de compilation de scripts de ejecución.