-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
109 lines (90 loc) · 2.46 KB
/
Makefile
File metadata and controls
109 lines (90 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
###################################################
#################### MaRP v0.3 ####################
###################################################
# What R command should we run?
RCMD := R -q -e
# Which fields in Description should be considered as "dependencies"?
DEP_FIELDS := c("Depends", "Imports")
# This should return a valid R vector
# Get package information
PKGNAME := $(shell sed -n "s/Package: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGVERS := $(shell sed -n "s/Version: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGSRC := $(shell basename `pwd`)
.PHONY: all
all: check clean
.PHONY: deps
deps:
@Rscript -e\
'depstring <- packageDescription(pkg = ".",\
lib.loc = ".",\
fields =$(DEP_FIELDS));\
depstring <- Reduce(paste, Filter(\(x) !is.na(x), depstring));\
if (!is.null(depstring)) {\
deps <- gsub("^R \\\(>= [0-9.]+\\\)", "", depstring);\
deps <- gsub(",\\n", ",", deps);\
deps <- strsplit(trimws(deps), ",")[[1]];\
for (d in deps) {\
if (!require(d, quietly = TRUE)) {\
cat(paste("Installing", d, "\n"));\
install.packages(d)\
} else {\
cat(paste(d, "already installed\n"))\
}\
}\
} else {\
cat("No dependencies\n")\
}'
.PHONY: document
document:
@$(RCMD) "roxygen2::roxygenize()"
.PHONY: build
build:
cd ..;\
R CMD build --no-manual $(PKGSRC)
.PHONY: build-cran
build-cran:
cd ..;\
R CMD build $(PKGSRC)
.PHONY: test
test:
ifneq (,$(wildcard tests/tinytest.R))
@$(RCMD) "tinytest::build_install_test('.')"
endif
ifneq (,$(wildcard tests/testthat.R))
@$(RCMD) "testthat::test_package('.')"
endif
.PHONY: install
install: build
cd ..;\
R CMD INSTALL $(PKGNAME)_$(PKGVERS).tar.gz
.PHONY: build-cran
check: build-cran
cd ..;\
R CMD check $(PKGNAME)_$(PKGVERS).tar.gz --as-cran
# Update the pkgdown site
.PHONY:build_site
build_site:
@R -q -e "devtools:::build_site(quiet = FALSE)"
.PHONY: vignettes
vignettes:
@echo NYI
.PHONY: clean
clean:
cd ..;\
$(RM) -r $(PKGNAME).Rcheck/ $(PKGNAME)_$(PKGVERS).tar.gz
### Uncomment to enable these features
# .PHONY: coverage
# coverage:
# @$(RCMD) "covr::report(file = 'coverage.html', browse = TRUE)"
# .PHONY: goodpractice
# goodpractice:
# @$(RCMD) "goodpractice::gp('.')"
# .PHONY: check_win_old
# check_win_old: # Check & build on win-builder old release
# @echo NYI
# .PHONY: check_win
# check_win: # ... on win-builder release
# @echo NYI
# .PHONY: check_win_dev
# check_win_dev: # ... on win-builder dev
# @echo NYI