puggan

/usr/local/bin/phpstorm

Apr 5th, 2017 (edited)
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.66 KB | None | 0 0
  1. #!/usr/local/bin/php7
  2. <?php
  3.  
  4.     $dir = getcwd();
  5.     if(substr($dir, -1) != '/')
  6.     {
  7.         $dir .= '/';
  8.     }
  9.  
  10.     $phpstorm_app_path = '/Applications/PhpStorm.app/Contents/MacOS/phpstorm';
  11.     $project_path = '/Users/puggan/PhpstormProjects/';
  12.  
  13.     $projects = [
  14.         'bb' => $project_path . 'Bokborsen/',
  15.         'bbadmin' => $project_path . 'admin.bokborsen/',
  16.         'bbexport' => $project_path . 'Bok Export/',
  17.         'ts' => $project_path . 'testseek/',
  18.     ];
  19.     $project_alias = [
  20.             '/Users/puggan/htdocs/bokborsen/' => 'bb',
  21.             '/Users/puggan/htdocs/bokborsen_admin/' => 'bbadmin',
  22.             '/Users/puggan/htdocs/bokborsen_export/' => 'bbexport',
  23.             '/home/vagrant/bokborsen/' => 'bb',
  24.         ] + array_flip($projects);
  25.  
  26.     uksort(
  27.         $project_alias,
  28.         function ($a, $b)
  29.         {
  30.             $ld = strlen($b) - strlen($a);
  31.             if($ld)
  32.             {
  33.                 return $ld;
  34.             }
  35.             return strcmp($a, $b);
  36.         }
  37.     );
  38.  
  39.     function dir_match($dir, $list)
  40.     {
  41.         if(substr($dir, -1) != '/')
  42.         {
  43.             $dir .= '/';
  44.         }
  45.         foreach($list as $compare_dir)
  46.         {
  47.             if(substr($dir, 0, strlen($compare_dir)) == $compare_dir)
  48.             {
  49.                 return $compare_dir;
  50.             }
  51.         }
  52.         return FALSE;
  53.     }
  54.  
  55.     $project_dir = dir_match($dir, array_keys($project_alias));
  56.  
  57.     foreach(array_slice($argv, 1) as $argument)
  58.     {
  59.         if(preg_match('#:([0-9]+):?$#', $argument, $match))
  60.         {
  61.             $line_number = $match[1];
  62.             $file_name = substr($argument, 0, -strlen($match[0]));
  63.         }
  64.         else
  65.         {
  66.             $line_number = NULL;
  67.             $file_name = $argument;
  68.         }
  69.  
  70.         if(substr($file_name, 0, 1) != '/')
  71.         {
  72.             if(file_exists("{$dir}{$file_name}"))
  73.             {
  74.                 $file_name = "{$dir}{$file_name}";
  75.             }
  76.             else if($project_dir AND file_exists("{$project_dir}{$file_name}"))
  77.             {
  78.                 $file_name = "{$project_dir}{$file_name}";
  79.             }
  80.             else
  81.             {
  82.                 $file_name = "{$dir}{$file_name}";
  83.             }
  84.         }
  85.  
  86.         $real_project_dir = is_dir($file_name) ? $file_name : dirname($file_name);
  87.         $file_project_dir = dir_match($real_project_dir, array_keys($project_alias));
  88.         if($file_project_dir)
  89.         {
  90.             $real_project_dir = $projects[$project_alias[$file_project_dir]];
  91.             if($real_project_dir != $file_project_dir)
  92.             {
  93.                 $file_name = $real_project_dir . substr($file_name, strlen($file_project_dir));
  94.             }
  95.         }
  96.  
  97.         if(!file_exists($file_name))
  98.         {
  99.             fprintf(STDERR, "File missing %s\n", $file_name);
  100.             continue;
  101.         }
  102.  
  103.         $command = [
  104.             escapeshellcmd($phpstorm_app_path),
  105.             escapeshellarg($real_project_dir)
  106.         ];
  107.         if(!is_dir($file_name))
  108.         {
  109.             if($line_number)
  110.             {
  111.                 $command[] = escapeshellarg('--line');
  112.                 $command[] = escapeshellarg($line_number);
  113.             }
  114.             $command[] = escapeshellarg($file_name);
  115.         }
  116.         echo implode(' ',$command) . PHP_EOL;
  117.         passthru(implode(' ',$command));
  118.     }
Add Comment
Please, Sign In to add comment