diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b5da7f1a3..115c448f8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,14 +8,20 @@ repos: hooks: - id: style-files args: [--style_pkg=styler, --style_fun=tidyverse_style] - exclude: 'tests/testthat/.*/.*\.R' + exclude: > + (?x)^( + tests/testthat/.*/.*\.R(md)?| + vignettes/customizing_styler\.Rmd| + tests/testthat/public-api/xyzfile-rnw/random4\.Rnw| + )$ - id: roxygenize - id: use-tidy-description - id: spell-check exclude: > (?x)^( - data/.*| \.github/.*\.yaml| + data/.*| + tests/testthat/.*| touchstone/config\.json| (.*/|)\.Rprofile| (.*/|)\.Renviron| @@ -38,13 +44,31 @@ repos: )$ - id: readme-rmd-rendered - id: parsable-R + exclude: > + (?x)^( + tests/testthat/public-api/xyzaddin/addin_region-.*| + tests/testmanual/addins/r-invalid\.R| + tests/testthat/escaping/basic-escape-out\.R| + tests/testthat/indention_operators/base_pipe_and_assignment-.*| + tests/testthat/exception_handling/parser-error.R| + )$ - id: no-browser-statement + exclude: > + (?x)^( + tests/testthat/public-api/xyzaddin/addin_region-.*| + tests/testmanual/addins/r-invalid\.R| + tests/testthat/escaping/basic-escape-out\.R| + tests/testthat/indention_operators/base_pipe_and_assignment-.*| + tests/testthat/exception_handling/parser-error.R| + )$ - id: deps-in-desc exclude: > (?x)^( touchstone/.*| - tests/testthat/.*-in\.R(md)?| - tests/testthat/.*-out\.R(md)? + tests/testmanual/addins/r-invalid\.R| + tests/testthat/escaping/basic-escape-out\.R| + tests/testthat/rnw/011-conditional-eval-out\.Rnw| + tests/testthat/.*\.R(md)? )$ - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 diff --git a/DESCRIPTION b/DESCRIPTION index 28f1fcde8..a04314cc0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Type: Package Package: styler Title: Non-Invasive Pretty Printing of R Code -Version: 1.6.1.9000 +Version: 1.6.2 Authors@R: c(person(given = "Kirill", family = "Müller", diff --git a/NEWS.md b/NEWS.md index b62846572..586b55446 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# styler 1.2 + +* clean up cache files older than one week (#842). + # styler 1.6.1 * Files with `.Rmarkdown` extension are now recognized as an R markdown files in diff --git a/R/nest.R b/R/nest.R index aa3d11c90..9fa5d96da 100644 --- a/R/nest.R +++ b/R/nest.R @@ -135,7 +135,7 @@ drop_cached_children <- function(pd) { #' @details #' Note that top-level comments **above** code have negative parents #' (the negative value of the parent of the code expression that follows after, -#' a nother comment might be in the way though), all comments that are not top +#' another comment might be in the way though), all comments that are not top #' level have positive ids. All comments for which no code follows afterwards #' have parent 0. #' @examples diff --git a/R/utils-cache.R b/R/utils-cache.R index e9e377a79..a1991d4ea 100644 --- a/R/utils-cache.R +++ b/R/utils-cache.R @@ -201,7 +201,7 @@ cache_dir_default <- function() { #' Create more specs #' -#' Syntactic suggar for creating more specs. This is useful when we want to add +#' Syntactic sugar for creating more specs. This is useful when we want to add #' more arguments (because we can search for this function in the source code). #' @keywords internal cache_more_specs <- function(include_roxygen_examples, base_indention) { diff --git a/R/zzz.R b/R/zzz.R index 44f47b7e5..2917d4f6f 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -8,54 +8,31 @@ styler.ignore_start = "# styler: off", styler.ignore_stop = "# styler: on", styler.quiet = FALSE, - styler.test_dir_writable = TRUE, - styler.interactive_ask_remove_old_caches = TRUE + styler.test_dir_writable = TRUE ) toset <- !(names(op.styler) %in% names(op)) if (any(toset)) options(op.styler[toset]) - remind_removing_old_cache() + remove_cache_old_versions() + remove_old_cache_files() invisible() } -#' Ask people to remove the cache -#' -#' The way RStudio Startup works does not allow o read the prompt for some -#' reasons (https://stackoverflow.com/questions/55772436/readline-does-not-prompt-user-input-from-rprofile-site-in-rstudio) -#' So we better don't use the prompt and issue a message only. -#' @keywords internal -remind_removing_old_cache <- function() { - if (interactive() && getOption("styler.interactive_ask_remove_old_caches", TRUE)) { - dirs <- list.dirs(R.cache::getCachePath("styler"), recursive = FALSE) - if (length(dirs) < 1) { - return() - } - dirs <- dirs[unname(sapply(dirs, function(x) length(list.files(x)) > 0))] - package_versions <- package_version(basename(dirs), strict = FALSE) - package_versions <- package_versions[!is.na(package_versions)] - old_package_versions <- package_versions[package_versions < styler_version] - if (length(old_package_versions) < 1) { - return() - } +remove_old_cache_files <- function() { + all_cached <- list.files( + R.cache::getCachePath(c("styler", styler_version)), + full.names = TRUE, recursive = TRUE + ) + date_boundary <- Sys.time() - 60 * 60 * 24 * 6 + file.remove( + all_cached[file.info(all_cached)$mtime < date_boundary] + ) +} + - cmd <- glue::glue("styler::cache_clear(\"{basename(dirs)}\", ask = FALSE)") %>% - paste0(collapse = "\n") - cli::cli_alert_info(paste0( - "You are using {{styler}} version {styler_version} but we found ", - "caches for older versions of {{styler}}.\n", - "You can delete them with the following commands:" - )) - cat("\n") - cli::cli_code(cmd) - cat("\n") - cli::cli_alert_info( - paste( - "We'll remind you every time you update {{styler}}.", - "To suppress this prompt in the future:" - ) - ) - cat("\n") - cli::cli_code( - 'options("styler.interactive_ask_remove_old_caches" = FALSE)' - ) - } +remove_cache_old_versions <- function() { + dirs <- list.dirs(R.cache::getCachePath("styler"), recursive = FALSE) + old_package_dirs <- dirs[basename(dirs) != as.character(styler_version)] + purrr::walk(old_package_dirs, function(dir) { + unlink(dir, recursive = TRUE, force = TRUE) + }) } diff --git a/cran-comments.md b/cran-comments.md index 7a71a7c37..63c531556 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,6 +1,8 @@ -This is a submission to fix a problem with persistent caching, reported by -Prof Ripley on 07.09.2021, and invalid URLs, based on an email from Uwe Ligges -on 17.09.2021. +This is a re-submission to fix a problem with persistent caching. Note that +all cached files are of size 0 and this is by design to keep the cache small. +Hence, the cache will still have files of size 0, but we remove all files older +than a week and remove all caches for versions of styler other than the one +running as requested. ## Test environments diff --git a/man/cache_more_specs.Rd b/man/cache_more_specs.Rd index 3cac92a92..05f78d2de 100644 --- a/man/cache_more_specs.Rd +++ b/man/cache_more_specs.Rd @@ -7,7 +7,7 @@ cache_more_specs(include_roxygen_examples, base_indention) } \description{ -Syntactic suggar for creating more specs. This is useful when we want to add +Syntactic sugar for creating more specs. This is useful when we want to add more arguments (because we can search for this function in the source code). } \keyword{internal} diff --git a/man/find_pos_id_to_keep.Rd b/man/find_pos_id_to_keep.Rd index b683b0d32..c49b4c0aa 100644 --- a/man/find_pos_id_to_keep.Rd +++ b/man/find_pos_id_to_keep.Rd @@ -22,7 +22,7 @@ typical roxygen annotated code. \details{ Note that top-level comments \strong{above} code have negative parents (the negative value of the parent of the code expression that follows after, -a nother comment might be in the way though), all comments that are not top +another comment might be in the way though), all comments that are not top level have positive ids. All comments for which no code follows afterwards have parent 0. } diff --git a/man/remind_removing_old_cache.Rd b/man/remind_removing_old_cache.Rd deleted file mode 100644 index cc40e1847..000000000 --- a/man/remind_removing_old_cache.Rd +++ /dev/null @@ -1,14 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/zzz.R -\name{remind_removing_old_cache} -\alias{remind_removing_old_cache} -\title{Ask people to remove the cache} -\usage{ -remind_removing_old_cache() -} -\description{ -The way RStudio Startup works does not allow o read the prompt for some -reasons (https://stackoverflow.com/questions/55772436/readline-does-not-prompt-user-input-from-rprofile-site-in-rstudio) -So we better don't use the prompt and issue a message only. -} -\keyword{internal} diff --git a/tests/testmanual/tests b/tests/testmanual/tests index e54f0373b..118801f24 100644 --- a/tests/testmanual/tests +++ b/tests/testmanual/tests @@ -3,7 +3,7 @@ ## Addins * set style: - - test setting a valid stlye + - test setting a valid style - test setting an invalid style * style active file: - saved .R file (valid and invalid code) @@ -23,4 +23,3 @@ - unsaved .Rnw file - saved non-R file - unsaved R file -