¿Hay alguna manera de solicitar al usuario la entrada durante una compilación NAnt? Quiero ejecutar un comando que tenga una contraseña, pero no quiero poner la contraseña en el script de compilación.Manejo de contraseñas en la secuencia de comandos de compilación NAnt
Respuesta
estoy usando un script por ahora, pero me gustaría saber si hay un método de pre-compilados ya disponibles. Muchas gracias a Sundar por el truco de ForegroundColor.
No estoy seguro si importa si usa Project.Log o vaya directo a Console.WriteLine(), cualquier ninja de NAnt quiere educarme?
Aquí está el guión y un blanco de muestra que lo utiliza:
<target name="input">
<script language="C#" prefix="password" >
<code><![CDATA[
[Function("ask")]
public string AskPassword(string prompt) {
Project.Log(Level.Info, prompt);
ConsoleColor oldColor = Console.ForegroundColor;
Console.ForegroundColor = Console.BackgroundColor;
try
{
return Console.ReadLine();
}
finally
{
Console.ForegroundColor = oldColor;
}
}
]]></code>
</script>
<echo message="Password is ${password::ask('What is the password?')}"/>
</target>
Una solución que he usado muchas veces es tener un local archivo de configuración que contiene cosas tales como contraseñas, cadenas de conexión, etc. que son específicas de cada desarrollador. El script de compilación NAnt incluirá estas configuraciones al compilar.
El archivo de configuración local no existe en el sistema de control de versiones, por lo que las contraseñas no se exponen. La primera vez que un desarrollador comprueba una base de código e intenta crearla, debe crear este archivo de configuración. Para hacerlo más fácil, podría haber un archivo de plantilla disponible como my.config.template que contenga todas las propiedades que se pueden personalizar.
Prueba esto:
<script language="C#" prefix="test" >
<code>
<![CDATA[
[Function("get-password")]
public static string GetPassword() {
Console.WriteLine("Please enter the password");
ConsoleColor oldForegroundColor = Console.ForegroundColor;
Console.ForegroundColor = Console.BackgroundColor;
string password = Console.ReadLine();
Console.ForegroundColor = oldForegroundColor;
return password;
}
]]>
</code>
</script>
<target name="test.password">
<echo message='${test::get-password()}'/>
</target>
-->
Estaba experimentando con algo similar, ¡pero cambiar el ForegroundColor es una gran idea! –
Esto muestra asteriscos a medida que escribe la contraseña:
<code><![CDATA[
[Function("ask")]
public string AskPassword(string prompt) {
Project.Log(Level.Info, prompt);
string password = "";
// get the first character of the password
ConsoleKeyInfo nextKey = Console.ReadKey(true);
while (nextKey.Key != ConsoleKey.Enter)
{
if (nextKey.Key == ConsoleKey.Backspace)
{
if (password.Length > 0)
{
password = password.Substring(0, password.Length - 1);
// erase the last * as well
Console.Write(nextKey.KeyChar);
Console.Write(" ");
Console.Write(nextKey.KeyChar);
}
}
else
{
password += nextKey.KeyChar;
Console.Write("*");
}
nextKey = Console.ReadKey(true);
}
Console.WriteLine();
return password;
}
]]></code>
- 1. ¿Cómo paso 2 parámetros a la secuencia de comandos Nant?
- 2. El uso de xmlpeek en la secuencia de comandos de Nant da un error impar
- 3. Establecer variables de entorno global dentro de la secuencia de compilación Xcode ejecutar secuencia de comandos
- 4. ¿Mejores prácticas de manejo de contraseñas?
- 5. ¿Cómo copiar un directorio con todo el contenido usando la secuencia de comandos nant?
- 6. Pasando el valor de la secuencia de comandos PHP a la secuencia de comandos de Python
- 7. Manejo con la secuencia de archivos temporales
- 8. La secuencia de comandos PHP no puede obtenerse desde la secuencia de comandos de Python
- 9. ¿Asincronizar la secuencia de comandos de vim?
- 10. MSBuild en una secuencia de comandos Powershell - ¿Cómo puedo saber si la compilación tuvo éxito?
- 11. Secuencia de comandos de inicio en EC2
- 12. Argumento booleano para la secuencia de comandos
- 13. Manejo de secuencia vacía en la función XSLT
- 14. secuencia de comandos ajax independiente
- 15. Programar secuencia de comandos R
- 16. Cómo detener la ejecución de la tarea nant exe() alrededor de la línea de comandos
- 17. entorno RoR en la secuencia de comandos independiente de Ruby
- 18. En la secuencia de comandos de Python, ¿cómo configuro PYTHONPATH?
- 19. iframe indefinido en la secuencia de comandos de Greasemonkey
- 20. URL de la secuencia de comandos actual en JavaScript
- 21. Cifrado de la secuencia de comandos R en MS-Windows
- 22. Error al manejar en una secuencia de comandos de Oracle
- 23. secuencia de comandos OpenLayers disponible en CDN?
- 24. Cómo conectar la ranura PyQt de la secuencia de fondo a la secuencia de comandos
- 25. ¿Funciona correctamente mi secuencia de comandos de compilación para orientar varios marcos de destino?
- 26. Manejo 'La secuencia no tiene elementos' Excepción
- 27. Incrustar require.js en secuencia de comandos optimizada
- 28. Invocar una segunda secuencia de comandos con argumentos de una secuencia de comandos
- 29. Ventajas de usar MSBuild o NAnt versus ejecutar DevEnv.exe desde la línea de comandos
- 30. recomendación para la secuencia de comandos de la galería
que consideró que, pero parece más trabajo de lo necesario para cada desarrollador. Si termino con varias configuraciones, podría cambiar a eso. –
Esto es algo que solo tendrás que hacer una vez cuando construyas por primera vez. Preferiría que en vez de tener que ingresar una contraseña cada vez que quiera construir. –