Add some warnings in README
[pkgdev.git] / R / wrappers.R
CommitLineData
156f8ca6
BA
1# Main wrapped entry point: call package function 'func'
2.execMethod = function(func, ...) {
3
4 # check for R_HOME_USER variable, and for R_HOME_USER/pkgdev folder
5 .pkgdev.setup()
6
7 # get appropriate core function and call it
8 func = match.fun(func)
9 func(...)
10}
11
12#' Reset pkgdev folder under R_HOME_USER
13#' WARNING: all loaded packages will have to be rebuilt
14pkgdev.wipeAll = function() {
15 .pkgdev.setup(reset=TRUE)
16}
17
18#' Load a package containing arbitrary file structures under R/ and src/{adapters,sources}
19#'
20#' @param path Location of the package to load
21#' @param cc Compilator to be used (e.g. 'gcc -std=gnu99' [default])
22pkgdev.load = function(path, cc="gcc -std=gnu99") {
23 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
24 .execMethod(".pkgdev.load", path, cc)
25}
26
27#' Unload a package containing arbitrary file structures under R/ and src/{adapters,sources}
28#'
29#' @param path Location or name of the package to unload
30pkgdev.unload = function(path) {
31 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
32 .execMethod(".pkgdev.unload", path)
33}
34
35#' Wipe a specific package under R_HOME_USER/pkgdev/pkgs/
36#' NOTE: when this package will be loaded again, it will be completely rebuilt
37#'
38#' @param pkgName Name of the package to be removed
39pkgdev.clean = function(pkgName) {
40 unlink(file.path(Sys.getenv("R_HOME_USER"),"pkgdev","pkgs",pkgName), recursive=TRUE)
41 unlink(file.path(Sys.getenv("R_HOME_USER"),"pkgdev","pkgs",pkgName), recursive=TRUE) #bug?
42}
43
44#' Launch R unit tests (arbitrary file structure under R/tests), or display the list of test functions
45#'
46#' @param path Location of the package containing tests (under /R/tests)
47#' @param prefix Prefix for names of the functions to be tested; leave empty to test all (default)
48#' @param show Logical, TRUE to display the list of unit tests (default: FALSE)
49pkgdev.rtest = function(path, prefix="", show=FALSE, cc="gcc -std=gnu99") {
50 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
51 .execMethod(".pkgdev.rtest", path, prefix, show, cc)
52}
53
54#' Launch C unit tests (arbitrary file structure under src/tests), or display the list of test functions
55#'
56#' @param path Location of the package containing tests (under /src/tests)
57#' @param prefix Prefix for names of the functions to be tested; leave empty to test all (default)
58#' @param show Logical, TRUE to display the list of unit tests (default: FALSE)
59pkgdev.ctest = function(path, prefix="", show=FALSE, cc="gcc -std=gnu99") {
60 .execMethod(".pkgdev.ctest", path, prefix, show, cc)
61}
62
63#' "Flatten" a package: gather all sources under R/ and src/ without hierarchical file structure
64#'
65#' @param inPath Input path: location of the package to flatten
66#' @param outPath Output path: location of the package to create [default: inPath_cran]
67pkgdev.tocran = function(inPath, outPath=NULL) {
68 inPath = normalizePath(inPath) #allow to give only pkg name (in pkg/.. folder)
69 if (is.null(outPath)) outPath = paste(inPath, "_cran", sep='')
70 .execMethod(".pkgdev.tocran", inPath, outPath)
71}
72
73#' Invoke R CMD check on a flat package (maybe with optional arguments, like --as-cran)
74#'
75#' @param opts Vector of strings arguments to pass to R CMD CHECK
76pkgdev.check = function(path, opts) {
77 path = normalizePath(path) #allow to give only pkg name (in pkg/.. folder)
78 system( paste("R CMD check", opts, path, sep=' ') )
79}