Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.87 KB | None | 0 0
  1. <?php
  2.  
  3. if(empty($argv[1]))
  4. {
  5.     echo "Merci d'entrer une commande MyGitLight. Tapez la commande 'help' si vous avez besoin d'aide.".PHP_EOL;
  6. }
  7.  
  8. elseif ($argv[1] == "init")
  9. {
  10.   if(substr($argv[2], -1, 1) !== "/")
  11.   {
  12.       $argv[2] .= "/";
  13.   }
  14.   if(is_dir($argv[2]) == true)
  15.   {
  16.     if(is_writable($argv[2]) == true)
  17.     {
  18.           if(is_dir($argv[2].".MyGitLight") == false)
  19.           {
  20.             mkdir($argv[2].".MyGitLight");
  21.             $file = file_get_contents("MyGitLight.php");
  22.             $newFile = fopen($argv[2]."/.MyGitLight/MyGitLight.php", "w+");
  23.             fwrite($newFile, $file);
  24.             mkdir($argv[2]."/.MyGitLight/add");
  25.             mkdir($argv[2]."/.MyGitLight/log");
  26.           }
  27.           else
  28.           {
  29.               echo "this fodler already has a myGitLight".PHP_EOL;
  30.           }
  31.     }
  32.     else
  33.     {
  34.         echo "could not access folder: bad permissions".PHP_EOL;
  35.     }
  36.   }
  37.   else
  38.   {
  39.       echo "could not access ".$argv[2].PHP_EOL;
  40.   }
  41. }
  42.  
  43. elseif($argv[1] == "add")
  44. {
  45.   if($argv[2] == NULL)
  46.   {
  47.       $src = __DIR__;
  48.       $dest = __DIR__."/.MyGitLight/add";
  49.       system("rsync -av --progress --exclude '.MyGitLight' $src $dest");
  50.   }
  51.   else
  52.   {
  53.     $count = count($argv);
  54.     for($i = 2; $i < $count; $i++)
  55.     {
  56.         if(is_file($argv[$i]))
  57.         {
  58.             $src = $argv[$i];
  59.             $dest = __DIR__."/.MyGitLight/add";
  60.             system("rsync --progress $src $dest");
  61.         }
  62.         else
  63.         {
  64.           $handle = opendir($argv[$i]);
  65.           while ($entry = readdir($handle))
  66.           {
  67.               $valeur = file_get_contents("$argv[$i]/$entry", FILE_USE_INCLUDE_PATH);
  68.               $src = $argv[$i];
  69.               $dest = __DIR__."/.MyGitLight/add/".$dir;
  70.               system("rsync -av --progress --exclude '.MyGitLight' $src $dest");
  71.           }
  72.         }
  73.     }
  74.   }
  75. }
  76.  
  77. elseif($argv[1] == "commit")
  78. {
  79.     $dir = "./.MyGitLight/add/";
  80.     $files = scandir($dir);
  81.  
  82.     static $id=0;
  83.     $id++;
  84.  
  85.     $count = count($files);
  86.     $str = "";
  87.     for ($i=1; $i < $count; $i++)
  88.     {
  89.       if (is_file($files[$i]))
  90.       {
  91.         $valeur = file_get_contents($files[$i]);
  92.         $str = $str . $files[$i] . "[name]" . $valeur . "**";
  93.       }
  94.  
  95.       elseif (is_dir($files[$i]) && $files[$i] != "." && $files[$i] != "..")
  96.       {
  97.         $handle = opendir($files[$i]);
  98.         while ($entry = readdir($handle))
  99.         {
  100.           if ($entry != "." && $entry != ".." && is_file("$files[$i]/$entry"))
  101.           {
  102.             $valeeur = file_get_contents("$files[$i]/$entry", FILE_USE_INCLUDE_PATH);
  103.             $str = $str . $files[$i] . "[dossier]" . $entry . "[nameDir]" . $valeeur . "**";
  104.           }
  105.         }
  106.       }
  107.     }
  108.     file_put_contents(__DIR__."/.MyGitLight/log/"."[$id] $argv[2].mytar", $str);
  109. }
  110.  
  111. elseif($argv[1] == "rm")
  112. {
  113.     for($i = 2; $i < count($argv); $i++)
  114.     {
  115.         if(file_exists(__DIR__."/".$argv[$i]) == true && file_exists(__DIR__."/.MyGitLight/add/".$argv[$i]) == true)
  116.         {
  117.             if(is_dir(__DIR__."/".$argv[$i]) == true && is_dir(__DIR__."/.MyGitLight/add/".$argv[$i]) == true)
  118.             {
  119.               system("rm -rf $argv[$i]");
  120.               system("rm -rf ".escapeshellarg(__DIR__."/.MyGitLight/add/".$argv[$i]));
  121.             }
  122.             else
  123.             {
  124.             unlink($argv[$i]);
  125.             unlink(__DIR__."/.MyGitLight/add/".$argv[$i]);
  126.             }
  127.         }
  128.     }
  129. }
  130.  
  131. elseif($argv[1] == "log")
  132. {
  133.     $files = system("ls -l ./.MyGitLight/log");
  134.     echo $files.PHP_EOL;
  135. }
  136.  
  137. elseif($argv[1] == "help")
  138. {
  139.   function recu()
  140.   {
  141.       echo "Merci d'entrer le nom de la commande pour laquelle vous avez besoin d'aide (init, add, commit, rm, log ou exit pour quitter le manuel d'aide) :".PHP_EOL;
  142.       $handle = fopen("php://stdin", "r");
  143.       $var1 = trim(fgets($handle));
  144.       $var1 = explode(" ", $var1);
  145.       $var2 = $var1[0];
  146.           if($var1[0] == "init")
  147.           {
  148.               echo "\033[1m" . "NOM" . "\033[0m".PHP_EOL;
  149.               echo "        init - Permet de créer une copie du code source du programme executable dans un dossier .MyGitLight.".PHP_EOL.PHP_EOL;
  150.               echo "\033[1m" . "UTILISATION" . "\033[0m".PHP_EOL;
  151.               echo "        init C - C est le chemin d'accès pour déposer la copie du programme dans son dossier .MyGitLight.".PHP_EOL.PHP_EOL;
  152.               recu();
  153.           }
  154.           elseif($var1[0] == "add")
  155.           {
  156.             echo "\033[1m" . "NOM" . "\033[0m".PHP_EOL;
  157.             echo "        add - Permet de copier le repertoire courant si utilisé sans argument ou plusieurs fichiers/dossiers passés en argument dans le dossier '.MyGitLight/add'.".PHP_EOL.PHP_EOL;
  158.             echo "\033[1m" . "UTILISATION (pas encore implémenté)" . "\033[0m".PHP_EOL;
  159.             echo "        add F - F est le nom du fichier/dossier à copier. Il peut être suivi par d'autre nom de fichier/dossier.".PHP_EOL.PHP_EOL;
  160.             recu();
  161.           }
  162.           elseif($var1[0] == "commit")
  163.           {
  164.             echo "\033[1m" . "NOM" . "\033[0m".PHP_EOL;
  165.             echo "        commit - Permet de créer une tarball de tous les fichiers/dossiers présents dans le dossier '.MyGitLight/add' qui sera stocké dans le dossier '.MyGitLight/log'.".PHP_EOL.PHP_EOL;
  166.             echo "\033[1m" . "UTILISATION (pas encore implémenté)" . "\033[0m".PHP_EOL;
  167.             echo "        comit M - M correspond au nom souhaité pour la création de la tarball.".PHP_EOL.PHP_EOL;
  168.             recu();
  169.           }
  170.           elseif($var1[0] == "rm")
  171.           {
  172.             echo "\033[1m" . "NOM" . "\033[0m".PHP_EOL;
  173.             echo "        rm - Permet de supprimer des fichiers/dossiers passés en argument s'ils sont présents dans le dossier de suivi de la commande add et dans le répertoire de travail.".PHP_EOL.PHP_EOL;
  174.             echo "\033[1m" . "UTILISATION" . "\033[0m".PHP_EOL;
  175.             echo "        rm F - F est le nom du fichier/dossier à supprimer. Il peut être suivi par d'autre nom de fichier/dossier.".PHP_EOL.PHP_EOL;
  176.             recu();
  177.           }
  178.           elseif($var1[0] == "log")
  179.           {
  180.             echo "\033[1m" . "NOM" . "\033[0m".PHP_EOL;
  181.             echo "        log - Permet d'afficher la liste des tarballs réalisées dans le dossier '.MyGitLight/log'.".PHP_EOL.PHP_EOL;
  182.             echo "\033[1m" . "UTILISATION (pas encore implémenté)" . "\033[0m".PHP_EOL;
  183.             echo "        log - S'utilise sans arguments.".PHP_EOL.PHP_EOL;
  184.             recu();
  185.           }
  186.           elseif($var1[0] == "exit")
  187.           {
  188.               exit();
  189.           }
  190.           else
  191.           {
  192.               echo "Votre commande n'est pas reconnue.".PHP_EOL;
  193.               recu();
  194.           }
  195.     }
  196.     recu();
  197. }
  198.  
  199. else
  200. {
  201.     echo "Commande MyGitLight non reconnue. Tapez la commande 'help' si vous avez besoin d'aide.".PHP_EOL;
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement