@@ -42,8 +42,8 @@ pub enum StaticDistDownloadError {
4242 #[ error( "Failed to parse the SHA512 sum file" ) ]
4343 Sha512Corruption ,
4444}
45- const MIN_CLANG_TOOLS_VERSION : & str = "9" ;
46- const MAX_CLANG_TOOLS_VERSION : & str = "21" ;
45+ const MIN_CLANG_TOOLS_VERSION : u8 = 9 ;
46+ pub ( crate ) const MAX_CLANG_TOOLS_VERSION : u8 = 21 ;
4747const CLANG_TOOLS_REPO : & str = "https://github.com/cpp-linter/clang-tools-static-binaries" ;
4848const CLANG_TOOLS_TAG : & str = "master-6e612956" ;
4949
@@ -54,21 +54,34 @@ pub struct StaticDistDownloader;
5454impl Cacher for StaticDistDownloader { }
5555
5656impl StaticDistDownloader {
57+ pub fn get_major_version_range ( ) -> RangeInclusive < u8 > {
58+ let min_clang_tools_version: u8 = option_env ! ( "MIN_CLANG_TOOLS_VERSION" )
59+ . and_then ( |v| match v. parse :: < u8 > ( ) {
60+ Ok ( parsed) => Some ( parsed) ,
61+ Err ( e) => {
62+ log:: error!( "Invalid MIN_CLANG_TOOLS_VERSION env var value: {v}. Error: {e}" ) ;
63+ None
64+ }
65+ } )
66+ . unwrap_or ( MIN_CLANG_TOOLS_VERSION ) ;
67+ let max_clang_tools_version: u8 = option_env ! ( "MAX_CLANG_TOOLS_VERSION" )
68+ . and_then ( |v| match v. parse :: < u8 > ( ) {
69+ Ok ( parsed) => Some ( parsed) ,
70+ Err ( e) => {
71+ log:: error!( "Invalid MAX_CLANG_TOOLS_VERSION env var value: {v}. Error: {e}" ) ;
72+ None
73+ }
74+ } )
75+ . unwrap_or ( MAX_CLANG_TOOLS_VERSION ) ;
76+ min_clang_tools_version..=max_clang_tools_version
77+ }
78+
5779 /// Finds a suitable version from `req_ver` within the range of available clang tools versions.
5880 ///
5981 /// The available versions are determined by the `MIN_CLANG_TOOLS_VERSION` and
6082 /// `MAX_CLANG_TOOLS_VERSION` environment variables (inclusive) at compile time.
6183 fn find_suitable_version ( req_ver : & VersionReq ) -> Option < Version > {
62- let min_clang_tools_version: u8 = option_env ! ( "MIN_CLANG_TOOLS_VERSION" )
63- . unwrap_or ( MIN_CLANG_TOOLS_VERSION )
64- . parse ( )
65- . expect ( "Invalid MIN_CLANG_TOOLS_VERSION env var value" ) ;
66- let max_clang_tools_version: u8 = option_env ! ( "MAX_CLANG_TOOLS_VERSION" )
67- . unwrap_or ( MAX_CLANG_TOOLS_VERSION )
68- . parse ( )
69- . expect ( "Invalid MAX_CLANG_TOOLS_VERSION env var value" ) ;
70- let clang_tools_versions: RangeInclusive < u8 > =
71- min_clang_tools_version..=max_clang_tools_version;
84+ let clang_tools_versions: RangeInclusive < u8 > = Self :: get_major_version_range ( ) ;
7285 let outlier = Version :: new ( 12 , 0 , 1 ) ;
7386 for ver in clang_tools_versions
7487 . map ( |v| Version :: new ( v as u64 , 0 , 0 ) )
0 commit comments