···11+pub mod main {
22+ use crate::{config::ConfFile, err::StatixErr};
33+ pub fn main() -> Result<(), StatixErr> {
44+ println!("{}", ConfFile::dump(&ConfFile::default()));
55+ Ok(())
66+ }
77+}
+4-4
bin/src/err.rs
···11use std::io;
2233-// use globset::ErrorKind;
44-// use rnix::parser::ParseError;
53use thiserror::Error;
6475#[derive(Error, Debug)]
···1412 InvalidPosition(String),
1513 #[error("unable to parse `{0}` as warning code")]
1614 InvalidWarningCode(String),
1717- #[error("unable to parse config file, error at: `{0}`")]
1818- ConfFileParse(String),
1515+ #[error("unable to parse config file: {0}")]
1616+ ConfFileParse(toml::de::Error),
1717+ #[error("unable to parse nix version: `{0}`")]
1818+ ConfFileVersionParse(String),
1919}
20202121// #[derive(Error, Debug)]
+12-12
bin/src/fix.rs
···4141 use std::borrow::Cow;
42424343 use crate::{
4444- config::{Fix as FixConfig, FixOut, Single as SingleConfig},
4444+ config::{
4545+ FixOut, Single as SingleConfig, {ConfFile, Fix as FixConfig},
4646+ },
4547 err::{FixErr, StatixErr},
4646- utils,
4748 };
48494949- use lib::session::{SessionInfo, Version};
5050+ use lib::session::SessionInfo;
5051 use similar::TextDiff;
51525253 pub fn all(fix_config: FixConfig) -> Result<(), StatixErr> {
5354 let vfs = fix_config.vfs()?;
5454- let lints = fix_config.lints()?;
5555+ let conf_file = ConfFile::discover(&fix_config.conf_path)?;
55565656- let version = utils::get_version_info()
5757- .unwrap()
5858- .parse::<Version>()
5959- .unwrap();
5757+ let lints = conf_file.lints();
5858+ let version = conf_file.version()?;
5959+6060 let session = SessionInfo::from_version(version);
61616262 for entry in vfs.iter() {
···102102 let original_src = entry.contents;
103103 let (line, col) = single_config.position;
104104105105- let version = utils::get_version_info()
106106- .unwrap()
107107- .parse::<Version>()
108108- .unwrap();
105105+ let conf_file = ConfFile::discover(&single_config.conf_path)?;
106106+107107+ let version = conf_file.version()?;
108108+109109 let session = SessionInfo::from_version(version);
110110111111 match (
+1
bin/src/lib.rs
···11pub mod config;
22pub mod dirs;
33+pub mod dump;
34pub mod err;
45pub mod explain;
56pub mod fix;
+10-7
bin/src/lint.rs
···4343 use std::io;
44444545 use super::lint_with;
4646- use crate::{config::Check as CheckConfig, err::StatixErr, traits::WriteDiagnostic, utils};
4646+ use crate::{
4747+ config::{Check as CheckConfig, ConfFile},
4848+ err::StatixErr,
4949+ traits::WriteDiagnostic,
5050+ };
47514848- use lib::session::{SessionInfo, Version};
5252+ use lib::session::SessionInfo;
49535054 pub fn main(check_config: CheckConfig) -> Result<(), StatixErr> {
5155 let vfs = check_config.vfs()?;
5256 let mut stdout = io::stdout();
5353- let lints = check_config.lints()?;
5757+5858+ let conf_file = ConfFile::discover(&check_config.conf_path)?;
5959+ let lints = conf_file.lints();
6060+ let version = conf_file.version()?;
54615555- let version = utils::get_version_info()
5656- .unwrap()
5757- .parse::<Version>()
5858- .unwrap();
5962 let session = SessionInfo::from_version(version);
60636164 let lint = |vfs_entry| lint_with(vfs_entry, &lints, &session);