本文整理汇总了PHP中phutil_get_library_root函数的典型用法代码示例。如果您正苦于以下问题:PHP phutil_get_library_root函数的具体用法?PHP phutil_get_library_root怎么用?PHP phutil_get_library_root使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了phutil_get_library_root函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: getPatchList
public static function getPatchList()
{
$root = dirname(phutil_get_library_root('phabricator'));
// Find the patch files
$patches_dir = $root . '/resources/sql/patches/';
$finder = new FileFinder($patches_dir);
$results = $finder->find();
$versions = array();
$patches = array();
foreach ($results as $path) {
$matches = array();
if (!preg_match('/(\\d+)\\..*\\.(sql|php)$/', $path, $matches)) {
continue;
}
$version = (int) $matches[1];
$patches[] = array('version' => $version, 'path' => $patches_dir . $path);
if (empty($versions[$version])) {
$versions[$version] = true;
} else {
throw new Exception("Two patches have version {$version}!");
}
}
// Files are in some 'random' order returned by the operating system
// We need to apply them in proper order
$patches = isort($patches, 'version');
return $patches;
}
开发者ID:ramons03,项目名称:phabricator,代码行数:27,代码来源:PhabricatorSQLPatchList.php
示例2: run
public function run()
{
$roots = array();
$roots['libphutil'] = dirname(phutil_get_library_root('phutil'));
$roots['arcanist'] = dirname(phutil_get_library_root('arcanist'));
foreach ($roots as $lib => $root) {
echo "Upgrading {$lib}...\n";
if (!Filesystem::pathExists($root . '/.git')) {
throw new ArcanistUsageException("{$lib} must be in its git working copy to be automatically " . "upgraded. This copy of {$lib} (in '{$root}') is not in a git " . "working copy.");
}
$working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
$repository_api = ArcanistRepositoryAPI::newAPIFromWorkingCopyIdentity($working_copy);
// Force the range to HEAD^..HEAD, which is meaningless but keeps us
// from triggering "base" rules or other commit range resolution rules
// that might prompt the user when we pull the working copy status.
$repository_api->setRelativeCommit('HEAD^');
$this->setRepositoryAPI($repository_api);
// Require no local changes.
$this->requireCleanWorkingCopy();
// Require the library be on master.
$branch_name = $repository_api->getBranchName();
if ($branch_name != 'master') {
throw new ArcanistUsageException("{$lib} must be on branch 'master' to be automatically upgraded. " . "This copy of {$lib} (in '{$root}') is on branch '{$branch_name}'.");
}
chdir($root);
try {
phutil_passthru('git pull --rebase');
} catch (Exception $ex) {
phutil_passthru('git rebase --abort');
throw $ex;
}
}
echo phutil_console_wrap(phutil_console_format("**Updated!** Your copy of arc is now up to date.\n"));
return 0;
}
开发者ID:rafikk,项目名称:arcanist,代码行数:35,代码来源:ArcanistUpgradeWorkflow.php
示例3: processRequest
public function processRequest()
{
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root . '/support/phame/libskin.php';
$this->cssResources = array();
$css = $this->getPath('css/');
if (Filesystem::pathExists($css)) {
foreach (Filesystem::listDirectory($css) as $path) {
if (!preg_match('/.css$/', $path)) {
continue;
}
$this->cssResources[] = phutil_tag('link', array('rel' => 'stylesheet', 'type' => 'text/css', 'href' => $this->getResourceURI('css/' . $path)));
}
}
$map = CelerityResourceMap::getNamedInstance('phabricator');
$resource_symbol = 'syntax-highlighting-css';
$resource_uri = $map->getURIForSymbol($resource_symbol);
$this->cssResources[] = phutil_tag('link', array('rel' => 'stylesheet', 'type' => 'text/css', 'href' => PhabricatorEnv::getCDNURI($resource_uri)));
$this->cssResources = phutil_implode_html("\n", $this->cssResources);
$request = $this->getRequest();
// Render page parts in order so the templates execute in order, if we're
// using templates.
$header = $this->renderHeader();
$content = $this->renderContent($request);
$footer = $this->renderFooter();
if (!$content) {
$content = $this->render404Page();
}
$content = array($header, $content, $footer);
$response = new AphrontWebpageResponse();
$response->setContent(phutil_implode_html("\n", $content));
return $response;
}
开发者ID:fengshao0907,项目名称:phabricator,代码行数:33,代码来源:PhameBasicTemplateBlogSkin.php
示例4: calculatePatch
/**
* Calculate the DiffMatchPatch patch between two Phabricator files.
*
* @phutil-external-symbol class diff_match_patch
*/
public static function calculatePatch(PhabricatorFile $old = null, PhabricatorFile $new = null)
{
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root . '/externals/diff_match_patch/diff_match_patch.php';
$old_hash = self::EMPTY_HASH;
$new_hash = self::EMPTY_HASH;
if ($old !== null) {
$old_hash = $old->getContentHash();
}
if ($new !== null) {
$new_hash = $new->getContentHash();
}
$old_content = '';
$new_content = '';
if ($old_hash === $new_hash) {
return null;
}
if ($old_hash !== self::EMPTY_HASH) {
$old_content = $old->loadFileData();
} else {
$old_content = '';
}
if ($new_hash !== self::EMPTY_HASH) {
$new_content = $new->loadFileData();
} else {
$new_content = '';
}
$dmp = new diff_match_patch();
$dmp_patches = $dmp->patch_make($old_content, $new_content);
return $dmp->patch_toText($dmp_patches);
}
开发者ID:pugong,项目名称:phabricator,代码行数:36,代码来源:PhragmentPatchUtil.php
示例5: run
public function run()
{
$roots = array();
$roots['libphutil'] = dirname(phutil_get_library_root('phutil'));
$roots['arcanist'] = dirname(phutil_get_library_root('arcanist'));
foreach ($roots as $lib => $root) {
echo "Upgrading {$lib}...\n";
if (!Filesystem::pathExists($root . '/.git')) {
throw new ArcanistUsageException("{$lib} must be in its git working copy to be automatically " . "upgraded. This copy of {$lib} (in '{$root}') is not in a git " . "working copy.");
}
$working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
$configuration_manager = clone $this->getConfigurationManager();
$configuration_manager->setWorkingCopyIdentity($working_copy);
$repository_api = ArcanistRepositoryAPI::newAPIFromConfigurationManager($configuration_manager);
$this->setRepositoryAPI($repository_api);
// Require no local changes.
$this->requireCleanWorkingCopy();
// Require the library be on master.
$branch_name = $repository_api->getBranchName();
if ($branch_name != 'master') {
throw new ArcanistUsageException("{$lib} must be on branch 'master' to be automatically upgraded. " . "This copy of {$lib} (in '{$root}') is on branch '{$branch_name}'.");
}
chdir($root);
try {
phutil_passthru('git pull --rebase');
} catch (Exception $ex) {
phutil_passthru('git rebase --abort');
throw $ex;
}
}
echo phutil_console_wrap(phutil_console_format("**Updated!** Your copy of arc is now up to date.\n"));
return 0;
}
开发者ID:ivoryxiong,项目名称:arcanist,代码行数:33,代码来源:ArcanistUpgradeWorkflow.php
示例6: buildBootSequence
private function buildBootSequence()
{
if (!$this->bootSequence) {
$files = array('utils/utils.php', 'object/Phobject.php', 'utils/PhutilRope.php', 'xsprintf/xsprintf.php', 'xsprintf/csprintf.php', 'xsprintf/PhutilCommandString.php', 'future/Future.php', 'future/FutureIterator.php', 'future/exec/ExecFuture.php', 'future/exec/CommandException.php', 'channel/PhutilChannel.php', 'channel/PhutilSocketChannel.php', 'channel/PhutilChannelChannel.php', 'channel/PhutilProtocolChannel.php', 'channel/PhutilJSONProtocolChannel.php', 'phage/agent/PhagePHPAgent.php');
$main_sequence = new PhutilBallOfPHP();
$root = phutil_get_library_root('phutil');
foreach ($files as $file) {
$main_sequence->addFile($root . '/' . $file);
}
$main_sequence->addText('id(new PhagePHPAgent($I))->execute();');
$main_length = strlen($main_sequence->toString());
$boot_sequence = new PhutilBallOfPHP();
$boot = '
$length = ' . $main_length . ';
$buffer = "";
while (strlen($buffer) < $length) {
$data = fread($I, $length - strlen($buffer));
if (!strlen($data)) {
exit(1);
}
$buffer .= $data;
}
eval($buffer);';
$boot_sequence->addText($boot);
$boot_length = strlen($boot_sequence->toString());
$boot_sequence->addText($main_sequence->toString());
if (strlen($boot_length) > 8192) {
throw new Exception("Stage 1 bootloader is too large!");
}
$this->bootSequence = $boot_sequence;
$this->bootLength = $boot_length;
$this->mainLength = $main_length;
}
return $this->bootSequence;
}
开发者ID:jasteele12,项目名称:prb_lint_tests,代码行数:35,代码来源:PhagePHPAgentBootloader.php
示例7: run
public function run()
{
$roots = array('libphutil' => dirname(phutil_get_library_root('phutil')), 'arcanist' => dirname(phutil_get_library_root('arcanist')));
foreach ($roots as $lib => $root) {
echo phutil_console_format("%s\n", pht('Upgrading %s...', $lib));
$working_copy = ArcanistWorkingCopyIdentity::newFromPath($root);
$configuration_manager = clone $this->getConfigurationManager();
$configuration_manager->setWorkingCopyIdentity($working_copy);
$repository = ArcanistRepositoryAPI::newAPIFromConfigurationManager($configuration_manager);
if (!Filesystem::pathExists($repository->getMetadataPath())) {
throw new ArcanistUsageException(pht("%s must be in its git working copy to be automatically upgraded. " . "This copy of %s (in '%s') is not in a git working copy.", $lib, $lib, $root));
}
$this->setRepositoryAPI($repository);
// Require no local changes.
$this->requireCleanWorkingCopy();
// Require the library be on master.
$branch_name = $repository->getBranchName();
if ($branch_name != 'master') {
throw new ArcanistUsageException(pht("%s must be on branch '%s' to be automatically upgraded. " . "This copy of %s (in '%s') is on branch '%s'.", $lib, 'master', $lib, $root, $branch_name));
}
chdir($root);
try {
phutil_passthru('git pull --rebase');
} catch (Exception $ex) {
phutil_passthru('git rebase --abort');
throw $ex;
}
}
echo phutil_console_format("**%s** %s\n", pht('Updated!'), pht('Your copy of arc is now up to date.'));
return 0;
}
开发者ID:lewisf,项目名称:arcanist,代码行数:31,代码来源:ArcanistUpgradeWorkflow.php
示例8: loadVersions
private function loadVersions(PhabricatorUser $viewer)
{
$specs = array('phabricator', 'arcanist', 'phutil');
$all_libraries = PhutilBootloader::getInstance()->getAllLibraries();
// This puts the core libraries at the top:
$other_libraries = array_diff($all_libraries, $specs);
$specs = array_merge($specs, $other_libraries);
$futures = array();
foreach ($specs as $lib) {
$root = dirname(phutil_get_library_root($lib));
$futures[$lib] = id(new ExecFuture('git log --format=%s -n 1 --', '%H %ct'))->setCWD($root);
}
$results = array();
foreach ($futures as $key => $future) {
list($err, $stdout) = $future->resolve();
if (!$err) {
list($hash, $epoch) = explode(' ', $stdout);
$version = pht('%s (%s)', $hash, phabricator_date($epoch, $viewer));
} else {
$version = pht('Unknown');
}
$results[$key] = $version;
}
return $results;
}
开发者ID:endlessm,项目名称:phabricator,代码行数:25,代码来源:PhabricatorConfigVersionController.php
示例9: loadOneSkinSpecification
public static function loadOneSkinSpecification($name)
{
// Only allow skins which we know to exist to load. This prevents loading
// skins like "../../secrets/evil/".
$all = self::loadAllSkinSpecifications();
if (empty($all[$name])) {
throw new Exception(pht('Blog skin "%s" is not a valid skin!', $name));
}
$paths = PhabricatorEnv::getEnvConfig('phame.skins');
$base = dirname(phutil_get_library_root('phabricator'));
foreach ($paths as $path) {
$path = Filesystem::resolvePath($path, $base);
$skin_path = $path . DIRECTORY_SEPARATOR . $name;
if (is_dir($skin_path)) {
// Double check that the skin really lives in the skin directory.
if (!Filesystem::isDescendant($skin_path, $path)) {
throw new Exception(pht('Blog skin "%s" is not located in path "%s"!', $name, $path));
}
$spec = self::loadSkinSpecification($skin_path);
if ($spec) {
$spec->setName($name);
return $spec;
}
}
}
return null;
}
开发者ID:patelhardik,项目名称:phabricator,代码行数:27,代码来源:PhameSkinSpecification.php
示例10: getPatches
public function getPatches()
{
$patches = array();
foreach ($this->getOldPatches() as $old_name => $old_patch) {
if (preg_match('/^db\\./', $old_name)) {
$old_patch['name'] = substr($old_name, 3);
$old_patch['type'] = 'db';
} else {
if (empty($old_patch['name'])) {
$old_patch['name'] = $this->getPatchPath($old_name);
}
if (empty($old_patch['type'])) {
$matches = null;
preg_match('/\\.(sql|php)$/', $old_name, $matches);
$old_patch['type'] = $matches[1];
}
}
$patches[$old_name] = $old_patch;
}
$root = dirname(phutil_get_library_root('phabricator'));
$auto_root = $root . '/resources/sql/autopatches/';
$auto_list = Filesystem::listDirectory($auto_root, $include_hidden = false);
sort($auto_list);
foreach ($auto_list as $auto_patch) {
$matches = null;
if (!preg_match('/\\.(sql|php)$/', $auto_patch, $matches)) {
throw new Exception(pht('Unknown patch "%s" in "%s", expected ".php" or ".sql" suffix.', $auto_patch, $auto_root));
}
$patches[$auto_patch] = array('type' => $matches[1], 'name' => $auto_root . $auto_patch);
}
return $patches;
}
开发者ID:sethkontny,项目名称:phabricator,代码行数:32,代码来源:PhabricatorBuiltinPatchList.php
示例11: willRun
protected function willRun()
{
parent::willRun();
$phabricator = phutil_get_library_root('phabricator');
$root = dirname($phabricator);
require_once $root . '/scripts/__init_script__.php';
}
开发者ID:endlessm,项目名称:phabricator,代码行数:7,代码来源:PhabricatorDaemon.php
示例12: getPEP8Path
public function getPEP8Path()
{
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.pep8.prefix');
$bin = $working_copy->getConfig('lint.pep8.bin');
if ($bin === null && $prefix === null) {
$bin = csprintf('/usr/bin/env python2.6 %s', phutil_get_library_root('arcanist') . '/../externals/pep8/pep8.py');
} else {
if ($bin === null) {
$bin = 'pep8';
}
if ($prefix !== null) {
if (!Filesystem::pathExists($prefix . '/' . $bin)) {
throw new ArcanistUsageException("Unable to find PEP8 binary in a specified directory. Make sure " . "that 'lint.pep8.prefix' and 'lint.pep8.bin' keys are set " . "correctly. If you'd rather use a copy of PEP8 installed " . "globally, you can just remove these keys from your .arcconfig");
}
$bin = csprintf("%s/%s", $prefix, $bin);
return $bin;
}
// Look for globally installed PEP8
list($err) = exec_manual('which %s', $bin);
if ($err) {
throw new ArcanistUsageException("PEP8 does not appear to be installed on this system. Install it " . "(e.g., with 'easy_install pep8') or configure " . "'lint.pep8.prefix' in your .arcconfig to point to the directory " . "where it resides.");
}
}
return $bin;
}
开发者ID:nik-kor,项目名称:arcanist,代码行数:26,代码来源:ArcanistPEP8Linter.php
示例13: getPatchPath
private function getPatchPath($file)
{
$root = dirname(phutil_get_library_root('phabricator'));
$path = $root . '/resources/sql/patches/' . $file;
// Make sure it exists.
Filesystem::readFile($path);
return $path;
}
开发者ID:neoxen,项目名称:phabricator,代码行数:8,代码来源:PhabricatorBuiltinPatchList.php
示例14: __construct
/**
* @phutil-external-symbol class PHPMailerLite
*/
public function __construct()
{
$root = phutil_get_library_root('phabricator');
$root = dirname($root);
require_once $root . '/externals/phpmailer/class.phpmailer-lite.php';
$this->mailer = new PHPMailerLite($use_exceptions = true);
$this->mailer->CharSet = 'utf-8';
}
开发者ID:nexeck,项目名称:phabricator,代码行数:11,代码来源:PhabricatorMailImplementationPHPMailerLiteAdapter.php
示例15: buildClient
/**
* @phutil-external-symbol class Services_Twilio
*/
private function buildClient()
{
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root . '/externals/twilio-php/Services/Twilio.php';
$account_sid = PhabricatorEnv::getEnvConfig('twilio.account-sid');
$auth_token = PhabricatorEnv::getEnvConfig('twilio.auth-token');
return new Services_Twilio($account_sid, $auth_token);
}
开发者ID:pugong,项目名称:phabricator,代码行数:11,代码来源:PhabricatorSMSImplementationTwilioAdapter.php
示例16: generateData
public function generateData()
{
$lib_data = array();
foreach (PhutilBootloader::getInstance()->getAllLibraries() as $lib) {
$lib_data[$lib] = phutil_get_library_root($lib);
}
return array('config' => PhabricatorEnv::getAllConfigKeys(), 'libraries' => $lib_data);
}
开发者ID:nguyennamtien,项目名称:phabricator,代码行数:8,代码来源:DarkConsoleConfigPlugin.php
示例17: __construct
/**
* @phutil-external-symbol function phabricator_read_config_file
*/
public function __construct($config)
{
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root . '/conf/__init_conf__.php';
$dictionary = phabricator_read_config_file($config);
$dictionary['phabricator.env'] = $config;
$this->setSource(new PhabricatorConfigDictionarySource($dictionary));
}
开发者ID:denghp,项目名称:phabricator,代码行数:11,代码来源:PhabricatorConfigFileSource.php
示例18: willRunTests
protected function willRunTests()
{
$root = dirname(phutil_get_library_root('phabricator'));
require_once $root . '/scripts/__init_script__.php';
$config = $this->getComputedConfiguration();
if ($config[self::PHABRICATOR_TESTCONFIG_ISOLATE_LISK]) {
LiskDAO::beginIsolateAllLiskEffectsToCurrentProcess();
}
}
开发者ID:netcomtec,项目名称:phabricator,代码行数:9,代码来源:PhabricatorTestCase.php
示例19: render
public function render()
{
$user = $this->getUser();
$trace = $this->trace;
$libraries = PhutilBootloader::getInstance()->getAllLibraries();
// TODO: Make this configurable?
$path = 'https://secure.phabricator.com/diffusion/%s/browse/master/src/';
$callsigns = array('arcanist' => 'ARC', 'phutil' => 'PHU', 'phabricator' => 'P');
$rows = array();
$depth = count($trace);
foreach ($trace as $part) {
$lib = null;
$file = idx($part, 'file');
$relative = $file;
foreach ($libraries as $library) {
$root = phutil_get_library_root($library);
if (Filesystem::isDescendant($file, $root)) {
$lib = $library;
$relative = Filesystem::readablePath($file, $root);
break;
}
}
$where = '';
if (isset($part['class'])) {
$where .= $part['class'] . '::';
}
if (isset($part['function'])) {
$where .= $part['function'] . '()';
}
if ($file) {
if (isset($callsigns[$lib])) {
$attrs = array('title' => $file);
try {
$attrs['href'] = $user->loadEditorLink('/src/' . $relative, $part['line'], $callsigns[$lib]);
} catch (Exception $ex) {
// The database can be inaccessible.
}
if (empty($attrs['href'])) {
$attrs['href'] = sprintf($path, $callsigns[$lib]) . str_replace(DIRECTORY_SEPARATOR, '/', $relative) . '$' . $part['line'];
$attrs['target'] = '_blank';
}
$file_name = phutil_tag('a', $attrs, $relative);
} else {
$file_name = phutil_tag('span', array('title' => $file), $relative);
}
$file_name = hsprintf('%s : %d', $file_name, $part['line']);
} else {
$file_name = phutil_tag('em', array(), '(Internal)');
}
$rows[] = array($depth--, $lib, $file_name, $where);
}
$table = new AphrontTableView($rows);
$table->setHeaders(array(pht('Depth'), pht('Library'), pht('File'), pht('Where')));
$table->setColumnClasses(array('n', '', '', 'wide'));
return phutil_tag('div', array('class' => 'exception-trace'), $table->render());
}
开发者ID:patelhardik,项目名称:phabricator,代码行数:56,代码来源:AphrontStackTraceView.php
示例20: executeSend
public function executeSend($body)
{
$key = PhabricatorEnv::getEnvConfig('amazon-ses.access-key');
$secret = PhabricatorEnv::getEnvConfig('amazon-ses.secret-key');
$root = phutil_get_library_root('phabricator');
$root = dirname($root);
require_once $root . '/externals/amazon-ses/ses.php';
$service = newv('SimpleEmailService', array($key, $secret));
return $service->sendRawEmail($body);
}
开发者ID:hunterbridges,项目名称:phabricator,代码行数:10,代码来源:PhabricatorMailImplementationAmazonSESAdapter.php
注:本文中的phutil_get_library_root函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论