git.class.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. /**
  3. * Classe git
  4. *
  5. * Cette classe fournit des méthodes pour interagir avec Git, telles que la récupération
  6. * des informations de commit, de branche et l'affichage des versions.
  7. */
  8. class git
  9. {
  10. /**
  11. * Vérifie si une chaîne contient une erreur Git.
  12. *
  13. * @param string|null $_string Chaîne à vérifier (facultatif).
  14. * @return bool Retourne TRUE si aucune erreur n'est détectée, FALSE sinon.
  15. */
  16. public static function checkError(?string $_string = NULL){
  17. $return = NULL;
  18. if($_string != NULL){
  19. if(strpos($_string, '-// SUCCESS //-') === TRUE){
  20. $return = TRUE;
  21. } else {
  22. return FALSE;
  23. }
  24. return $return;
  25. } else {
  26. return TRUE;
  27. }
  28. }
  29. /**
  30. * Récupère le hash du dernier commit pour une cible donnée.
  31. *
  32. * @param string|null $_target Cible Git (par défaut HEAD).
  33. * @return string Retourne les 10 premiers caractères du hash du commit.
  34. */
  35. public static function getCommitHash($_target = NULL){
  36. if($_target == NULL){
  37. $target = "HEAD";
  38. } else {
  39. $target = "origin/".$_target;
  40. }
  41. return substr(trim(exec('git log --pretty="%H" -n1 ' . $target)), 0, 10);
  42. }
  43. /**
  44. * Récupère la date du dernier commit pour une cible donnée.
  45. *
  46. * @param string|null $_target Cible Git (par défaut HEAD).
  47. * @return string Retourne la date du commit formatée (d/m/Y à H:i:s).
  48. */
  49. public static function getCommitDate($_target = NULL){
  50. if($_target == NULL){
  51. $target = "HEAD";
  52. } else {
  53. $target = "origin/".$_target;
  54. }
  55. $commitDate = new \DateTime(trim(exec('git log -n1 --pretty=%ci ' . $target)));
  56. $commitDate->setTimezone(new \DateTimeZone('Europe/Paris'));
  57. return $commitDate->format('d/m/Y à H:i:s');
  58. }
  59. /**
  60. * Récupère l'auteur du dernier commit pour une cible donnée.
  61. *
  62. * @param string|null $_target Cible Git (par défaut HEAD).
  63. * @return string Retourne le nom de l'auteur du commit.
  64. */
  65. public static function getCommitAuthor($_target = NULL){
  66. if($_target == NULL){
  67. $target = "HEAD";
  68. } else {
  69. $target = "origin/".$_target;
  70. }
  71. return exec('git log --pretty="%cn" -n1 ' . $target);
  72. }
  73. /**
  74. * Récupère le message du dernier commit pour une cible donnée.
  75. *
  76. * @param string|null $_target Cible Git (par défaut HEAD).
  77. * @return string Retourne le message du commit.
  78. */
  79. public static function getCommitName($_target = NULL){
  80. if($_target == NULL){
  81. $target = "HEAD";
  82. } else {
  83. $target = "origin/".$_target;
  84. }
  85. return exec('git log --pretty="%s" -n1 ' . $target);
  86. }
  87. /**
  88. * Récupère le nom de la branche actuelle ou d'une cible donnée.
  89. *
  90. * @param string|null $_target Cible Git (facultatif).
  91. * @return string Retourne le nom de la branche.
  92. */
  93. public static function getBranchName($_target = NULL){
  94. if($_target == NULL){
  95. return exec('git rev-parse --abbrev-ref HEAD');
  96. } else {
  97. return $_target;
  98. }
  99. }
  100. /**
  101. * Affiche les informations de version pour une cible donnée.
  102. *
  103. * @param string|null $_target Cible Git (facultatif).
  104. * @return void
  105. */
  106. public static function printVersion($_target = NULL){
  107. echo sprintf(
  108. '<h6>%s <span class="badge bg-info">%s</span> <span class="badge bg-success">%s</span></h6>
  109. <code>%s</code>
  110. <div class="media-body pb-3 mb-0 small lh-125">Le %s</div>',
  111. self::getCommitAuthor($_target),
  112. self::getBranchName($_target),
  113. self::getCommitHash($_target),
  114. self::getCommitName($_target),
  115. self::getCommitDate($_target)
  116. );
  117. }
  118. }