Para poner en marcha un sistema de integración continua, Hudson, escribí un script bash para crear el proyecto Xcode automáticamente. Además, en la configuración de depuración, me fue solicitado insertar el número de revisión svn del proyecto en el campo CFBundleRevision del archivo PROJECT-Info.plist como $ {BUNDLE_VERSION} .r $ {SVN_REVISION}.Script Bash para editar el campo CFBundleVersion del archivo PROJECT-Info.plist
Encontrará el código fuente del archivo de proyecto-Info.plist a continuación:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
[...]
<key>CFBundleVersion</key>
<string>1.0</string>
[...]
</dict>
</plist>
probé este script bash a continuación:
sed 'N;s_^.*<key>CFBundleVersion</key>.*<string>[0-9][0-9]*\.[0-9][0-9]*</string>$_<key>CFBundleVersion</key>\
<string>'"$BUNDLE_VERSION"'\.r'"$SVN_REVISION"'</string>_' $PROJECT-Info.plist
Este script debe reemplazar la cadena "1.0" con $ {BUNDLE_VERSION} .r $ {SVN_REVISION} (solo en salida estándar actualmente). Sin embargo, el reemplazo funciona sin la opción 'N' que incluye la siguiente línea en el proceso sed y para una línea a la vez. Pero hay muchas líneas con la cadena "<string>[...]</string>
" en el archivo PROJECT-Info.plist ...
Creo que es mi forma de procesar los caracteres desconocidos entre las dos líneas (opción 'N' y ". *" Para cualquier personaje) es incorrecto.
¿Alguna idea?
Gracias de antemano y disculpas por mi mal nivel en inglés.
Es necesario utilizar una herramienta XML adecuada tal como Python o Perl módulo que está diseñado con el propósito de manipular las claves y valores en un archivo XML. También hay utilidades shell disponibles como xmlstarlet. [Regexes no están a la altura del desafío] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454). Por cierto, tu inglés es casi perfecto. –
Gracias por la solución de utilidad de shell [xmlstarlet] (http://xmlstar.sourceforge.net/). Lo descargué e instalé. Lo probaré mañana y te daré mi opinión. –