Me gustaría poder reemplazar una variable de plantilla ('$ (SOFTWARE_VERSION)') al instalar algunos scripts de python desde scons. ¿Los scon ya tienen esa funcionalidad? Si no, ¿cuál es la mejor manera de engancharme al proceso de instalación de scons para poder hacerlo durante la instalación?¿Cómo puedo obtener SCons para reemplazar texto en los archivos de texto instalados?
Respuesta
Puede definir un generador que toma el archivo de plantilla como una entrada y produce los datos sustituidos como salida. La forma más flexible es usar una función de Python como la Acción de su constructor. De esta forma, puede usar el soporte de expresiones regulares enriquecido de Python para realizar la sustitución. En cuanto a las variables y sus valores, puede acceder a las variables de construcción desde el argumento "env" hasta la función. Si todas las variables son variables de construcción, puede usar env.subst() para realizar la búsqueda y reemplazarla por usted.
Alternativamente, si se trata de una opción única, simplemente puede usar un comando que se desvanece en "sed" o un programa similar y hace todo el trabajo por usted.
Puede usar el método Substfile
. Esto toma un archivo de entrada y produce un archivo de salida sustituyendo variables marcadas. Así que si usted tiene script.py.in
:
#!/usr/bin/python
print "$SOFTWARE_VERSION"
continuación, puede utilizar el siguiente archivo de SConsctruct para generar una salida:
env = Environment(tools=['textfile'])
script_dict = {'\$SOFTWARE_VERSION': '1.0'}
env.Substfile('script.py.in', SUBST_DICT = script_dict)
Es necesario para escapar de la $
en la cadena '\$SOFTWARE_VERSION'
de otra manera SCons lo interpreta como una interna Variable ambiental. El resultado sería un archivo script.py
con el siguiente contenido:
#!/usr/bin/python
print "1.0"
Luego, puede instalar este archivo sustituido resultante utilizando env.Install
.
- 1. Reemplazar texto en XamlPackage
- 2. Cómo reemplazar el texto predeterminado en MATLAB
- 3. Reemplazar texto en el código VBA de archivos de Excel
- 4. Eclipse ¿Reemplazar texto en todas las clases?
- 5. cómo usar sed para reemplazar texto en subcarpetas
- 6. ¿Puede reemplazar texto en archivos dentro de jar/ear/war?
- 7. Jquery - reemplazar texto en Val()
- 8. AutoHotKey: texto instantáneo reemplazar
- 9. jQuery reemplazar texto marcado
- 10. XCode - texto de búsqueda en todos los archivos
- 11. Reemplazar el texto seleccionado en el área de texto
- 12. ¿Cómo leer archivos de texto en Android?
- 13. SCons: guardar/redirigir salida de texto gcc (advertencias)
- 14. Java: PDI de Apache: ¿Puedo obtener un texto limpio de los archivos de MS Word (.doc)?
- 15. ¿Cómo obtener texto de EditText?
- 16. BASH: programa recursivo para reemplazar texto en un árbol de archivos
- 17. ¿Cómo puedo obtener el texto dinámico de ToggleButton en Android?
- 18. Jquery: buscar y reemplazar texto
- 19. Buscar y reemplazar texto en todos los archivos de un directorio de Linux
- 20. JFileChooser para abrir archivos de texto múltiple
- 21. ¿Cómo comparar dos archivos de texto para el mismo texto exacto usando BASH?
- 22. MVVM- ¿Cómo puedo seleccionar texto en un cuadro de texto?
- 23. reemplazar el texto seleccionado en contenteditable div
- 24. ¿Cómo puedo obtener las frases más populares de mucho texto?
- 25. copia vim y reemplazar texto
- 26. En scons, ¿cómo puedo inyectar un objetivo para construir?
- 27. cómo obtener texto de ruta de CMFCEditBrowseCtrl?
- 28. ¿Puedo actualizar automáticamente los archivos msg en los archivos .po de gettext para cambios de texto triviales?
- 29. SCons depende de los archivos generados en tiempo de compilación
- 30. Obtener texto seleccionado en un cuadro de texto