Bienvenidos a la tercera y última parte de esta serie de blogposts referentes a cómo construir una "version tag" automatizada mediante git y renderizada a través de un componente de Blade. Tal y como mencionamos en el capítulo anterior, veremos como obtener el hash del commit actual y como convertimos y asignamos su timestamp en formato de fecha.
Empecemos por la obtención del hash. Para ello llamamos al método estático getHash()
definido dentro del propio objeto.
/**
* Gets the hash of the last commit.
*/
private function getHash() : string
{
return trim(file_get_contents($this->branchPath));
}
Dicho método lee el contenido del fichero correspondiente a la rama activa actual haciendo uso del método nativo de PHP file_get_contents(), y como dicho fichero únicamente contiene el hash... pues no se requieren de acciones adicionales (más allá de asegurarnos de eliminar posibles espacios en blanco mediante trim()).
Procedamos ahora a inspeccionar el método setBuildDate(int $timestamp)
, encargado de proporcionar formato al timestamp del commit actual y asignarlo a la propiedad $buildDate
, que contiene la fecha.
Simplemente lo parseamos haciendo uso de la librería Carbon (incluída en el framework Laravel) y le asignamos el formato deseado, en nuestro caso ymd-His
.
/**
* Sets the the last commit date and time.
*/
private function setBuildDate(int $timestamp) : void
{
$this->buildDate = Carbon::parse($timestamp)->format('ymd-His');
}
Ahora, una vez que ya tenemos todas las propiedades de nuestro constructor asignadas, podemos proceder a construir la vista del componente de Blade con la información.
<span class="float-right">
Versión {{ "$versionNumber.$buildNumber#$hash@$branch.$buildDate" }}
</span>
Qué invocamos mediante:
@if (env('APP_DEBUG')
<x-version-label/>
@endif
Y cuyo resultado final es:
[BONUS]: El segmento de la imagen anterior correspondiente a la fecha, da una idea del tiempo que hace que tuve que realizar este desarrollo :D