Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 14 additions & 11 deletions qlty-check/src/executor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,20 @@ impl Executor {

let mut loaded_config_files = vec![];

// load exported config paths before anything else
// load repository config files first so that workspace files take
// precedence over exported configs in the staging area
for config_file in &repository_config_files {
if let Err(err) = load_config_file_from_repository(
config_file,
&self.plan.workspace,
&self.plan.staging_area.destination_directory,
) {
error!("Failed to load config file from repository: {:?}", err);
}
}

// load exported config paths — these are skipped if the file already
// exists in the destination (e.g. from a workspace config file above)
for config_file in &exported_config_paths {
if self.plan.workspace.root != self.plan.staging_area.destination_directory {
// for formatters
Expand All @@ -337,16 +350,6 @@ impl Executor {
self.check_and_copy_configs_into_tool_install(&mut loaded_config_files)?;
self.plan_plugins_fetch(&mut loaded_config_files)?;

for config_file in &repository_config_files {
if let Err(err) = load_config_file_from_repository(
config_file,
&self.plan.workspace,
&self.plan.staging_area.destination_directory,
) {
error!("Failed to load config file from repository: {:?}", err);
}
}

for config_file in &config_file_names {
if self.plan.workspace.root != self.plan.staging_area.destination_directory {
// for formatters
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.qlty/results
.qlty/logs
.qlty/out
.qlty/sources
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
config_version = "0"

[[source]]
name = "config-source"
directory = "config-source"

[[plugin]]
name = "precedence-linter"
version = "1.0.0"

[[plugin]]
name = "precedence-formatter"
version = "1.0.0"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sample.sh:2:1: EXPORTED formatter used exported config
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sample.sh:2:1: EXPORTED linter used exported config
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
config_version = "0"

[plugins.definitions.precedence-linter]
file_types = ["shell"]
config_files = ["linter-results.txt"]
exported_config_paths = [
"linter-results.txt",
]

[plugins.definitions.precedence-linter.drivers.lint]
prepare_script = "mkdir ${linter} && echo type %1 > ${linter}/cat.cmd || echo type %1 > ${linter}/cat.cmd"
script = "cat linter-results.txt"
output_format = "regex"
output_regex = "((?P<path>.*):(?P<line>-?\\d+):(?P<col>-?\\d+): (?P<code>\\S+) (?P<message>.+))\n"
success_codes = [0]

[plugins.definitions.precedence-formatter]
file_types = ["shell"]
config_files = ["formatter-results.txt"]
exported_config_paths = [
"formatter-results.txt",
]

[plugins.definitions.precedence-formatter.drivers.fmt]
driver_type = "formatter"
prepare_script = "mkdir ${linter} && echo type %1 > ${linter}/cat.cmd || echo type %1 > ${linter}/cat.cmd"
script = "cat formatter-results.txt"
output_format = "regex"
output_regex = "((?P<path>.*):(?P<line>-?\\d+):(?P<col>-?\\d+): (?P<code>\\S+) (?P<message>.+))\n"
success_codes = [0]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sample.sh:2:1: WORKSPACE formatter used workspace config
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sample.sh:2:1: WORKSPACE linter used workspace config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/sh
echo hi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
✖ 2 issues
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

ISSUES: 2[..]

sample.sh:2:0
2:0 medium formatter used workspace config precedence-formatter:WORKSPACE[..]
2:0 medium linter used workspace config precedence-linter:WORKSPACE[..]
[..]
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
bin.name = "qlty"
args = ["check", "--all", "--no-cache"]
status.code = 1