package com.pablissimo.sonar;
import org.sonar.api.batch.sensor.SensorContext;
import org.sonar.api.config.Settings;
public class TsLintExecutorConfig {
public static final String CONFIG_FILENAME = "tslint.json";
public static final String TSLINT_FALLBACK_PATH = "node_modules/tslint/bin/tslint";
private String pathToTsLint;
private String configFile;
private String rulesDir;
private String pathToTsConfig;
private boolean shouldPerformTypeCheck;
private String pathToTsLintOutput;
private Integer timeoutMs;
public static TsLintExecutorConfig fromSettings(Settings settings, SensorContext ctx, PathResolver resolver) {
TsLintExecutorConfig toReturn = new TsLintExecutorConfig();
toReturn.setPathToTsLint(resolver.getPath(ctx, TypeScriptPlugin.SETTING_TS_LINT_PATH, TSLINT_FALLBACK_PATH));
toReturn.setConfigFile(resolver.getPath(ctx, TypeScriptPlugin.SETTING_TS_LINT_CONFIG_PATH, CONFIG_FILENAME));
toReturn.setRulesDir(resolver.getPath(ctx, TypeScriptPlugin.SETTING_TS_LINT_RULES_DIR, null));
toReturn.setPathToTsConfig(resolver.getPath(ctx, TypeScriptPlugin.SETTING_TS_LINT_PROJECT_PATH, null));
toReturn.setPathToTsLintOutput(resolver.getPath(ctx, TypeScriptPlugin.SETTING_TS_LINT_OUTPUT_PATH, null));
toReturn.setTimeoutMs(Math.max(5000, settings.getInt(TypeScriptPlugin.SETTING_TS_LINT_TIMEOUT)));
toReturn.setShouldPerformTypeCheck(settings.getBoolean(TypeScriptPlugin.SETTING_TS_LINT_TYPECHECK));
return toReturn;
}
public Boolean useExistingTsLintOutput() {
return this.pathToTsLintOutput != null && !this.pathToTsLintOutput.isEmpty();
}
public Boolean useTsConfigInsteadOfFileList() {
return this.pathToTsConfig != null && !this.pathToTsConfig.isEmpty();
}
public String getPathToTsLint() {
return pathToTsLint;
}
public void setPathToTsLint(String pathToTsLint) {
this.pathToTsLint = pathToTsLint;
}
public String getConfigFile() {
return configFile;
}
public void setConfigFile(String configFile) {
this.configFile = configFile;
}
public String getRulesDir() {
return rulesDir;
}
public void setRulesDir(String rulesDir) {
this.rulesDir = rulesDir;
}
public Integer getTimeoutMs() {
return timeoutMs;
}
public void setTimeoutMs(Integer timeoutMs) {
this.timeoutMs = timeoutMs;
}
public String getPathToTsConfig() {
return pathToTsConfig;
}
public void setPathToTsConfig(String pathToTsConfig) {
this.pathToTsConfig = pathToTsConfig;
}
public String getPathToTsLintOutput() {
return this.pathToTsLintOutput;
}
public void setPathToTsLintOutput(String pathToTsLintOutput) {
this.pathToTsLintOutput = pathToTsLintOutput;
}
public boolean shouldPerformTypeCheck() {
return this.shouldPerformTypeCheck;
}
public void setShouldPerformTypeCheck(boolean performTypeCheck) {
this.shouldPerformTypeCheck = performTypeCheck;
}
}