1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-22 06:42:41 +01:00

rename getConfig -> getProjectConfig, make all linters use getConfigFromAnySource

Summary:
Lingers on from D7271; Rename `ArcanistWorkingCopyIdentity.getConfig()`.

Changed all linters (Except one) to use `getConfigFromAnySource()`, because it seems to make sense.

Test Plan: arc unit --everything; arc lint in github.com:epriestley/arclint-examples.git (Except for phpcs, flake8, cpplint and csslint which I don't have installed).

Reviewers: epriestley, #blessed_reviewers

Reviewed By: epriestley

CC: chad, Korvin, epriestley, aran

Differential Revision: https://secure.phabricator.com/D7382
This commit is contained in:
Aviv Eyal 2013-10-22 15:34:06 -07:00 committed by epriestley
parent 4103bc423c
commit 0d212ccf5a
20 changed files with 86 additions and 68 deletions

View file

@ -130,7 +130,7 @@ try {
// Load libraries in ".arcconfig". Libraries here must load.
arcanist_load_libraries(
$working_copy->getConfig('load'),
$working_copy->getProjectConfig('load'),
$must_load = true,
$lib_source = 'the "load" setting in ".arcconfig"',
$working_copy);
@ -138,7 +138,7 @@ try {
$user_config = $configuration_manager->readUserConfigurationFile();
$config_class = $working_copy->getConfig('arcanist_configuration');
$config_class = $working_copy->getProjectConfig('arcanist_configuration');
if ($config_class) {
$config = new $config_class();
} else {

View file

@ -25,7 +25,7 @@ final class ArcanistConfigurationManager {
public function getProjectConfig($key) {
if ($this->workingCopy) {
return $this->workingCopy->getConfig($key);
return $this->workingCopy->getProjectConfig($key);
}
return null;
}

View file

@ -28,9 +28,9 @@ final class ArcanistCSSLintLinter extends ArcanistExternalLinter {
}
public function getDefaultFlags() {
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
$options = $working_copy->getConfig('lint.csslint.options');
$options = $config->getConfigFromAnySource('lint.csslint.options');
// TODO: Deprecation warning.
return $options;
@ -38,8 +38,8 @@ final class ArcanistCSSLintLinter extends ArcanistExternalLinter {
public function getDefaultBinary() {
// TODO: Deprecation warning.
$working_copy = $this->getEngine()->getWorkingCopy();
$bin = $working_copy->getConfig('lint.csslint.bin');
$config = $this->getEngine()->getConfigurationManager();
$bin = $config->getConfigFromAnySource('lint.csslint.bin');
if ($bin) {
return $bin;
}

View file

@ -19,9 +19,9 @@ final class ArcanistCppcheckLinter extends ArcanistLinter {
}
public function getLintOptions() {
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
// You will for sure want some options. The below default tends to be ok
$options = $working_copy->getConfig(
$options = $config->getConfigFromAnySource(
'lint.cppcheck.options',
'-j2 --inconclusive --enable=performance,style,portability,information');
@ -29,9 +29,9 @@ final class ArcanistCppcheckLinter extends ArcanistLinter {
}
public function getLintPath() {
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.cppcheck.prefix');
$bin = $working_copy->getConfig('lint.cppcheck.bin', 'cppcheck');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.cppcheck.prefix');
$bin = $config->getConfigFromAnySource('lint.cppcheck.bin', 'cppcheck');
if ($prefix !== null) {
if (!Filesystem::pathExists($prefix.'/'.$bin)) {

View file

@ -18,16 +18,16 @@ final class ArcanistCpplintLinter extends ArcanistLinter {
}
public function getLintOptions() {
$working_copy = $this->getEngine()->getWorkingCopy();
$options = $working_copy->getConfig('lint.cpplint.options', '');
$config = $this->getEngine()->getConfigurationManager();
$options = $config->getConfigFromAnySource('lint.cpplint.options', '');
return $options;
}
public function getLintPath() {
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.cpplint.prefix');
$bin = $working_copy->getConfig('lint.cpplint.bin', 'cpplint.py');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.cpplint.prefix');
$bin = $config->getConfigFromAnySource('lint.cpplint.bin', 'cpplint.py');
if ($prefix !== null) {
if (!Filesystem::pathExists($prefix.'/'.$bin)) {

View file

@ -19,17 +19,17 @@ final class ArcanistFlake8Linter extends ArcanistExternalLinter {
public function getDefaultFlags() {
// TODO: Deprecated.
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
$options = $working_copy->getConfig('lint.flake8.options', '');
$options = $config->getConfigFromAnySource('lint.flake8.options', '');
return $options;
}
public function getDefaultBinary() {
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.flake8.prefix');
$bin = $working_copy->getConfig('lint.flake8.bin', 'flake8');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.flake8.prefix');
$bin = $config->getConfigFromAnySource('lint.flake8.bin', 'flake8');
if ($prefix || ($bin != 'flake8')) {
return $prefix.'/'.$bin;

View file

@ -67,10 +67,11 @@ final class ArcanistJSHintLinter extends ArcanistLinter {
}
public function getJSHintOptions() {
$working_copy = $this->getEngine()->getWorkingCopy();
$config_manager = $this->getEngine()->getConfigurationManager();
$options = '--reporter '.dirname(realpath(__FILE__)).'/reporter.js';
$config = $working_copy->getConfig('lint.jshint.config');
$config = $config_manager->getConfigFromAnySource('lint.jshint.config');
$working_copy = $this->getEngine()->getWorkingCopy();
if ($config !== null) {
$config = Filesystem::resolvePath(
$config,
@ -89,9 +90,9 @@ final class ArcanistJSHintLinter extends ArcanistLinter {
}
private function getJSHintPath() {
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.jshint.prefix');
$bin = $working_copy->getConfig('lint.jshint.bin');
$config_manager = $this->getEngine()->getConfigurationManager();
$prefix = $config_manager->getConfigFromAnySource('lint.jshint.prefix');
$bin = $config_manager->getConfigFromAnySource('lint.jshint.bin');
if ($bin === null) {
$bin = "jshint";

View file

@ -27,8 +27,8 @@ abstract class ArcanistLicenseLinter extends ArcanistLinter {
public function lintPath($path) {
$copyright_holder = $this->getConfig('copyright_holder');
if ($copyright_holder === null) {
$working_copy = $this->getEngine()->getWorkingCopy();
$copyright_holder = $working_copy->getConfig('copyright_holder');
$config = $this->getEngine()->getConfigurationManager();
$copyright_holder = $config->getConfigFromAnySource('copyright_holder');
}
if (!$copyright_holder) {

View file

@ -23,8 +23,8 @@ final class ArcanistPEP8Linter extends ArcanistExternalLinter {
public function getDefaultFlags() {
// TODO: Warn that all of this is deprecated.
$working_copy = $this->getEngine()->getWorkingCopy();
$options = $working_copy->getConfig('lint.pep8.options');
$config = $this->getEngine()->getConfigurationManager();
$options = $config->getConfigFromAnySource('lint.pep8.options');
if ($options === null) {
$options = $this->getConfig('options');
@ -46,9 +46,9 @@ final class ArcanistPEP8Linter extends ArcanistExternalLinter {
return 'pep8';
}
$working_copy = $this->getEngine()->getWorkingCopy();
$old_prefix = $working_copy->getConfig('lint.pep8.prefix');
$old_bin = $working_copy->getConfig('lint.pep8.bin');
$config = $this->getEngine()->getConfigurationManager();
$old_prefix = $config->getConfigFromAnySource('lint.pep8.prefix');
$old_bin = $config->getConfigFromAnySource('lint.pep8.bin');
if ($old_prefix || $old_bin) {
// TODO: Deprecation warning.

View file

@ -36,11 +36,11 @@ final class ArcanistPhpcsLinter extends ArcanistExternalLinter {
public function getDefaultFlags() {
// TODO: Deprecation warnings.
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
$options = $working_copy->getConfig('lint.phpcs.options');
$options = $config->getConfigFromAnySource('lint.phpcs.options');
$standard = $working_copy->getConfig('lint.phpcs.standard');
$standard = $config->getConfigFromAnySource('lint.phpcs.standard');
$options .= !empty($standard) ? ' --standard=' . $standard : '';
return $options;
@ -48,8 +48,8 @@ final class ArcanistPhpcsLinter extends ArcanistExternalLinter {
public function getDefaultBinary() {
// TODO: Deprecation warnings.
$working_copy = $this->getEngine()->getWorkingCopy();
$bin = $working_copy->getConfig('lint.phpcs.bin');
$config = $this->getEngine()->getConfigurationManager();
$bin = $config->getConfigFromAnySource('lint.phpcs.bin');
if ($bin) {
return $bin;
}

View file

@ -29,9 +29,9 @@ final class ArcanistPyFlakesLinter extends ArcanistLinter {
}
public function lintPath($path) {
$working_copy = $this->getEngine()->getWorkingCopy();
$pyflakes_path = $working_copy->getConfig('lint.pyflakes.path');
$pyflakes_prefix = $working_copy->getConfig('lint.pyflakes.prefix');
$config = $this->getEngine()->getConfigurationManager();
$pyflakes_path = $config->getConfigFromAnySource('lint.pyflakes.path');
$pyflakes_prefix = $config->getConfigFromAnySource('lint.pyflakes.prefix');
// Default to just finding pyflakes in the users path
$pyflakes_bin = 'pyflakes';

View file

@ -55,11 +55,14 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
private function getMessageCodeSeverity($code) {
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
$error_regexp = $working_copy->getConfig('lint.pylint.codes.error');
$warning_regexp = $working_copy->getConfig('lint.pylint.codes.warning');
$advice_regexp = $working_copy->getConfig('lint.pylint.codes.advice');
$error_regexp =
$config->getConfigFromAnySource('lint.pylint.codes.error');
$warning_regexp =
$config->getConfigFromAnySource('lint.pylint.codes.warning');
$advice_regexp =
$config->getConfigFromAnySource('lint.pylint.codes.advice');
if (!$error_regexp && !$warning_regexp && !$advice_regexp) {
throw new ArcanistUsageException(
@ -98,8 +101,8 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
$pylint_bin = "pylint";
// Use the PyLint prefix specified in the config file
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.pylint.prefix');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.pylint.prefix');
if ($prefix !== null) {
$pylint_bin = $prefix."/bin/".$pylint_bin;
}
@ -122,11 +125,11 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
private function getPyLintPythonPath() {
// Get non-default install locations for pylint and its dependencies
// libraries.
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
$prefixes = array(
$working_copy->getConfig('lint.pylint.prefix'),
$working_copy->getConfig('lint.pylint.logilab_astng.prefix'),
$working_copy->getConfig('lint.pylint.logilab_common.prefix'),
$config->getConfigFromAnySource('lint.pylint.prefix'),
$config->getConfigFromAnySource('lint.pylint.logilab_astng.prefix'),
$config->getConfigFromAnySource('lint.pylint.logilab_common.prefix'),
);
// Add the libraries to the python search path
@ -140,7 +143,8 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
}
}
$config_paths = $working_copy->getConfig('lint.pylint.pythonpath');
$working_copy = $this->getEngine()->getWorkingCopy();
$config_paths = $config->getConfigFromAnySource('lint.pylint.pythonpath');
if ($config_paths !== null) {
foreach ($config_paths as $config_path) {
if ($config_path !== null) {
@ -161,11 +165,12 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
$options = array('-rn', '-iy');
$working_copy = $this->getEngine()->getWorkingCopy();
$config = $this->getEngine()->getConfigurationManager();
// Specify an --rcfile, either absolute or relative to the project root.
// Stupidly, the command line args above are overridden by rcfile, so be
// careful.
$rcfile = $working_copy->getConfig('lint.pylint.rcfile');
$rcfile = $config->getConfigFromAnySource('lint.pylint.rcfile');
if ($rcfile !== null) {
$rcfile = Filesystem::resolvePath(
$rcfile,
@ -174,7 +179,7 @@ final class ArcanistPyLintLinter extends ArcanistLinter {
}
// Add any options defined in the config file for PyLint
$config_options = $working_copy->getConfig('lint.pylint.options');
$config_options = $config->getConfigFromAnySource('lint.pylint.options');
if ($config_options !== null) {
$options = array_merge($options, $config_options);
}

View file

@ -17,8 +17,8 @@ final class ArcanistRubyLinter extends ArcanistExternalLinter {
public function getDefaultBinary() {
// TODO: Deprecation warning.
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.ruby.prefix');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.ruby.prefix');
if ($prefix !== null) {
$ruby_bin = $prefix.'ruby';
}

View file

@ -27,8 +27,8 @@ final class ArcanistScalaSBTLinter extends ArcanistLinter {
$sbt_bin = "sbt";
// Use the SBT prefix specified in the config file
$working_copy = $this->getEngine()->getWorkingCopy();
$prefix = $working_copy->getConfig('lint.scala_sbt.prefix');
$config = $this->getEngine()->getConfigurationManager();
$prefix = $config->getConfigFromAnySource('lint.scala_sbt.prefix');
if ($prefix !== null) {
$sbt_bin = $prefix . $sbt_bin;
}

View file

@ -487,7 +487,7 @@ final class ArcanistXHPASTLinter extends ArcanistBaseXHPASTLinter {
$hook_obj = null;
$working_copy = $this->getEngine()->getWorkingCopy();
if ($working_copy) {
$hook_class = $working_copy->getConfig('lint.xhpast.switchhook');
$hook_class = $working_copy->getProjectConfig('lint.xhpast.switchhook');
$hook_class = $this->getConfig('switchhook', $hook_class);
if ($hook_class) {
$hook_obj = newv($hook_class, array());
@ -1696,7 +1696,7 @@ final class ArcanistXHPASTLinter extends ArcanistBaseXHPASTLinter {
if ($working_copy) {
// If a naming hook is configured, give it a chance to override the
// default results for all the symbol names.
$hook_class = $working_copy->getConfig('lint.xhpast.naminghook');
$hook_class = $working_copy->getProjectConfig('lint.xhpast.naminghook');
if ($hook_class) {
$hook_obj = newv($hook_class, array());
foreach ($names as $k => $name_attrs) {

View file

@ -71,9 +71,13 @@ abstract class ArcanistLinterTestCase extends ArcanistPhutilTestCase {
$dir,
$config_file,
'Unit Test');
$configuration_manager = new ArcanistConfigurationManager();
$configuration_manager->setWorkingCopyIdentity($working_copy);
$engine = new UnitTestableArcanistLintEngine();
$engine->setWorkingCopy($working_copy);
$engine->setConfigurationManager($configuration_manager);
$engine->setPaths(array($path));
$engine->setCommitHookMode(idx($config, 'hook', false));

View file

@ -212,7 +212,7 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI {
$default_relative = null;
$working_copy = $this->getWorkingCopyIdentity();
if ($working_copy) {
$default_relative = $working_copy->getConfig(
$default_relative = $working_copy->getProjectConfig(
'git.default-relative-commit');
$this->setBaseCommitExplanation(
"it is the merge-base of '{$default_relative}' and HEAD, as ".

View file

@ -72,7 +72,7 @@ EOTEXT
switch ($name) {
case ArcanistConfigurationManager::CONFIG_SOURCE_PROJECT:
// Respect older names in project config.
$val = $this->getWorkingCopy()->getConfig($key);
$val = $this->getWorkingCopy()->getProjectConfig($key);
break;
default:
$val = idx($config, $key);

View file

@ -182,7 +182,7 @@ EOTEXT
$transaction,
$repository);
$lint_engine = $working_copy->getConfig('lint.engine');
$lint_engine = $working_copy->getProjectConfig('lint.engine');
if (!$lint_engine) {
return 0;
}

View file

@ -135,7 +135,7 @@ final class ArcanistWorkingCopyIdentity {
}
public function getProjectID() {
return $this->getConfig('project_id');
return $this->getProjectConfig('project_id');
}
public function getProjectRoot() {
@ -153,6 +153,14 @@ final class ArcanistWorkingCopyIdentity {
return $this->projectConfig;
}
/**
* Deprecated; use @{method:getProjectConfig}.
*/
public function getConfig($key, $default = null) {
return $this->getProjectConfig($key, $default);
}
/**
* Read a configuration directive from project configuration. This reads ONLY
* permanent project configuration (i.e., ".arcconfig"), not other
@ -165,7 +173,7 @@ final class ArcanistWorkingCopyIdentity {
*
* @task config
*/
public function getConfig($key, $default = null) {
public function getProjectConfig($key, $default = null) {
$settings = new ArcanistSettings();
$pval = idx($this->projectConfig, $key);
@ -175,7 +183,7 @@ final class ArcanistWorkingCopyIdentity {
if ($pval === null) {
$legacy = $settings->getLegacyName($key);
if ($legacy) {
$pval = $this->getConfig($legacy);
$pval = $this->getProjectConfig($legacy);
}
}
@ -193,7 +201,7 @@ final class ArcanistWorkingCopyIdentity {
* reads ONLY the per-working copy configuration,
* i.e. .(git|hg|svn)/arc/config, and not other configuration
* sources. See @{method:getConfigFromAnySource} to read from any
* config source or @{method:getConfig} to read permanent
* config source or @{method:getProjectConfig} to read permanent
* project-level config.
*
* @task config