summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Gorecki <J.Gorecki@wit.edu.pl>2023-11-29 07:25:40 +0100
committerGitHub <noreply@github.com>2023-11-29 07:25:40 +0100
commit5267c464eb5e4b23e44cdb7c56919991f4f67ae3 (patch)
tree2071e1c9b14e85fa833565ae04e810385b39f218 /src
parentbc3eb031c2f3e41bb49b09a702ec6febc7fbc947 (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.rs2
-rw-r--r--src/modules/package.rs21
-rw-r--r--src/modules/rlang.rs4
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()
}