Hacer 'drush make' más robusto

Es tan grande como 'drush make' los peligros de red inestable conectividad puede frustrarlo - una sola descarga fallida de un módulo por un servidor git abajo resultará en una construcción fallida. Además ejecuta 'drush make' en una conexión de wifi menos que estable puede llevar a estructuras frustrantes. Esto sucede sorprendentemente a menudo, especialmente si usted está reconstruyendo con frecuencia como parte de su proceso de CI o entornos de desarrollo transitorio (por ejemplo, si usas vagabundo).

Ayudar con esto y ha añadido tres nuevos parámetros que da drush el poder intentar varias descargas antes de dar para arriba y si no. Además se asegura de drush no reintentar automáticamente, dando el tiempo de problema de conectividad que corregir a sí mismo. Los parámetros nuevos son:

Descargar-intentos - el número de veces a descargar debe ser intentado antes < br / >
descargar-Reintentar-demora-minutos-segundos - el número mínimo de segundos de espera antes de Reintentar una descarga fallida < br / >
descargar-Reintentar-demora-max-segundos - el número máximo de segundos de espera antes de Reintentar una descarga fallida. Después de una descarga fallida drush reintentará un número aleatorio de segundos entre segundos descargar reintentos min demora descargar-Reintentar-demora-max-segundos para prevenir inundaciones de la fuente de descarga.

Implementación de estos cambios era bastante sencillo: drush utiliza una función de estilo patrón de fábrica para determinar que la función 'privada' hará el trabajo real de descarga del archivo en cuestión. En lugar de hacia atrás pasando el resultado de la función 'privado', make_download_factory ahora también incluye la la lógica de reintento, emitiendo un error si el número máximo de intentos de reintentos se alcanza sin una descarga exitosa. El sólo otro trabajo fue refactorizar método de applyPatches de drush make, que llamaba a una de las funciones de 'privado' descargar directamente, por lo que pasó con el método de fábrica para llamar a una nueva función de 'simple' descargar.

La solicitud de extracción es excedente en https://github.com/drush-ops/drush/pull/726/files

Que es de uso, por favor comparta sus comentarios!