devtools 1.2 ----------------- BETTER INSTALLATION * `install` gains a `local` option for installing the package from the local package directory, rather than from a built tar.gz. This is now used by default for all package installations. If you want to guarantee a clean build, run `local = FALSE` * `install` now uses option `devtools.install.args` for default installation arguments. This allows you to set any useful defaults (e.g. `--no-multiarch`) in your Rprofile. * `install_git` gains `branch` argument to specify branch or tag (Fixes #255) CLEAN SESSIONS * `run_examples` and `test` gain a `fresh` argument which forces them to run in a fresh R session. This completely insulates the examples/tests from your current session but means that interactive code (like `browser()`) won't work.(Fixes #258) * New functions `eval_clean` and `evalq_clean` make it easy to evaluate code in a clean R session. * `clean_source` loses the `vanilla` argument (which did not work) and gains a `quiet` argument NEW FEATURES * `source_url` and `source_gist` now allow you to specify a sha, so you can make sure that files you source from the internet don't change without you knowing about it. (Fixes #259) * `build_vignettes` builds using `buildVignette()` and movies/copies outputs using the same algorithm as `R CMD build`. This means that `build_vignettes()` now exactly mimics R's regular behaviour, including building non-Sweave vignettes (#277), building in the correct directory (#231), using make files (if present), and copying over extra files. * devtools now sets best practice compiler flags: from `check()`, `-Wall -pedantic` and from `load_all()`, `-Wall -pedantic -g -O0 -UNDEBUG`. These are prefixed to existing environment variables so that you can override them if desired. (Fixes #257) * If there's no `DESCRIPTION` file present, `load_all()` will automatically create one using `create_description()`. You can set options in your `.Rprofile` to control what it contains: see `package?devtools` for more details. MINOR IMPROVEMENTS * `check()` now also sets environment variable `_R_CHECK_CODE_DATA_INTO_GLOBALENV_` to TRUE (to match current `--as-cran` behaviour) (Fixes #256) * Improved default email sent by `release()`, eliminating `create.post()` boilerplate * `revdep` includes LinkingTo by default. * Fixed regular expression problem that caused RTools 3.0.* to fail to be found on Windows. * `load_data()` got an overhaul and now respects `LazyData` and correctly exports datasets by default (Fixes #242) * `with_envvar` gains the option to either replace, prefix or suffix existing environmental variables. The default is to replace, which was the previous behaviour. * `check_cran` includes `sessionInfo()` in the summary output (Fixes #273) * `create()` gains a `check` argument which defaults to FALSE. * `with_env` will be deprecated in 1.2 and removed in 1.3 * When `load_all()` calls `.onAttach()` and `.onLoad()`, it now passes the lib path to those functions. devtools 1.1 ----------------- * `source_gist()` has been updated to accept new gist URLs with username. (Fixes #247) * `test()` and `document()` now set environment variables, including NOT_CRAN. * Test packages have been renamed to avoid conflicts with existing packages on CRAN. This bug prevented devtools 1.0 from passing check on CRAN for some platforms. * Catch additional case in `find_rtools()`: previously installed, but directory empty/deleted (Fixes #241) devtools 1.0 ----------------- IMPROVEMENTS TO PACKAGE LOADING * Rcpp attributes are now automatically compiled during build. * Packages listed in depends are `require()`d (Fixes #161, #178, #192) * `load_all` inserts a special version of `system.file` into the package's imports environment. This tries to simulate the behavior of `base::system.file` but gives modified results because the directory structure of installed packages and uninstalled source packages is different. (Fixes #179). In other words, `system.file` should now just work even if the package is loaded with devtools. * Source files are only recompiled if they've changed since the last run, and the recompile will be clean (`--preclean`) if any exported header files have changed. (Closes #224) * The compilation process now performs a mock install instead of using `R CMD SHLIB`. This means that `Makevars` and makefiles will now be respected and generally there should be fewer mismatches between `load_all` and the regular install and reload process. * S4 classes are correctly loaded and unloaded. WINDOWS * Rtools detection on windows has been substantially overhauled and should both be more reliable, and when it fails give more information about what is wrong with your install. * If you don't have rtools installed, devtools now automatically sets the TAR environment variable to internal so you can still build packages. MINOR FEATURES * `check_cran` now downloads packages from cran.rstudio.com. * `check()` now makes the CRAN version check optional, and off by default. The `release()` function still checks the version number against CRAN. * In `check()`, it is optional to require suggested packages, using the `force_suggests` option. * When `check()` is called, the new default behavior is to not delete existing .Rd files from man/. This behavior can be set with the "devtools.cleandoc" option. * `install_bitbucket()` now always uses lowercase repo names. (Thanks to mnel) * New function `with_lib()`, which runs an expression code with a library path prepended to the existing libpaths. It differs slightly from `with_libpaths()`, which replaces the existing libpaths. * New function `install_git()` installs a package directly from a git repository. (Thanks to David Coallier) * If `pdflatex` isn't available, don't try to build vignettes with `install()` or `check()`. (Fixes #173) * `install_github()` now downloads from a new URL, to reflect changes on how files are hosted on GitHub. * `build()` now has a `vignettes` option to turn off rebuilding vignettes. * `install(quick=TRUE)` now builds the package without rebuilding vignettes. (Fixes #167) * All R commands called from `devtools` now have the environment variable `NOT_CRAN` set, so that you can perform tasks when you know your code is definitely not running on CRAN. (Closes #227) * Most devtools functions can a quiet argument that suppresses output. This is particularly useful for testing. BUG FIXES * Fixed path issue when looking for Rtools on windows when registry entry is not present. (Fixes #201) * Reloading a package that requires a forced-unload of the namespace now works. * When reloading a package that another loaded package depends on, if there was an error loading the code, devtools would print out something about an error in `unloadNamespace`, which was confusing. It now gives more useful errors. * An intermittent error in `clear_topic_index` related to using `rm()` has been fixed. (Thanks to Gregory Jefferis) * `revdep()` now lists "Suggests" packages, in addition to "Depends" and "Imports". * `revdep_check()` now correctly passes the `recursive` argument to `revdep()`. * The collection of check results at the end of `check_cran()` previously did not remove existing results, but now it does. * When a package is loaded with `load_all()`, it now passes the name of the package to the `.onLoad()` function. (Thanks to Andrew Redd) devtools 0.8.0 -------------- NEW FEATURES * `create` function makes it easier to create a package skeleton using devtools standards. * `install_github()` can now install from a pull request -- it installs the branch referenced in the pull request. * `install_github` now accepts `auth_user` and `password` arguments if you want to install a package in a private github repo. You only need to specify `auth_user` if it's not your package (i.e. it's not your `username`) (Fixes #116) * new `dev_help` function replaces `show_rd` and makes it easy to get help on any topic in a development package (i.e. a package loaded with `load_all`) (Fixes #110) * `dev_example` runs the examples for one in-development package. (Fixes #108) * `build_vignettes` now looks in modern location for vignettes (`vignettes/`) and warn if vignettes found in old location (`inst/doc`). Building now occurs in a temporary directory (to avoid polluting the package with build artefacts) and only final pdf files are copied over. * new `clean_vignettes` function to remove pdfs in `inst/doc` that were built from vignettes in `vignettes/` * `load_all` does a much much better job at simulating package loading (see LOADING section). It also compiles and loads C/C++/Fortran code. * `unload()` is now an exported function, which unloads a package, trying harder than just `detach`. It now also unloads DLLs. (Winston Chang. Fixes #119) * `run_examples` now has parameters `show`, `test`, `run` to control which of `\dontrun{}`, `\dontshow{}`, `\donttest{}` and `\testonly{}` are commented out. The `strict` parameter has been removed since it is no longer necessary because `load_all` can respect namespaces. (Fixes #118) * `build()`, `check()`, `install()` etc now run R in `--vanilla` mode which prevents it from reading any of your site or personal configuration files. This should prevent inconsistencies between the environment in which the package is run between your computer and other computers (e.g. the CRAN server) (Fixes #145) * All system R command now print the full command used to make it easier to understand what's going on. PACKAGE PATHS * `as.package` no longer uses `~/.Rpackages`. * `as.package` provides more informative error messages when path does not exist, isn't a directory, or doesn't contain a `DESCRIPTION` file. * New function `inst()` takes the name of a package and returns the installed path of that package. (Winston Chang. Fixes #130). This makes it possible to use `devtools` functions (e.g. `unload`) with regular installed packages, not just in-development source packages. * New function `devtest()` returns paths to an internal testing packages in devtools. LOADING * Development packages are now loaded into a namespace environment, , and then the objects namespace are copied to the package environment, . This more accurately simulates how packages are normally loaded. However, all of the objects (not just the exported ones) are still copied to the package environment. (Winston Chang. Fixes #3, #60, and #125) * Packages listed in Imports and Depends are now loaded into an imports environment, with name attribute "imports:xxxx", which is the parent of the namespace environment. The imports environment is in turn a child of the environment, which is a child of the global environment. This more accurately simulates how packages are normally loaded. These packages previously were loaded and attached. (Winston Chang. Fixes #85) * The NAMESPACE file is now used for loading imports, instead of the DESCRIPTION file. Previously, `load_all` loaded all objects from the packages listed in DESCRIPTION. Now it loads packages (and, when when 'importfrom' is used, specific objects from packages) listed in NAMESPACE. This more closely simulates normal package loading. It still checks version numbers of packages listed in DESCRIPTION. (Winston Chang) * `load_all` can now be used to properly reload devtools. It does this by creating a copy of the devtools namespace environment, and calling `load_all` from that environment. (Winston Chang) * The `.onLoad` and `.onAttach` functions for a development package are now both called when loading a package for the first time, or with `reset=TRUE`, and the order more correctly simulates normal package loading (create the namespace, call `.onLoad`, copy objects to the package environment, and then call `.onAttach`). (Winston Chang) * `load_all` will now throw a warning if a dependency package does not satisfy the version requirement listed in DESCRIPTION. (Winston Chang. Fixes #109) * The package environment now has a 'path' attribute, similar to a package loaded the normal way. (Winston Chang) * `load_all` now has an option `export_all`. When set to TRUE, only the objects listed as exports in NAMESPACE are exported. (Winston Chang) * `load_all` now compiles C files in the /src directory. (Winston Chang) * New functions `compile_dll()` and `clean_dll()`, which compile C/C++/ Fortan source code, and clean up the compiled objects, respectively. (Winston Chang. Fixes #131) BUG FIXES * `load_code` now properly skips missing files. (Winston Chang) * Add `--no-resave-data` to default build command. * The subject line of the email created by `release` is now "CRAN submission [package] [version]", per CRAN repository policy. * `install_bitbucket` properly installs zip files of projects stored in Mercurial repositories. (Winston Chang. Fixes #148) * `build` now builds vignettes because `install` does not. (Fixes #155) INTROSPECTION * New function `loaded_packages()`, which returns the names of packages that are loaded and attached. * Packages loaded with `load_all` now store devtools metadata in their namespace environment, in a variable called `.__DEVTOOLS__`. This can be accessed with the `dev_meta` function. (Winston Chang. Fixes #128) * `dev_mode` now stores the path it uses in option `dev_path`. That makes it easy for other applications to detect when it is on and to act accordingly. * New function `parse_ns_file()`, which parses a NAMESPACE file for a package. * New function `parenvs()`, which parents the parent environments of an object. (Winston Chang) devtools 0.7.1 -------------- * bump dependency to R 2.15 * `load_code` now also looks for files ending in `.q` - this is not recommended, but is needed for some older packages devtools 0.7 ------------ INSTALLATION * `install_bitbucket` installs R packages on bitbucket. * `install` now uses `--with-keep.source` to make debugging a little easier. * All remote install functions give better error messages in the case of http errors (Fixes #82). * `install` has new quick option to make package installation faster, by sacrificing documentation, demos and multi-architecture binaries. (Fixes #77) * `install_url`, `install_github` and `install_gitorious` gain a subdir argument which makes it possible to install packages that are contained within a sub-directory of a repository or compressed file. (Fixes #64) CHECKING * `with_debug` function temporarily sets env vars so that compilation is performed with the appropriate debugging flags set. Contributed by Andrew Redd. * `revdep`, `revdep_maintainers` and `revdep_check` for calculating reverse dependencies, finding their maintainers and running `R CMD check`. (Fixes #78) * `check_cran` has received a massive overhaul: it now checks multiple packages, installs dependencies (in user specified library), and parse check output to extract errors and warnings * `check` uses new `--as-cran` option to make checking as close to CRAN as possible (fixes #68) OTHER NEW FEATURES * devtools now uses options `devtools.path` to set the default path to use with devmode, and `github.user` to set the default user when installing packages from github. * if no package supplied, and no package has been worked with previously, all functions now will try the working directory. (Fixes #87) * on windows, devtools now looks in the registry to find where Rtools is installed, and does a better a job of locating gcc. (Contributed by Andrew Redd) * `show_rd` passes `...` on to `Rd2txt` - this is useful if you're checking how build time `\Sexpr`s are generated. * A suite of `with` functions that allow you to temporarily alter the environment in which code is run: `in_dir`, `with_collate`, `with_locale`, `with_options`, `with_path`, ... (Fixes #89) * `release` ask more questions and randomises correct answers so you really need to read them (Fixes #79) * `source_gist` now accepts default url such as "https://gist.github.com/nnn" * New system path manipulation functions, `get_path`, `set_path`, `add_path` and `on_path`, contributed by Andrew Redd. * If you're on windows, `devtools` now suppresses the unimportant warning from CYGWIN about the dos style file paths BUG FIXES * `decompress` now uses target directory as defined in the function call when expanding a compressed file. (Fixes #84) * `document` is always run in a C locale so that `NAMESPACE` sort order is consistent across platforms. * `install` now quotes `libpath` and build path so paths with embedded spaces work (Fixes #73 and #76) * `load_data` now also loads `.RData` files (Fixes #81) * `install` now has `args` argument to pass additional command line arguments on to `R CMD install` (replaces `...` which didn't actually do anything). (Fixes #69) * `load_code` does a better job of reconciling files in DESCRIPTION collate with files that actually exist in the R directory. (Fixes #14) devtools 0.6 ------------ NEW FEATURES * `test` function takes `filter` argument which allows you to restrict which tests are to be run * `check` runs with example timings, as is done on CRAN. Run with new param `cleanup = F` to access the timings. * `missing_s3` function to help figure out if you've forgotten to export any s3 methods * `check_cran` downloads and checks a CRAN package - this is useful to run as part of the testing process of your package if you want to check the dependencies of your package * `strict` mode for `run_examples` which runs each example in a clean environment. This is much slower than the default (running in the current environment), but ensures that each example works standalone. * `dev_mode` now updates prompt to indicate that it's active (Thanks to Kohske Takahashi) * new `source_url` function for sourcing script on a remote server via protocols other than http (e.g. https or ftp). (Thanks to Kohske Takahashi) * new `source_gist` function to source R code stored in a github gist. (Thanks to Kohske Takahashi) * `load_all` now also loads all package dependencies (including suggestions) - this works around some bugs in the way that devtools attaches the development environment into the search path in a way that fails to recreate what happens normally during package loading. INSTALLATION * remote installation will ensure the configure file is executable. * all external package installation functions are vectorised so you can install multiple packages at time * new `install_gitorious` function install packages in gitorious repos. * new `install_url` function for installing package from an arbitrary url * include `install_version` function from Jeremy Stephens for installing a specific version of a CRAN package from the archive. BETTER WINDOWS BEHAVIOUR * better check for OS type (thanks to Brian Ripley) * better default paths for 64-bit R on windows (Fixes #35) * check to see if Rtools is already available before trying to mess with the paths. (Fixes #55) BUG FIXES * if an error occurs when calling loading R files, the cache will be automatically cleared so that all files are loaded again next time you try (Fixes #55) * functions that run R now do so with `R_LIBS` set to the current `.libPaths()` - this will ensure that checking uses the development library if you are in development mode. `R_ENVIRON_USER` is set to an empty file to avoid your existing settings overriding this. * `load_data` (called by `load_all`) will also load data defined in R files in the data directory. (Fixes #45) * `dev_mode` performs some basic tests to make sure you're not setting your development library to a directory that's not already an R library. (Fixes #25) devtools 0.5.1 -------------- * Fix error in that was causing R commands to fail on windows. devtools 0.5 -------------- NEW FUNCTIONS * new `show_rd` function that will show the development version of a help file. IMPROVEMENTS AND BUG FIXES * external R commands always run in locale `C`, because that's what the CRAN severs do. * `clean_source` sources an R script into a fresh R environment, ensuring that it can run independently of your current working environment. Optionally (`vanilla = T`), it will source in a vanilla R environment which ignores all local environment settings. * On windows, `devtools` will also add the path to `mingw` on startup. (Thanks to pointer from Dave Lovell) devtools 0.4 ------------ NEW FUNCTIONS * new `wd` function to change the working directory to a package subdirectory. * `check_doc` now checks package documentation as a whole, in the same way that `R CMD check` does, rather than low-level syntax checking, which is done by `roxygen2. DESCRIPTION checking has been moved into `load_all`. `check_rd` has been removed. * `build` is now exported, and defaults to building in the package's parent directory. It also gains a new `binary` parameter controls whether a binary or a source version (with no vignettes or manuals) is built. Confusingly, binary packages are built with `R CMD INSTALL`. * `build_win` sends your package to the R windows builder, allowing you to make a binary version of your package for windows users if you're using linux or a max (if you're using windows already, use `build(binary = T)`) IMPROVEMENTS AND BUG FIXES * if using `.Rpackages` config file, default function is used last, not first. * on Windows, `devtools` now checks for the presence of `Rtools` on startup, and will automatically add it to the path if needed. * `document` uses `roxygen2` instead of `roxygen`. It now loads package dependency so that they're available when roxygen executes the package source code. * `document` has new parameter `clean` which clears all roxygen caches and removes all existing man files. `check` now runs `document` in this mode. * `dev_mode` will create directories recursively, and complain if it can't create them. It should also work better on windows. * `install_github` now allows you to specify which branch to download, and automatically reloads package if needed. * `reload` now will only reload if the package is already loaded. * `release` gains `check` parameter that allows you to skip package check (if you've just done it.) * `test` automatically reloads code so you never run tests on old code devtools 0.3 ------------ * new `bash()` function that starts bash shell in package directory. Useful if you want to use git etc. * removed inelegant `update_src()` since now superseded by `bash()` * fix bug in ftp upload that was adding extraneous space * `build` function builds package in specified directory. `install`, `check` and `release` now all use this function. * `build`, `install`, `check` and `release` better about cleaning up after themselves - always try to both work in session temporary directory and delete any files/directories that they create devtools 0.2 ------------ * `install_github` now uses `RCurl` instead of external `wget` to retrieve package. This should make it more robust wrt external dependencies. * `load_all` will skip missing files with a warning (thanks to suggestion from Jeff Laake) * `check` automatically deletes `.Rcheck` directory on successful completion * Quote the path to R so it works even if there are spaces in the path. devtools 0.1 ------------ * Check for presence of `DESCRIPTION` when loading packages to avoid false positives * `install` now works correctly with `devel_mode` to install packages in your development library * `release` prints news so you can more easily check it * All `R CMD xxx` functions now use the current R, not the first R found on the system path.