diff options
author | Jan Gorecki <J.Gorecki@wit.edu.pl> | 2023-11-29 07:25:40 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-29 07:25:40 +0100 |
commit | 5267c464eb5e4b23e44cdb7c56919991f4f67ae3 (patch) | |
tree | 2071e1c9b14e85fa833565ae04e810385b39f218 /src | |
parent | bc3eb031c2f3e41bb49b09a702ec6febc7fbc947 (diff) |
feat: R lang packages version, remove .Rprofile from rlang detection (#5588)
* do not detect R for .Rprofile files, closes #2817
* get R package version, #5586
* update schema
* fix and simplify regex for rlang package version
* attempt to fix regex
* proper detect R packages, closes #5590
* reduce diff vs master branch
Diffstat (limited to 'src')
-rw-r--r-- | src/configs/rlang.rs | 2 | ||||
-rw-r--r-- | src/modules/package.rs | 21 | ||||
-rw-r--r-- | src/modules/rlang.rs | 4 |
3 files changed, 24 insertions, 3 deletions
diff --git a/src/configs/rlang.rs b/src/configs/rlang.rs index 3982b723d..c759f570f 100644 --- a/src/configs/rlang.rs +++ b/src/configs/rlang.rs @@ -27,7 +27,7 @@ impl<'a> Default for RLangConfig<'a> { symbol: "📐 ", disabled: false, detect_extensions: vec!["R", "Rd", "Rmd", "Rproj", "Rsx"], - detect_files: vec![".Rprofile"], + detect_files: vec!["DESCRIPTION"], detect_folders: vec![".Rproj.user"], } } diff --git a/src/modules/package.rs b/src/modules/package.rs index 4c9f20b15..f72cb059b 100644 --- a/src/modules/package.rs +++ b/src/modules/package.rs @@ -310,6 +310,13 @@ fn get_dart_pub_version(context: &Context, config: &PackageConfig) -> Option<Str format_version(raw_version, config.version_format) } +fn get_rlang_version(context: &Context, config: &PackageConfig) -> Option<String> { + let file_contents = context.read_file_from_pwd("DESCRIPTION")?; + let re = Regex::new(r"(?m)^Version:\s*(?P<version>.*$)").unwrap(); + let caps = re.captures(&file_contents)?; + format_version(&caps["version"], config.version_format) +} + fn get_version(context: &Context, config: &PackageConfig) -> Option<String> { let package_version_fn: Vec<fn(&Context, &PackageConfig) -> Option<String>> = vec![ get_cargo_version, @@ -330,6 +337,7 @@ fn get_version(context: &Context, config: &PackageConfig) -> Option<String> { get_sbt_version, get_daml_project_version, get_dart_pub_version, + get_rlang_version, ]; package_version_fn.iter().find_map(|f| f(context, config)) @@ -1402,6 +1410,19 @@ environment: project_dir.close() } + #[test] + fn test_extract_rlang_version() -> io::Result<()> { + let config_name = "DESCRIPTION"; + let config_content = " +Package: starship +Version: 1.0.0 +Title: Starship +"; + let project_dir = create_project_dir()?; + fill_config(&project_dir, config_name, Some(config_content))?; + expect_output(&project_dir, Some("v1.0.0"), None); + project_dir.close() + } fn create_project_dir() -> io::Result<TempDir> { tempfile::tempdir() } diff --git a/src/modules/rlang.rs b/src/modules/rlang.rs index a3902497f..5620e025e 100644 --- a/src/modules/rlang.rs +++ b/src/modules/rlang.rs @@ -133,9 +133,9 @@ https://www.gnu.org/licenses/."#; } #[test] - fn folder_with_rprofile_files() -> io::Result<()> { + fn folder_with_description_files() -> io::Result<()> { let dir = tempfile::tempdir()?; - File::create(dir.path().join(".Rprofile"))?.sync_all()?; + File::create(dir.path().join("DESCRIPTION"))?.sync_all()?; check_r_render(&dir); dir.close() } |