- Drop legacy hook tests (#578).
- Extend pkgdown hook tests for latest release where URLs are checked too (#577).
- Fix test to pass with new pkgdown error message (#564).
- fix path resolution for conda (#564).
- Lint .qmd docs also (#570).
- Update hook dependencies (#581).
Thanks to all who contributed to this release: @boxydog, @hadley, @IndrajeetPatil, @jcken95, @jeancochrane, @jrdnbradford, @lorenzwalthert, @owenjonesuob, and @TymekDev.
Release relax the dependency on third-party error messages in our unit tests (#555).
This release ensures unit tests can handle the error messages from {styler} correctly that were modified slightly. Apart from hook dependency updates, this release adds no user-facing changes.
Thanks @joshpersi for contributing to this release.
Apart from two new hooks, many bug fixes and a few minor features, this release focused on improving the user experience when installing the hooks, which caused users the most troubles. We enabled fast hook installation without the need for build time or system dependencies on all platforms thanks to the Posit Package Manager and removal of dependencies {git2r} and {digest}.
Features
- New hook:
no-print-statement
discovers and check for rogue print statements (#505). - New hook:
pkgdown
runspkgdown::check_pkgdown()
to ensure the {pkgdown} config is valid (#393). - add Posit CRAN mirror to ensure macOS binary installs are possible (#488).
codemeta-description-updated
,roxygenize
, anduse-tidy-description
now all support aroot
argument that specifies the directory in the git repo that contains the R package. Defaults to.
since for most R package git repos, the git and R package root coincide (#432, #438).style-files
now supports styling of R code in Quarto docs (#449).style-files
now supports file names with spaces (#516).- Use python 3.10 by default for conda envs (#477).
Bug Fixes
- Make sorting consistent with
spelling::update_wordlist
(#514). - Don't depend on dev version of styler to avoid GitHub rate limit hit (#486).
- fix roxygenize cache invalidation (#464, #520).
- fix missing namespace prefixing in roxygen hook (#525).
Documentation
- improve spelling (#453).
use_ci()
is now documented to takeNA
, notNULL
for argumentci
(#431).- correct typo (#465) and fix error message (#470).
Dependencies
- remove {digest} dependency (#471).
- remove {git2r} dependency (#497).
- Hook dependencies update (#503, #506 #508, #513, #540, #538, #527, #521, #519).
Infrastructure
- Refactored hook dependency update scripts and fixed bug with repos.
- Automatic hook dependency updates (#539, #532).
- use
ubuntu-latest
instead of pinned version for tests (#481). - use new {pkgdown} hook in this repo (#460).
read-only
flag for testing (#529).- Bump actions/checkout (#509, #458) and others (#533).
- ensure local and remote pre-commit execution are the same for this repo (#463).
Other
- Adjust to latest {roxygen2} CRAN release (#536).
Changelog from dev releases is collapsed into this patch release at the time
this release is created. If you need releases by dev release, i.e. 0.3.2.x,
checkout this file at git tag v0.3.2.9020
.
A big thanks goes to all people who made this release reality:
@AliSajid, @averissimo, @clarkliming, @danielinteractive, @denn173, @dependabot[bot], @EzicJ, @fabianegli, @hadley, @IndrajeetPatil, @jashapiro, @joelnitta, @jonathanckt, @jsnel, @kcphila, @KoderKow, @KyleDCox, @lorenzwalthert, @m-muecke, @mythichamster, @ns-rse, @pre-commit-ci[bot], @russHyde, @sempwn, @stefanoborini, @thefabnab, @TNonet, @TymekDev, and @yogat3ch.
parsable-R
hook now gives more context on where and how parsing fails (#423).- fixed R CMD check issues in devel (#425).
- move from experimental to stable (#426).
Thanks to @danielinteractive, @jonocarroll for their contributions.
User visible changes
.pre-commit-config.yaml
templates now contain hook to validate the pre-commit.ci configuration (#407).- {git2r} is no longer needed for user side (#417).
Bug fixes
- Fix bug that prevented pkg load outside directories with precommit files (@mpadge, #413).
- Ensure sorting for
spell-check
hook is case-insensitive on all operating systems. This may re-order your wholeinst/WORDLIST
(#405). - hook
forbid-to-commit
in template.pre-commit-config.yaml
has now the correctexclude-files
regular expression to ignore.csv
,.RData
,.Rds
,.rds
and.Rhistory
(#410).
Internals
options(install.packages.compile.from.source = "never")
is used in the CI to avoid failing builds due to missing build-time deps (#412).- All (R)md files in that repo are now formatted in a pandoc-compliant way (#415).
Thanks to @danielinteractive and @mpadge for their contributions.
API changes
- The
style-files
hook now takesignore-start
andignore-stop
arguments, passed tooptions("styler.ignore_start")
andoptions("styler.ignore_stop")
. By default, {styler} defaults are used. use_precommit()
now exposes the argumentautoupdate
, defaulting toTRUE
(which was the previous behavior). This tells {precommit} whether or not to runautoupdate()
as part of the former function invocation (#386).
New features
- New hook
no-debug-statement
checks for leftoverdebug()
anddebugonce()
statements in the committed code (#385, @lukasfeick-sw). - The template
.pre-commit-config.yaml
does now include the hookfile-contents-sorter
to sort.Rbuildignore
(#366). - The template
.pre-commit-config.yaml
default to monthly hook updates (instead of weekly) to avoid notification triggers and git version convolution (#370). - The codemeta hook was ported to
language: r
(#350).
Documentation
- Refactor README into new README and a Get started vignette (#388).
- Document advantages of pre-commit in vignette (#379).
Bug fixes
- Don't include
R
as a dependency withsnippet_generate("additional-deps-roxygenize")
(#358). roxygenize
hook now fails if it generates an.Rd
file that is not tracked with version control (#363).- Improved compatibility with {renv} (#359, #375, #400).
deps-in-desc
andparsable-R
can now handle code chunk headers with wherepurl
oreval
are not literals likeTRUE
, but variables defined elsewhere in code (#361, #382).deps-in-desc
now prints the original file (not a tempfile) also for.Rmd
and.Rnw
files.
Thanks to all people who contributed to this release: @assignUser, @danhalligan, @gravesti, @hadley, @KyleDCox, @lorenzwalthert, @lukasfeick-sw, @MarkMc1089, @pat-s, @RoyalTS, and @smingerson.
This is a maintenance release on the request of CRAN (#337) and to
improve experience with the language: r
switch conducted in v0.2.0
.
In particular, note that projects using {renv} and RStudio are not very
compatible with hook versions > 0.1.3.9014 and autoupdate()
results
in downgrading the hook versions (#346).
API Changes
- The argument
--no-warn-cache
in thestyle-files
and theroxygenize
hook is deprecated and will be removed in a future release. Please remove it from your.pre-commit-config.yaml
(#340. #341).
Other changes
style-files
hook fails more informatively if required package is not listed inadditional_dependencies:
(#333).- configure all git operations to use LF (#337).
deps-in-desc
always excludesREADME.md
(#336).- Document timeout and other problems with pre-commit.ci (#335).
- simplify
roxygenize
problem handling (#338). - More executables on macOS are detected (#344).
- Only hard dependencies are generated with
snippet_generate("additional-deps-roxygenize")
(#344) - Fixing more CRAN issues (#348).
- Use RSMP for all packages (#348).
Thanks to all people who contributed to this release:
@lorenzwalthert, @pat-s, and @smingerson.
This version marks the switch to
language: r
of all existing hooks. This
means two things:
- creation of isolated pre-commit environments: No more manual
dependency management for hooks nor conflicts with your global R
library and more consistent output of hooks from different
collaborators in a project. Thanks to {renv}'s excellent
caching,
this hardly consumes any space and is fast. This requires the Python
package
pre-commit >= 2.11.1
(ideally even>= 2.13.0
). See *Installation/Update** below (#233, #250, #260, #264, #273, #315, #313, #308, #301, #300, #295, #285, #328). - support for continuous integration via
pre-commit.ci and GitHub
Actions), that is, running
the pre-commit hooks as part of a CI pipeline. This means that hook
passing can be enforced for pull requests, even if the creator did
not run the hooks locally. Further, the diff from running the hooks
is committed and pushed back to the remote repository. This may fix
the failing hook problems in some cases (e.g.
style-files
). Seevignette("ci")
for a comparison of the two services (#318).
API changes
use_precommit()
gains a new argumentci
defaulting to"native"
(for pre-commit) to set up continuous integration. Other allowed values are"gha"
(for
GitHub Actions) orNULL
(for no CI).- The new exported function
use_ci(ci = "native")
can be used to set up continuous integration for existing repos. The default behavior forci
for both functions is governed by the R optionprecommit.ci
. version_precommit()
andupdate_precommit()
are new functions to check the version of the installed pre-commit executable and to update it (#197).style-files
hook gains an argument--cache-root
that is passed tooptions(styler.cache_root = ...)
(#305).style-files
hook now supports the fullstyle_file()
API, e.g. you can supply--scope=spaces
and similar viaargs:
in your.pre-commit-config.yaml
. See the docs for details.style-files
androxygenize
hooks now warn if there is no permanent{R.cache}
cache set up. You can silence the warning with the hook argument--no-warn-cache
(#225).
Installation/Update
Please follow the update instructions or installation instructions depending on whether or not you previously used pre-commit.
Major changes
- Because hooks run in a virtual environment and the
roxygenize
hook runspkgload::load_all()
, you need to list all dependencies of your package inadditional_dependencies
field in.pre-commit-config.yaml
. You will be prompted to add them if they are missing,precommit::snippet_generate("additional-deps-roxygenize")
generates the code you can copy/paste (#247, #248, #249). - the
parsable-R
hook can now also parse.Rmd
files (#325). - In order to avoid multiple installations of the pre-commit framework, a warning is issued if multiple are found so the user can remove them (#266, #273, #277, #278).
use_precommit(..., install_hooks = TRUE)
is no longer blocking by default. New optionprecommit.block_install_hooks
(defaults toFALSE
) governs the behavior (#312).- Always sort
inst/WORDLIST
(#303). .lintr
and.gitlab-ci.yml
are not ignored in the spell check hook (#317).- Warnings are no longer promoted to errors in the styler hook, which
is particularly relevant for the apparently random error
Unknown or uninitialised column: text
(#268). deps-in-desc
now checks.Rprofile
,.Rmd
and.Rnw
files in addition to.R
files (#216).\- the lintr and styler hook now also check
.Rmd
,.Rnw
and.Rprofile
files (#287). {renv}
infra files are not checked anymore by default in the template config files (#237)..png
,.jpeg
,.pdf
and files in.github/workflows
are no longer spell-checked in the template config file (#276).
Minor changes
- rename default branch to main (#307).
- Use dev version of {lintr} to reduce total dependencies from 71 to 59 that brings down install time.
- The location of the pre-commit executable is now also recognized on Apple Silicon when installed with Homebrew (#240).
- The location of the pre-commit executable is now also recognized on
macOS when installed with pip3 and
fs >= 1.5.1
(#330). - pinning python version to 3.9 for conda until problems related to 3.10 are fixed (#310).
- The cache for the roxygen2 hook is now also invalidated for changes in formals if there are no changes in roxygen comments (#214).
- All sub-patterns in the
exclude:
pattern of the spell check hook are now ordered alphabetically (#276). - The
deps-in-desc
hook now points to the hook argument--allow_private_imports
when the hook fails due to private imports (#254). - roxygenize hook is now fully tested (#267).
- Hook scripts were relocated and R hooks now have a file extension (#280).
- Hook dependency updates are proposed by an automatic monthly pull
request to
lorenzwalthert/precommit
. This does not affect users directly (#430). - Updated GitHub Action workflows (#288).
- Use LF line endings in git config to ensure passing tests on Windows for R devel (#321).
- fixing typos (#289).
- fix R CMD Check (#284).
A big hand to all the contributors of this release:
@adamblake, @arbues6, @b4D8, @bart1, @dhersz, @joelnitta, @jucor, @lorenzwalthert, @lukasfeick-sw, @MarkMc1089, @njtierney, @pat-s, @pwildenhain, and @rossdrucker
For previous versions of NEWS.md
with news bullet per patch release,
see the latest NEWS.md
before
gathering.
This is mainly a CRAN maintenance release because of #201 and includes some bug fixes and no API changes.
A big hand to all the contributors of this release: @fschoner, @krzyslom, @lorenzwalthert, @maurolepore, @pat-s, and @zkamvar.
Minor Changes
- install_hooks in
use_precommit()
should now work as expected (#185). - Switching from Travis to GitHub Actions (#191).
use_precommit()
now writes to the right.Rbuildignore
whenroot
is not the current working directory (#188, @krzyslom).- Documentation improvements (#179, @maurolepore)
precommit::uninstall_precommit()
now correctly removes^\\.pre-commit-config.yaml$
from.Rbuildignore
and does not show a prompt (#199).
Initial CRAN release. See https://lorenzwalthert.github.io/precommit/.
- Roxygen hook cache only includes files that are part of the index and will hence be able to use the cache in cases it was previously invalidated without need (#171).
- styler hook should fail if styling any file fails (#174).
- Don't allow legacy hooks by default, delete README hook from usethis informatively (#167).
Major Changes
use_precommit()
gains newinstall_hooks = TRUE
parameter. Now all hook environments defined in yaml config are by default installed in advance. (#163)
Breaking Changes
uninstall_precommit()
'sscope
argument value"global"
was renamed to"user"
.
Major Changes
- By default, the spell check hook now exposes a regex pattern in the
default
.pre-commit-config-config.yaml
for the spell check hook for easy manipulation. Also, additional patterns were excluded such as.sh
(#157).
Minor Changes
DESCRIPTION
now links the pkgdown website in addition to the GitHub repo (#155)..Renviron
,.Rrofile
,.RData
,.feather
and.Rds
is now also excluded from the spell checking hook.
Breaking Changes
A major API review was conducted to make the package ready for a CRAN submission in #152:
- all functions have the argument
path_root
renamed toroot
. - argument
root
now always defaults tohere::here()
for consistency. - argument
config_source
was renamed toconfig_source
inuse_precommit_config()
anduse_precommit()
. use_precommit_config
's argumentforce
gains a default value for consistency withuse_config()
.use_precommit_config
's argumentverbose
now is in the same position as inuse_config()
.
Additional breaking changes are:
- use env
r-precommit
instead ofr-reticulate
to avoid conflicts with other packages commonly installed inr-reticulate
(#147). - the hook
spell-check
does no longer take the hook argumentignore-files
since this was inconsistent with the pre-commit framework. To exclude additional files, specify theexclude:
key in your.pre-commit-config.yaml
file. If you like to keep excluding the default files, make sure you include the default regex (#153).
- roxygenize hook now only ran when
git diff --cached
contains roxygen comments (#151). - conda is a suggested dependency now, so those who choose a different installation method have a more lightweight dependency graph (#136).
- Use more thoughtful order for hooks, between pkg and project (#142).
Test release process.
- auto-detect pre-commit executable when installed via pip for Linux (#120), macOS (#131).
- auto-detect pre-commit executable when installed via brew for macOS (#132).
use_precommit()
gains new argumentconfig_source
to copy an existing config file into the repo at initialization. The argument defaults tooptions('precommit.config_source')
to make it easy for users to use their preferred hooks in every repo they initialize (#111).- Create
r-precommit
env if not existent before installing into it (#114). - Unify vignettes on available hooks and arguments (#109).
- Fail fast when repo is not a git repo (#111).
- default config file has spell-check activated (#118).
- also test on macOS (#120).
- template
.pre-commit-config.yaml
includes hook to check files have a EOF blank line (#126). - spell-check hook now removes blank lines hand has no blank line at EOF (#127).
- depreciate
path_pre_commit_exec()
in favor ofpath_precommit_exec()
and adapt internals to replacepre_commit
withprecommit
(#130). - more coherent error catching for system calls (#135).
- internal refactoring (#136).
-
BREAKING: If you used precommit < 0.0.0.9017 (and if you choose a different installation strategy than
precommit::install_precommit()), you can link your existing executable by setting the R option
precommit.executable` to the path where you stored the pre-commit executable. -
Adding tools to work with hooks:
install_precommit()
,use_precommit()
,uninstall_precommit()
,open_config()
andopen_wordlist()
using conda environments on all platforms. -
Make repo a fully R CMD CHECK compliant R package (includes moving hooks to
inst/bin
frombin
.) -
renamed repo from pre-commit-hooks to precommit.
-
added pkgdown website, restructured README.