mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-29 02:02:40 +01:00
Merge branch 'master' of github.com:facebook/arcanist
This commit is contained in:
commit
3f5d4c2f62
6 changed files with 31 additions and 16 deletions
|
@ -82,10 +82,13 @@ try {
|
||||||
if ($config_trace_mode) {
|
if ($config_trace_mode) {
|
||||||
echo "Loading phutil library '{$name}' from '{$location}'...\n";
|
echo "Loading phutil library '{$name}' from '{$location}'...\n";
|
||||||
}
|
}
|
||||||
$library_root = Filesystem::resolvePath(
|
$resolved_location = Filesystem::resolvePath(
|
||||||
$location,
|
$location,
|
||||||
$working_copy->getProjectRoot());
|
$working_copy->getProjectRoot());
|
||||||
phutil_load_library($library_root);
|
if (Filesystem::pathExists($resolved_location)) {
|
||||||
|
$location = $resolved_location;
|
||||||
|
}
|
||||||
|
phutil_load_library($location);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,12 @@ final class ArcanistLintPatcher {
|
||||||
$new_str = $lint->getReplacementText();
|
$new_str = $lint->getReplacementText();
|
||||||
$new_len = strlen($new_str);
|
$new_len = strlen($new_str);
|
||||||
|
|
||||||
|
if ($working_offset == strlen($data)) {
|
||||||
|
// Temporary hack to work around a destructive hphpi issue, see #451031.
|
||||||
|
$data .= $new_str;
|
||||||
|
} else {
|
||||||
$data = substr_replace($data, $new_str, $working_offset, $old_len);
|
$data = substr_replace($data, $new_str, $working_offset, $old_len);
|
||||||
|
}
|
||||||
|
|
||||||
$this->changeCharacterDelta($new_len - $old_len);
|
$this->changeCharacterDelta($new_len - $old_len);
|
||||||
$this->setDirtyCharacterOffset($orig_offset + $old_len);
|
$this->setDirtyCharacterOffset($orig_offset + $old_len);
|
||||||
|
|
|
@ -190,7 +190,8 @@ EOTEXT
|
||||||
|
|
||||||
$working_copy = ArcanistWorkingCopyIdentity::newFromRootAndConfigFile(
|
$working_copy = ArcanistWorkingCopyIdentity::newFromRootAndConfigFile(
|
||||||
$project_root,
|
$project_root,
|
||||||
$config);
|
$config,
|
||||||
|
$config_file." (svnlook: {$transaction} {$repository})");
|
||||||
|
|
||||||
$lint_engine = $working_copy->getConfig('lint_engine');
|
$lint_engine = $working_copy->getConfig('lint_engine');
|
||||||
if (!$lint_engine) {
|
if (!$lint_engine) {
|
||||||
|
|
|
@ -36,24 +36,30 @@ class ArcanistWorkingCopyIdentity {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$proj_raw = Filesystem::readFile($config_file);
|
$proj_raw = Filesystem::readFile($config_file);
|
||||||
$config = self::parseRawConfigFile($proj_raw);
|
$config = self::parseRawConfigFile($proj_raw, $config_file);
|
||||||
$project_root = $dir;
|
$project_root = $dir;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return new ArcanistWorkingCopyIdentity($project_root, $config);
|
return new ArcanistWorkingCopyIdentity($project_root, $config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function newFromRootAndConfigFile($root, $config_raw) {
|
public static function newFromRootAndConfigFile(
|
||||||
$config = self::parseRawConfigFile($config_raw);
|
$root,
|
||||||
|
$config_raw,
|
||||||
|
$from_where) {
|
||||||
|
|
||||||
|
$config = self::parseRawConfigFile($config_raw, $from_where);
|
||||||
return new ArcanistWorkingCopyIdentity($root, $config);
|
return new ArcanistWorkingCopyIdentity($root, $config);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function parseRawConfigFile($raw_config) {
|
private static function parseRawConfigFile($raw_config, $from_where) {
|
||||||
$proj = json_decode($raw_config, true);
|
$proj = json_decode($raw_config, true);
|
||||||
if (!is_array($proj)) {
|
if (!is_array($proj)) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
"Unable to parse '.arcconfig' file in '{$dir}'. The file contents ".
|
"Unable to parse '.arcconfig' file '{$from_where}'. The file contents ".
|
||||||
"should be valid JSON.");
|
"should be valid JSON.\n\n".
|
||||||
|
"FILE CONTENTS\n".
|
||||||
|
substr($raw_config, 0, 2048));
|
||||||
}
|
}
|
||||||
$required_keys = array(
|
$required_keys = array(
|
||||||
'project_id',
|
'project_id',
|
||||||
|
@ -61,8 +67,8 @@ class ArcanistWorkingCopyIdentity {
|
||||||
foreach ($required_keys as $key) {
|
foreach ($required_keys as $key) {
|
||||||
if (!array_key_exists($key, $proj)) {
|
if (!array_key_exists($key, $proj)) {
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
"Required key '{$key}' is missing from '.arcconfig' file in ".
|
"Required key '{$key}' is missing from '.arcconfig' file ".
|
||||||
"'{$dir}'.");
|
"'{$from_where}'.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $proj;
|
return $proj;
|
||||||
|
|
Loading…
Reference in a new issue