diff --git a/.Rbuildignore b/.Rbuildignore index a67ded2..9388454 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -2,3 +2,5 @@ ^\.Rproj\.user$ ^\.github$ ^README\.Rmd$ +^Makefile$ +^Jenkinsfile$ diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..77d18ba --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,21 @@ +pipeline { + agent any { + stages { + stage('Build') { + steps { + make build + } + } + stage('Check') { + steps { + make check + } + } + stage('Clean') { + steps { + make clean + } + } + } + } +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..664fc9b --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +# h/t to @jimhester and @yihui for this parse block: +# https://github.com/yihui/knitr/blob/dc5ead7bcfc0ebd2789fe99c527c7d91afb3de4a/Makefile#L1-L4 +# Note the portability change as suggested in the manual: +# https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Writing-portable-packages +PKGNAME = `sed -n "s/Package: *\([^ ]*\)/\1/p" DESCRIPTION` +PKGVERS = `sed -n "s/Version: *\([^ ]*\)/\1/p" DESCRIPTION` + + +all: check + +build: install_deps + R CMD build . + +check: build + R CMD check --no-manual $(PKGNAME)_$(PKGVERS).tar.gz + +install_deps: + Rscript \ + -e 'if (!requireNamespace("remotes")) install.packages("remotes")' \ + -e 'remotes::install_deps(dependencies = TRUE)' + +install: build + R CMD INSTALL $(PKGNAME)_$(PKGVERS).tar.gz + +clean: + @rm -rf $(PKGNAME)_$(PKGVERS).tar.gz $(PKGNAME).Rcheck