mirror of
https://github.com/atlanticbiomedical/portal-legacy.git
synced 2025-07-02 01:47:28 -04:00
initial commit
This commit is contained in:
429
lib/symfony/vendor/pake/pakeFunction.php
vendored
Executable file
429
lib/symfony/vendor/pake/pakeFunction.php
vendored
Executable file
@ -0,0 +1,429 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package pake
|
||||
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
* @copyright 2004-2005 Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
* @license see the LICENSE file included in the distribution
|
||||
* @version SVN: $Id: pakeFunction.php 3263 2007-01-13 14:20:52Z fabien $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__).'/pakeException.class.php';
|
||||
require_once dirname(__FILE__).'/pakeYaml.class.php';
|
||||
require_once dirname(__FILE__).'/pakeGetopt.class.php';
|
||||
require_once dirname(__FILE__).'/pakeFinder.class.php';
|
||||
require_once dirname(__FILE__).'/pakeTask.class.php';
|
||||
require_once dirname(__FILE__).'/pakeFileTask.class.php';
|
||||
require_once dirname(__FILE__).'/pakeColor.class.php';
|
||||
require_once dirname(__FILE__).'/pakeApp.class.php';
|
||||
|
||||
function pake_import($name, $import_default_tasks = true)
|
||||
{
|
||||
$class_name = 'pake'.ucfirst(strtolower($name)).'Task';
|
||||
|
||||
if (!class_exists($class_name))
|
||||
{
|
||||
// plugin available?
|
||||
$plugin_path = '';
|
||||
foreach (pakeApp::get_plugin_dirs() as $dir)
|
||||
{
|
||||
if (file_exists($dir.DIRECTORY_SEPARATOR.$class_name.'.class.php'))
|
||||
{
|
||||
$plugin_path = $dir.DIRECTORY_SEPARATOR.$class_name.'.class.php';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($plugin_path)
|
||||
{
|
||||
require_once $plugin_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new pakeException(sprintf('Plugin "%s" does not exist.', $name));
|
||||
}
|
||||
}
|
||||
|
||||
if ($import_default_tasks && is_callable($class_name, 'import_default_tasks'))
|
||||
{
|
||||
call_user_func(array($class_name, 'import_default_tasks'));
|
||||
}
|
||||
}
|
||||
|
||||
function pake_task($name)
|
||||
{
|
||||
$args = func_get_args();
|
||||
array_shift($args);
|
||||
pakeTask::define_task($name, $args);
|
||||
|
||||
return $name;
|
||||
}
|
||||
|
||||
function pake_alias($alias, $name)
|
||||
{
|
||||
pakeTask::define_alias($alias, $name);
|
||||
|
||||
return $alias;
|
||||
}
|
||||
|
||||
function pake_desc($comment)
|
||||
{
|
||||
pakeTask::define_comment($comment);
|
||||
}
|
||||
|
||||
function pake_properties($property_file)
|
||||
{
|
||||
$file = $property_file;
|
||||
if (!pakeFinder::isPathAbsolute($file))
|
||||
{
|
||||
$file = getcwd().DIRECTORY_SEPARATOR.$property_file;
|
||||
}
|
||||
|
||||
if (file_exists($file))
|
||||
{
|
||||
pakeApp::get_instance()->set_properties(parse_ini_file($file, true));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new pakeException('Properties file does not exist.');
|
||||
}
|
||||
}
|
||||
|
||||
function pake_file($name)
|
||||
{
|
||||
$args = func_get_args();
|
||||
array_shift($args);
|
||||
pakeFileTask::define_task($name, $args);
|
||||
|
||||
return $name;
|
||||
}
|
||||
|
||||
function pake_mkdirs($path, $mode = 0777)
|
||||
{
|
||||
if (is_dir($path))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
pake_echo_action('dir+', $path);
|
||||
|
||||
return @mkdir($path, $mode, true);
|
||||
}
|
||||
|
||||
/*
|
||||
override => boolean
|
||||
*/
|
||||
function pake_copy($origin_file, $target_file, $options = array())
|
||||
{
|
||||
if (!array_key_exists('override', $options))
|
||||
{
|
||||
$options['override'] = false;
|
||||
}
|
||||
|
||||
// we create target_dir if needed
|
||||
if (!is_dir(dirname($target_file)))
|
||||
{
|
||||
pake_mkdirs(dirname($target_file));
|
||||
}
|
||||
|
||||
$most_recent = false;
|
||||
if (file_exists($target_file))
|
||||
{
|
||||
$stat_target = stat($target_file);
|
||||
$stat_origin = stat($origin_file);
|
||||
$most_recent = ($stat_origin['mtime'] > $stat_target['mtime']) ? true : false;
|
||||
}
|
||||
|
||||
if ($options['override'] || !file_exists($target_file) || $most_recent)
|
||||
{
|
||||
pake_echo_action('file+', $target_file);
|
||||
copy($origin_file, $target_file);
|
||||
}
|
||||
}
|
||||
|
||||
function pake_rename($origin, $target, $options = array())
|
||||
{
|
||||
// we check that target does not exist
|
||||
if (is_readable($target))
|
||||
{
|
||||
throw new pakeException(sprintf('Cannot rename because the target "%" already exist.', $target));
|
||||
}
|
||||
|
||||
pake_echo_action('rename', $origin.' > '.$target);
|
||||
rename($origin, $target);
|
||||
}
|
||||
|
||||
function pake_mirror($arg, $origin_dir, $target_dir, $options = array())
|
||||
{
|
||||
$files = pakeApp::get_files_from_argument($arg, $origin_dir, true);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
if (is_dir($origin_dir.DIRECTORY_SEPARATOR.$file))
|
||||
{
|
||||
pake_mkdirs($target_dir.DIRECTORY_SEPARATOR.$file);
|
||||
}
|
||||
else if (is_file($origin_dir.DIRECTORY_SEPARATOR.$file))
|
||||
{
|
||||
pake_copy($origin_dir.DIRECTORY_SEPARATOR.$file, $target_dir.DIRECTORY_SEPARATOR.$file, $options);
|
||||
}
|
||||
else if (is_link($origin_dir.DIRECTORY_SEPARATOR.$file))
|
||||
{
|
||||
pake_symlink($origin_dir.DIRECTORY_SEPARATOR.$file, $target_dir.DIRECTORY_SEPARATOR.$file);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new pakeException(sprintf('Unable to determine "%s" type', $file));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function pake_remove($arg, $target_dir)
|
||||
{
|
||||
$files = array_reverse(pakeApp::get_files_from_argument($arg, $target_dir));
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
if (is_dir($file) && !is_link($file))
|
||||
{
|
||||
pake_echo_action('dir-', $file);
|
||||
|
||||
rmdir($file);
|
||||
}
|
||||
else
|
||||
{
|
||||
pake_echo_action(is_link($file) ? 'link-' : 'file-', $file);
|
||||
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function pake_touch($arg, $target_dir)
|
||||
{
|
||||
$files = pakeApp::get_files_from_argument($arg, $target_dir);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
pake_echo_action('file+', $file);
|
||||
|
||||
touch($file);
|
||||
}
|
||||
}
|
||||
|
||||
function pake_replace_tokens($arg, $target_dir, $begin_token, $end_token, $tokens)
|
||||
{
|
||||
$files = pakeApp::get_files_from_argument($arg, $target_dir, true);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
$replaced = false;
|
||||
$content = file_get_contents($target_dir.DIRECTORY_SEPARATOR.$file);
|
||||
foreach ($tokens as $key => $value)
|
||||
{
|
||||
$content = str_replace($begin_token.$key.$end_token, $value, $content, $count);
|
||||
if ($count) $replaced = true;
|
||||
}
|
||||
|
||||
pake_echo_action('tokens', $target_dir.DIRECTORY_SEPARATOR.$file);
|
||||
|
||||
file_put_contents($target_dir.DIRECTORY_SEPARATOR.$file, $content);
|
||||
}
|
||||
}
|
||||
|
||||
function pake_symlink($origin_dir, $target_dir, $copy_on_windows = false)
|
||||
{
|
||||
if (!function_exists('symlink') && $copy_on_windows)
|
||||
{
|
||||
$finder = pakeFinder::type('any')->ignore_version_control();
|
||||
pake_mirror($finder, $origin_dir, $target_dir);
|
||||
return;
|
||||
}
|
||||
|
||||
$ok = false;
|
||||
if (is_link($target_dir))
|
||||
{
|
||||
if (readlink($target_dir) != $origin_dir)
|
||||
{
|
||||
unlink($target_dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
$ok = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$ok)
|
||||
{
|
||||
pake_echo_action('link+', $target_dir);
|
||||
symlink($origin_dir, $target_dir);
|
||||
}
|
||||
}
|
||||
|
||||
function pake_chmod($arg, $target_dir, $mode, $umask = 0000)
|
||||
{
|
||||
$current_umask = umask();
|
||||
umask($umask);
|
||||
|
||||
$files = pakeApp::get_files_from_argument($arg, $target_dir, true);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
pake_echo_action(sprintf('chmod %o', $mode), $target_dir.DIRECTORY_SEPARATOR.$file);
|
||||
chmod($target_dir.DIRECTORY_SEPARATOR.$file, $mode);
|
||||
}
|
||||
|
||||
umask($current_umask);
|
||||
}
|
||||
|
||||
function pake_sh($cmd)
|
||||
{
|
||||
$verbose = pakeApp::get_instance()->get_verbose();
|
||||
pake_echo_action('exec ', $cmd);
|
||||
|
||||
ob_start();
|
||||
passthru($cmd.' 2>&1', $return);
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
if ($return > 0)
|
||||
{
|
||||
throw new pakeException(sprintf('Problem executing command %s', $verbose ? "\n".$content : ''));
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function pake_strip_php_comments($arg)
|
||||
{
|
||||
/* T_ML_COMMENT does not exist in PHP 5.
|
||||
* The following three lines define it in order to
|
||||
* preserve backwards compatibility.
|
||||
*
|
||||
* The next two lines define the PHP 5-only T_DOC_COMMENT,
|
||||
* which we will mask as T_ML_COMMENT for PHP 4.
|
||||
*/
|
||||
if (!defined('T_ML_COMMENT'))
|
||||
{
|
||||
define('T_ML_COMMENT', T_COMMENT);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!defined('T_DOC_COMMENT')) define('T_DOC_COMMENT', T_ML_COMMENT);
|
||||
}
|
||||
|
||||
$files = pakeApp::get_files_from_argument($arg);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
if (!is_file($file)) continue;
|
||||
|
||||
$source = file_get_contents($file);
|
||||
$output = '';
|
||||
|
||||
$tokens = token_get_all($source);
|
||||
foreach ($tokens as $token)
|
||||
{
|
||||
if (is_string($token))
|
||||
{
|
||||
// simple 1-character token
|
||||
$output .= $token;
|
||||
}
|
||||
else
|
||||
{
|
||||
// token array
|
||||
list($id, $text) = $token;
|
||||
switch ($id)
|
||||
{
|
||||
case T_COMMENT:
|
||||
case T_ML_COMMENT: // we've defined this
|
||||
case T_DOC_COMMENT: // and this
|
||||
// no action on comments
|
||||
break;
|
||||
default:
|
||||
// anything else -> output "as is"
|
||||
$output .= $text;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
file_put_contents($file, $output);
|
||||
}
|
||||
}
|
||||
|
||||
function pake_format_action($section, $text, $size = null)
|
||||
{
|
||||
if (pakeApp::get_instance()->get_verbose())
|
||||
{
|
||||
$width = 9 + strlen(pakeColor::colorize('', 'INFO'));
|
||||
return sprintf('>> %-'.$width.'s %s', pakeColor::colorize($section, 'INFO'), pakeApp::excerpt($text, $size))."\n";
|
||||
}
|
||||
}
|
||||
|
||||
function pake_echo_action($section, $text)
|
||||
{
|
||||
echo pake_format_action($section, $text);
|
||||
}
|
||||
|
||||
function pake_excerpt($text)
|
||||
{
|
||||
if (pakeApp::get_instance()->get_verbose())
|
||||
{
|
||||
echo pakeApp::excerpt($text)."\n";
|
||||
}
|
||||
}
|
||||
|
||||
function pake_echo($text)
|
||||
{
|
||||
if (pakeApp::get_instance()->get_verbose())
|
||||
{
|
||||
echo $text."\n";
|
||||
}
|
||||
}
|
||||
|
||||
function pake_echo_comment($text)
|
||||
{
|
||||
if (pakeApp::get_instance()->get_verbose())
|
||||
{
|
||||
echo sprintf(pakeColor::colorize(' # %s', 'COMMENT'), $text)."\n";
|
||||
}
|
||||
}
|
||||
|
||||
// register our default exception handler
|
||||
function pake_exception_default_handler($exception)
|
||||
{
|
||||
$e = new pakeException();
|
||||
$e->render($exception);
|
||||
exit(1);
|
||||
}
|
||||
set_exception_handler('pake_exception_default_handler');
|
||||
|
||||
// fix php behavior if using cgi php
|
||||
// from http://www.sitepoint.com/article/php-command-line-1/3
|
||||
if (false !== strpos(PHP_SAPI, 'cgi'))
|
||||
{
|
||||
// handle output buffering
|
||||
@ob_end_flush();
|
||||
ob_implicit_flush(true);
|
||||
|
||||
// PHP ini settings
|
||||
set_time_limit(0);
|
||||
ini_set('track_errors', true);
|
||||
ini_set('html_errors', false);
|
||||
ini_set('magic_quotes_runtime', false);
|
||||
|
||||
// define stream constants
|
||||
define('STDIN', fopen('php://stdin', 'r'));
|
||||
define('STDOUT', fopen('php://stdout', 'w'));
|
||||
define('STDERR', fopen('php://stderr', 'w'));
|
||||
|
||||
// change directory
|
||||
if (isset($_SERVER['PWD']))
|
||||
{
|
||||
chdir($_SERVER['PWD']);
|
||||
}
|
||||
|
||||
// close the streams on script termination
|
||||
register_shutdown_function(create_function('', 'fclose(STDIN); fclose(STDOUT); fclose(STDERR); return true;'));
|
||||
}
|
Reference in New Issue
Block a user