From 7f6448c43183445be7f29dfc35200c2a91a8c0ea Mon Sep 17 00:00:00 2001 From: kaguillera Date: Mon, 4 May 2020 13:04:02 -0400 Subject: [PATCH] Add Travis CI --- .Rprofile | 2 + .gitignore | 4 +- .travis.yml | 91 +-- environment.yml | 2 +- renv.lock | 678 +++++++++++++----- renv/.gitignore | 3 + renv/activate.R | 341 +++++++++ rules/renv.snakefile | 4 +- .../data/processed/test01/sms_sent_daily.csv | 2 +- 9 files changed, 911 insertions(+), 216 deletions(-) create mode 100644 .Rprofile create mode 100644 renv/.gitignore create mode 100644 renv/activate.R diff --git a/.Rprofile b/.Rprofile new file mode 100644 index 00000000..debb107c --- /dev/null +++ b/.Rprofile @@ -0,0 +1,2 @@ +source("renv/activate.R") +options(renv.settings.snapshot.type = "all") diff --git a/.gitignore b/.gitignore index 9b3345b7..30beeb9f 100644 --- a/.gitignore +++ b/.gitignore @@ -85,7 +85,6 @@ target/ # Mypy cache .mypy_cache/ -.Rprofile packrat/lib*/ packrat/* !packrat/packrat.lock @@ -108,5 +107,4 @@ reports/ .RData .Rhistory sn_profile_*/ -renv/ - +settings.dcf diff --git a/.travis.yml b/.travis.yml index edc77cc8..21401eeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,44 +1,61 @@ services: - mysql -os: linux +language: python # this works for Linux but is an error on macOS or Windows -dist: xenial - -language: python -python: - - '3.7' - -cache: - directories: - - /home/linuxbrew/.linuxbrew - - $HOME/.local/share/renv - - $TRAVIS_BUILD_DIR/renv/library - -before_install: - - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" - - export PATH=/home/linuxbrew/.linuxbrew/bin:$PATH - - source ~/.bashrc - - sudo apt-get install linuxbrew-wrapper - - brew install r - # - sudo chmod ugo+rw /usr/local/lib/R/site-library - - R -e 'install.packages(c( "rmarkdown"), repos = "http://cran.us.r-project.org")' - - R --version +jobs: + include: + - name: "Python 3.7 on Xenial Linux" + os: linux + language: python + python: 3.7 + before_install: + - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" + - export PATH=/home/linuxbrew/.linuxbrew/bin:$PATH + - source ~/.bashrc + - sudo apt-get install linuxbrew-wrapper + - brew tap --shallow linuxbrew/xorg + - brew install r + - R --version + - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; + - bash miniconda.sh -b -p $HOME/miniconda + - source "$HOME/miniconda/etc/profile.d/conda.sh" + - hash -r + - conda config --set always_yes yes --set changeps1 no + cache: + directories: + - /home/travis/.linuxbrew + - $HOME/.local/share/renv + - $TRAVIS_BUILD_DIR/renv/library + + - name: "Python 3.7 on macOS" + os: osx + osx_image: xcode11.3 # Python 3.7 running on macOS 10.14.4 + language: generic # 'language: python' is an error on Travis CI macOS + before_install: + - brew install mysql + - brew services start mysql + - brew install r + - R --version + - brew cask install miniconda + - eval "$(/usr/local/bin/conda shell.bash hook)" + env: + - RENV_PATHS_ROOT="$HOME/renv/cache" + cache: + directories: + - /usr/local/lib/R + - $RENV_PATHS_ROOT + - $TRAVIS_BUILD_DIR/renv/library install: - - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; - - bash miniconda.sh -b -p $HOME/miniconda - - source "$HOME/miniconda/etc/profile.d/conda.sh" - - hash -r - - conda config --set always_yes yes --set changeps1 no - - conda update -q conda - - conda info -a + - conda init + - conda update -q --all --yes conda - conda env create -q -n test-environment python=$TRAVIS_PYTHON_VERSION --file environment.yml - conda activate test-environment - snakemake renv_install - - snakemake renv_init - - snakemake renv_restore - + - R -e 'renv::settings$use.cache(FALSE)' + - snakemake renv_restore + script: - cp -r tests/data/raw/* data/raw - snakemake --profile tests/settings -R sms_features @@ -47,16 +64,10 @@ script: notifications: email: false slack: + # if: branch = travis_test secure: cJIpmIjb3zA5AMDBo9axF1v6fYNIgMm6s6UdMNOlHiT511xHGsaLUFej3lACwQLig4Gr94ySI61YdrP+RX1lFcYxusH+kUU/c8LX0PmSKNeKnycM3w/pCM+yTp/6oQG6ZrJD7pNm6zhB0xPL61uSmYhcr+JJ1sh4iLiON+J8/C+IfnAHm1ORkxJ0IxASkiP/LvaiAQDw8lNyYIZNWjSDNZbx68o1VNakyk6Vik3x8omiE3w33rzI2/JAx//QTxOq2J0dtV1AqYYSOWS4iXblV09NLBqgGrhAhrQ6+TbPHSPIyL/4EdhvS+YXO+SBWS7ODD7j/MuL6XiA4SujW72od2rgXNmOjFnlQvIrULO5bzv39BKKDkldvz9+XCyXLcjoLIwA/rmUnwMndNoC7NoD/CkQEevUxswXXB9811BmIFx/7GOHouVxwB2gaMAzkCroZJVwgbrc6ESSOVE5SMcb3wPMbpd8cXOgVZXJcmk5wK206zxXPigCvFfknqOnwDqRgyIWSFoTd/2wHppA7ND3R5U42nQTbEQ7MiONsOo61GlJTTxJELz32sLKl388AuAgOY7+0sqPibxMaHJkF1V4nYVTH0/H5bO/edK4VHMloJ6s0kuyko7LT5EMQf3pBJij5TnYmD2E60t+bSBAxHuH7WA5dvL+igjGEwROnxDc9pc= on_success: always template: - "Repo `%{repository_slug}` *%{result}* build (<%{build_url}|#%{build_number}>) for commit (<%{compare_url}|%{commit}>) on branch `%{branch}`." - "Execution time: *%{duration}*" - - "Message: %{message}" - -branches: - except: - - master - - only: - - travis_test + - "Message: %{message}" \ No newline at end of file diff --git a/environment.yml b/environment.yml index a4be09d6..bda9757f 100644 --- a/environment.yml +++ b/environment.yml @@ -1,8 +1,8 @@ name: moshi-env channels: - anaconda - - defaults - conda-forge + - defaults dependencies: - appdirs=1.4.3 - arrow=0.15.2 diff --git a/renv.lock b/renv.lock index f2fa0413..feeb77f3 100644 --- a/renv.lock +++ b/renv.lock @@ -12,782 +12,1122 @@ "BDgraph": { "Package": "BDgraph", "Version": "2.62", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c2b632b048e00a670495f2804767159f" }, "BH": { "Package": "BH", "Version": "1.72.0-3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8f9ce74c6417d61f0782cbae5fd2b7b0" }, "DBI": { "Package": "DBI", "Version": "1.1.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4744be45519d675af66c28478720fce5" }, "DEoptimR": { "Package": "DEoptimR", "Version": "1.0-8", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4fdd17df6c1b897cb59bdd9cf6621a43" }, "Formula": { "Package": "Formula", "Version": "1.2-3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0537b6f1f38ea1fd514089192724bb6e" }, "Hmisc": { "Package": "Hmisc", "Version": "4.4-0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1016ef46c7ebf841513624ecb22eebc7" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "997471f25a7ed6c782f0090ce52cc63a" }, "MASS": { "Package": "MASS", "Version": "7.3-51.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1dad32ac9dbd8057167b2979fb932ff7" }, "Matrix": { "Package": "Matrix", "Version": "1.2-18", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08588806cba69f04797dab50627428ed" }, "R6": { "Package": "R6", "Version": "2.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "292b54f8f4b94669b08f94e5acce6be2" }, "RColorBrewer": { "Package": "RColorBrewer", "Version": "1.1-2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e031418365a7f7a766181ab5a41a5716" }, "RMySQL": { "Package": "RMySQL", "Version": "0.10.20", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "022066398851453f187950137e21daad" }, "Rcpp": { "Package": "Rcpp", "Version": "1.0.4.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e652f23d8b1807cc975c51410d05b72f" }, "RcppArmadillo": { "Package": "RcppArmadillo", "Version": "0.9.870.2.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7fee4557377d47093bd2b65f2642e52" }, "RcppEigen": { "Package": "RcppEigen", "Version": "0.3.3.7.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c6faf038ba4346b1de19ad7c99b8f94a" }, "abind": { "Package": "abind", "Version": "1.4-5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f57884290cc75ab22f4af9e9d4ca862" }, "acepack": { "Package": "acepack", "Version": "1.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d5038b94a50c7bf26940e2ef7f340c8" }, "askpass": { "Package": "askpass", "Version": "1.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713" }, "assertthat": { "Package": "assertthat", "Version": "0.2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf" }, "backports": { "Package": "backports", "Version": "1.1.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3997fd62345a616e59e8161ee0a5816f" }, "base64enc": { "Package": "base64enc", "Version": "0.1-3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "boot": { + "Package": "boot", + "Version": "1.3-24", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "72557d88b5f42f01221dfa436de99301" }, "broom": { "Package": "broom", "Version": "0.5.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "754fdb4d17d4ae871343ff2909728ca3" }, "callr": { "Package": "callr", "Version": "3.4.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643163a00cb536454c624883a10ae0bc" }, "cellranger": { "Package": "cellranger", "Version": "1.1.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" }, "checkmate": { "Package": "checkmate", "Version": "2.0.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a667800d5f0350371bedeb8b8b950289" + }, + "class": { + "Package": "class", + "Version": "7.3-16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ebc639c4432a2e9c17f195d004848100" }, "cli": { "Package": "cli", "Version": "2.0.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ff0becff7bfdfe3f75d29aff8f3172dd" }, "clipr": { "Package": "clipr", "Version": "0.7.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08cf4045c149a0f0eaf405324c7495bd" }, "cluster": { "Package": "cluster", "Version": "2.1.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "db63a44aab5aadcb6bf2f129751d129a" }, "codetools": { "Package": "codetools", "Version": "0.2-16", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89cf4b8207269ccf82fbeb6473fd662b" }, "colorspace": { "Package": "colorspace", "Version": "1.4-1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6b436e95723d1f0e861224dd9b094dfb" }, "corpcor": { "Package": "corpcor", "Version": "1.6.9", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae01381679f4511ca7a72d55fe175213" }, "crayon": { "Package": "crayon", "Version": "1.3.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d57bc8e27b7ba9e45dba825ebc0de6b" }, "curl": { "Package": "curl", "Version": "4.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6" }, "d3Network": { "Package": "d3Network", "Version": "0.5.2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "83e3a9632a16bd3a8762b5c8919af568" }, "data.table": { "Package": "data.table", "Version": "1.12.8", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cd711af60c47207a776213a368626369" }, "dbplyr": { "Package": "dbplyr", "Version": "1.4.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "81ae261735c247d9551126462db5a4b5" }, "desc": { "Package": "desc", "Version": "1.2.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395" }, "digest": { "Package": "digest", "Version": "0.6.25", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f697db7d92b7028c4b3436e9603fb636" }, "dplyr": { "Package": "dplyr", "Version": "0.8.5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "57a42ddf80f429764ff7987128c3fd0a" }, "ellipsis": { "Package": "ellipsis", "Version": "0.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7067d90c1c780bfe80c0d497e3d7b49d" }, "entropy": { "Package": "entropy", "Version": "1.2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d24c26075b0cabde12c419424edc6242" }, "evaluate": { "Package": "evaluate", "Version": "0.14", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7" }, "fansi": { "Package": "fansi", "Version": "0.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fce217eaaf8016e72065e85c73027b5" }, "farver": { "Package": "farver", "Version": "2.0.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dad6793a5a1f73c8e91f1a1e3e834b05" }, "fastmap": { "Package": "fastmap", "Version": "1.0.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "83ab58a0518afe3d17e41da01af13b60" }, "fdrtool": { "Package": "fdrtool", "Version": "1.2.15", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "eb8d30ac5bae2835a21d9e229195d8dd" }, "forcats": { "Package": "forcats", "Version": "0.5.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1cb4279e697650f0bd78cd3601ee7576" }, "foreach": { "Package": "foreach", "Version": "1.5.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8fb3ff01ee7d85893f56df8d77213381" }, "foreign": { "Package": "foreign", "Version": "0.8-79", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "910ad5e5ce9aae0d0f57186ca9a12e1e" }, "fs": { "Package": "fs", "Version": "1.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "780713bd2f53156fae001443dcdbdcd5" }, "generics": { "Package": "generics", "Version": "0.0.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8cff1d1391fd1ad8b65877f4c7f2e53" }, "ggforce": { "Package": "ggforce", "Version": "0.3.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7132d67f9814af0536cd5761be94314" }, "ggplot2": { "Package": "ggplot2", "Version": "3.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "911561e07da928345f1ae2d69f97f3ea" }, "ggraph": { "Package": "ggraph", "Version": "2.0.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "11efbeca93af843c5213ebae42cc2b5b" }, "ggrepel": { "Package": "ggrepel", "Version": "0.8.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c013a50b19695daf04853679e1bc105a" }, "glasso": { "Package": "glasso", "Version": "1.11", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1e1217c1b472d1dbffda819b57dc6d8d" }, "glmnet": { "Package": "glmnet", "Version": "3.0-2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "96a03ce147d2a6d3e056e9da1d9c6940" }, "glue": { "Package": "glue", "Version": "1.4.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2aefa994e8df5da17dc09afd80f924d5" }, "graphlayouts": { "Package": "graphlayouts", "Version": "0.7.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "786cadbe37487dbec2e0c91249dbbce0" }, "gridExtra": { "Package": "gridExtra", "Version": "2.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d7f283939f563670a697165b2cf5560" }, "gtable": { "Package": "gtable", "Version": "0.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac5c6baf7822ce8732b343f14c072c4d" }, "gtools": { "Package": "gtools", "Version": "3.8.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0a749b4458d19a54acae93c64e3e7c85" }, "haven": { "Package": "haven", "Version": "2.2.0", - "Source": "CRAN" - }, - "highr": { - "Package": "highr", - "Version": "0.8", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e3f662e125e9fdffd1ee4e94baea3451" }, "hms": { "Package": "hms", "Version": "0.5.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "726671f634529d470545f9fd1a9d1869" }, "htmlTable": { "Package": "htmlTable", "Version": "1.13.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "90d75b22931af95e2dbb17188e1dfa0c" }, "htmltools": { "Package": "htmltools", "Version": "0.4.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2d7691222f82f41e93f6d30f169bd5e1" }, "htmlwidgets": { "Package": "htmlwidgets", "Version": "1.5.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41bace23583fbc25089edae324de2dc3" }, "httpuv": { "Package": "httpuv", "Version": "1.5.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f793dad2c9ae14fbb1d22f16f23f8326" }, "httr": { "Package": "httr", "Version": "1.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7146fea4685b4252ebf478978c75f597" }, "huge": { "Package": "huge", "Version": "1.3.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a4cde4dd1d2551edb99a3273a4ad34ea" }, "igraph": { "Package": "igraph", "Version": "1.2.5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3878c30ce67cdb7f2d7f72554e37f476" }, "isoband": { "Package": "isoband", "Version": "0.2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9b2f7cf1899f583a36d367702ecf49a3" }, "iterators": { "Package": "iterators", "Version": "1.0.12", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "117128f48662573ff4c4e72608b9e202" }, "jpeg": { "Package": "jpeg", "Version": "0.1-8.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bc316c003aba520fc73d70ad53b5fc36" }, "jsonlite": { "Package": "jsonlite", "Version": "1.6.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "84b0ee361e2f78d6b7d670db9471c0c5" }, "knitr": { "Package": "knitr", "Version": "1.28", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "915a6f0134cdbdf016d7778bc80b2eda" }, "labeling": { "Package": "labeling", "Version": "0.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "73832978c1de350df58108c745ed0e3e" }, "later": { "Package": "later", "Version": "1.0.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6d927978fc658d24175ce37db635f9e5" }, "lattice": { "Package": "lattice", "Version": "0.20-41", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fbd9285028b0263d76d18c95ae51a53d" }, "latticeExtra": { "Package": "latticeExtra", "Version": "0.6-29", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "590829599d6182cf7461787af34666ee" }, "lavaan": { "Package": "lavaan", "Version": "0.6-5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "898f1cb9457e5afeaaf6c43c8ffbd72b" }, "lifecycle": { "Package": "lifecycle", "Version": "0.2.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42" }, "lubridate": { "Package": "lubridate", "Version": "1.7.8", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c04c31012c1be39783bebbbfc27b3a3" }, "magrittr": { "Package": "magrittr", "Version": "1.5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb58822a20301cee84a41678e25d9b7" }, "markdown": { "Package": "markdown", "Version": "1.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" }, "matrixcalc": { "Package": "matrixcalc", "Version": "1.0-3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "67101e7448dfd9add4ac418623060262" }, "mgcv": { "Package": "mgcv", "Version": "1.8-31", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4bb7e0c4f3557583e1e8d3c9ffb8ba5c" }, "mgm": { "Package": "mgm", "Version": "1.2-9", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15782a10391af182d7b42c3b3971de9a" }, "mime": { "Package": "mime", "Version": "0.9", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3" }, "mnormt": { "Package": "mnormt", "Version": "1.5-7", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74b6d3efd46009b9304a7d760fd20e03" }, "modelr": { "Package": "modelr", "Version": "0.1.7", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5a10316936c16bb3b341f687c9ac0fff" }, "munsell": { "Package": "munsell", "Version": "0.5.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6dfe8bf774944bd5595785e3229d8771" }, "nlme": { "Package": "nlme", "Version": "3.1-147", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dd4a1423f1472a2a8e05dd2c8945c3af" }, "nnet": { "Package": "nnet", "Version": "7.3-14", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d87e50e11394a7151a28873637d799a" }, "numDeriv": { "Package": "numDeriv", "Version": "2016.8-1.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "df58958f293b166e4ab885ebcad90e02" }, "openssl": { "Package": "openssl", "Version": "1.4.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "49f7258fd86ebeaea1df24d9ded00478" }, "packrat": { "Package": "packrat", "Version": "0.5.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2ebd34a38f4248281096cc723535b66d" }, "pbapply": { "Package": "pbapply", "Version": "1.4-2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ee90507ce37987b22470fae76325f370" }, "pbivnorm": { "Package": "pbivnorm", "Version": "0.6.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "643e16a7da6aac3e18cadc3e14abb94b" }, "pillar": { "Package": "pillar", - "Version": "1.4.3", - "Source": "CRAN" + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b01d2494d0e2b6b02fae40e1543fbcb0" }, "pkgbuild": { "Package": "pkgbuild", - "Version": "1.0.7", - "Source": "CRAN" + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8d8b5e29223aabb829246397299f0592" }, "pkgconfig": { "Package": "pkgconfig", "Version": "2.0.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f" }, "pkgload": { "Package": "pkgload", "Version": "1.0.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e655fb54cceead0f095f22d7be33da3" }, "plogr": { "Package": "plogr", "Version": "0.2.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65" }, "plyr": { "Package": "plyr", "Version": "1.8.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec0e5ab4e5f851f6ef32cd1d1984957f" }, "png": { "Package": "png", "Version": "0.1-7", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "03b7076c234cb3331288919983326c55" }, "polyclip": { "Package": "polyclip", "Version": "1.10-0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cb167f328b3ada4ec5cf67a7df4c900a" }, "praise": { "Package": "praise", "Version": "1.0.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f" }, "prettyunits": { "Package": "prettyunits", "Version": "1.1.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" }, "processx": { "Package": "processx", "Version": "3.4.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "20a082f2bde0ffcd8755779fd476a274" }, "progress": { "Package": "progress", "Version": "1.2.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" }, "promises": { "Package": "promises", "Version": "1.1.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "efbbe62da4709f7040a380c702bc7103" }, "ps": { "Package": "ps", - "Version": "1.3.2", - "Source": "CRAN" + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "425d938eb9c02906a8ac98c0c2a306b5" }, "psych": { "Package": "psych", "Version": "1.9.12.31", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fb8cedacb2ded44bbfc6c2e028ebecde" }, "purrr": { "Package": "purrr", "Version": "0.3.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02" }, "qgraph": { "Package": "qgraph", "Version": "1.6.5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d35964686307333a7121eb41c7dcd4e0" }, "readr": { "Package": "readr", "Version": "1.3.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af8ab99cd936773a148963905736907b" }, "readxl": { "Package": "readxl", "Version": "1.3.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63537c483c2dbec8d9e3183b3735254a" }, "rematch": { "Package": "rematch", "Version": "1.0.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" + }, + "renv": { + "Package": "renv", + "Version": "0.10.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d3f1c2b63e70b3d918246b4e2ca59b7" }, "reprex": { "Package": "reprex", "Version": "0.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b06bfb3504cc8a4579fd5567646f745b" }, "reshape2": { "Package": "reshape2", "Version": "1.4.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917" }, "rjson": { "Package": "rjson", "Version": "0.2.20", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d597f982ee6263716b6a2f28efd29fa" }, "rlang": { "Package": "rlang", - "Version": "0.4.5", - "Source": "CRAN" + "Version": "0.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "aa263e3ce17b177c49e0daade2ee3cdc" }, "rmarkdown": { "Package": "rmarkdown", "Version": "2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d1c61d476c448350c482d6664e1b28b" }, "robustbase": { "Package": "robustbase", "Version": "0.93-6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "241454e22c9d26b11669b78d06706b41" }, "rpart": { "Package": "rpart", "Version": "4.1-15", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9787c1fcb680e655d062e7611cadf78e" }, "rprojroot": { "Package": "rprojroot", "Version": "1.3-2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6a407ae5dd21f6f80a6708bbb6eb3ae" }, "rstudioapi": { "Package": "rstudioapi", "Version": "0.11", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "33a5b27a03da82ac4b1d43268f80088a" }, "rvest": { "Package": "rvest", "Version": "0.3.5", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6a20c2cdf133ebc7ac45888c9ccc052b" }, "scales": { "Package": "scales", - "Version": "1.1.0", - "Source": "CRAN" + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f76f71042411426ec8df6c54f34e6dd" }, "selectr": { "Package": "selectr", "Version": "0.4-2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3838071b66e0c566d55cc26bd6e27bf4" }, "shape": { "Package": "shape", "Version": "1.4.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ef692f72a633981cad0d4950a5775702" }, "shiny": { "Package": "shiny", "Version": "1.4.0.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a56d058adfc9df30bdd45dbb01cec39f" }, "sourcetools": { "Package": "sourcetools", "Version": "0.1.7", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "947e4e02a79effa5d512473e10f41797" + }, + "spatial": { + "Package": "spatial", + "Version": "7.3-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f27a078d834614513608da2c08031130" }, "stringi": { "Package": "stringi", "Version": "1.4.6", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e99d8d656980d2dd416a962ae55aec90" }, "stringr": { "Package": "stringr", "Version": "1.4.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76" }, "survival": { "Package": "survival", "Version": "3.1-12", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1c5bb53bd428f3c42a25b7aeb983d8c7" }, "sys": { "Package": "sys", "Version": "3.3", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "507f3116a38d37ad330a038b3be07b66" }, "testthat": { "Package": "testthat", "Version": "2.3.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0829b987b8961fb07f3b1b64a2fbc495" }, "tibble": { "Package": "tibble", "Version": "3.0.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1c61e4cad000e03b1bd687db16a75926" }, "tidygraph": { "Package": "tidygraph", - "Version": "1.1.2", - "Source": "CRAN" + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5375980d0787633ca62c265b28bedb41" }, "tidyr": { "Package": "tidyr", - "Version": "1.0.2", - "Source": "CRAN" + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "df860e8e4e1a1b454f18537c8bc96211" }, "tidyselect": { "Package": "tidyselect", - "Version": "1.0.0", - "Source": "CRAN" + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6ea435c354e8448819627cf686f66e0a" }, "tidyverse": { "Package": "tidyverse", "Version": "1.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bd51be662f359fa99021f3d51e911490" }, "tinytex": { "Package": "tinytex", "Version": "0.22", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8b0712f45a05c8e79ce7ba06b249583c" }, "tweenr": { "Package": "tweenr", "Version": "1.0.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fc77eb5297507cccfa3349a606061030" }, "utf8": { "Package": "utf8", "Version": "1.1.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1" }, "vctrs": { "Package": "vctrs", - "Version": "0.2.4", - "Source": "CRAN" + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fbf7ee297936697ec8404a22859da129" }, "viridis": { "Package": "viridis", "Version": "0.5.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f6b49e5b3b5ee5a6d0c28bf1b4b9eb3" }, "viridisLite": { "Package": "viridisLite", "Version": "0.3.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ce4f6271baa94776db692f1cb2055bee" }, "whisker": { "Package": "whisker", "Version": "0.4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ca970b96d894e90397ed20637a0c1bbe" }, "withr": { "Package": "withr", "Version": "2.2.0", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ecd17882a0b4419545691e095b74ee89" }, "xfun": { "Package": "xfun", "Version": "0.13", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3c1eeacd705ff1695db94bfd443b8a84" }, "xml2": { "Package": "xml2", "Version": "1.3.2", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2" }, "xtable": { "Package": "xtable", "Version": "1.8-4", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" }, "yaml": { "Package": "yaml", "Version": "2.2.1", - "Source": "CRAN" + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db" } } } diff --git a/renv/.gitignore b/renv/.gitignore new file mode 100644 index 00000000..82740ba9 --- /dev/null +++ b/renv/.gitignore @@ -0,0 +1,3 @@ +library/ +python/ +staging/ diff --git a/renv/activate.R b/renv/activate.R new file mode 100644 index 00000000..c2fe5e92 --- /dev/null +++ b/renv/activate.R @@ -0,0 +1,341 @@ + +local({ + + # the requested version of renv + version <- "0.10.0" + + # the project directory + project <- getwd() + + # avoid recursion + if (!is.na(Sys.getenv("RENV_R_INITIALIZING", unset = NA))) + return(invisible(TRUE)) + + # signal that we're loading renv during R startup + Sys.setenv("RENV_R_INITIALIZING" = "true") + on.exit(Sys.unsetenv("RENV_R_INITIALIZING"), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # check to see if renv has already been loaded + if ("renv" %in% loadedNamespaces()) { + + # if renv has already been loaded, and it's the requested version of renv, + # nothing to do + spec <- .getNamespaceInfo(.getNamespace("renv"), "spec") + if (identical(spec[["version"]], version)) + return(invisible(TRUE)) + + # otherwise, unload and attempt to load the correct version of renv + unloadNamespace("renv") + + } + + # load bootstrap tools + bootstrap <- function(version, library) { + + # fix up repos + repos <- getOption("repos") + on.exit(options(repos = repos), add = TRUE) + repos[repos == "@CRAN@"] <- "https://cloud.r-project.org" + options(repos = repos) + + # attempt to download renv + tarball <- tryCatch(renv_bootstrap_download(version), error = identity) + if (inherits(tarball, "error")) + stop("failed to download renv ", version) + + # now attempt to install + status <- tryCatch(renv_bootstrap_install(version, tarball, library), error = identity) + if (inherits(status, "error")) + stop("failed to install renv ", version) + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + download.file( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + } + + renv_bootstrap_download <- function(version) { + + methods <- list( + renv_bootstrap_download_cran_latest, + renv_bootstrap_download_cran_archive, + renv_bootstrap_download_github + ) + + for (method in methods) { + path <- tryCatch(method(version), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("failed to download renv ", version) + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + # check for renv on CRAN matching this version + db <- as.data.frame(available.packages(), stringsAsFactors = FALSE) + if (!"renv" %in% rownames(db)) + stop("renv is not available on your declared package repositories") + + entry <- db["renv", ] + if (!identical(entry$Version, version)) + stop("renv is not available on your declared package repositories") + + message("* Downloading renv ", version, " from CRAN ... ", appendLF = FALSE) + + info <- tryCatch( + download.packages("renv", destdir = tempdir()), + condition = identity + ) + + if (inherits(info, "condition")) { + message("FAILED") + return(FALSE) + } + + message("OK") + info[1, 2] + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- getOption("repos") + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + message("* Downloading renv ", version, " from CRAN archive ... ", appendLF = FALSE) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) { + message("OK") + return(destfile) + } + + } + + message("FAILED") + return(FALSE) + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + message("* Downloading renv ", version, " from GitHub ... ", appendLF = FALSE) + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) { + message("FAILED") + return(FALSE) + } + + message("Done!") + return(destfile) + + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + message("* Installing renv ", version, " ... ", appendLF = FALSE) + dir.create(library, showWarnings = FALSE, recursive = TRUE) + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + r <- file.path(bin, exe) + args <- c("--vanilla", "CMD", "INSTALL", "-l", shQuote(library), shQuote(tarball)) + output <- system2(r, args, stdout = TRUE, stderr = TRUE) + message("Done!") + + # check for successful install + status <- attr(output, "status") + if (is.numeric(status) && !identical(status, 0L)) { + header <- "Error installing renv:" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- c(header, lines, output) + writeLines(text, con = stderr()) + } + + status + + } + + renv_bootstrap_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- Sys.getenv("RENV_PATHS_PREFIX") + if (nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_library_root <- function(project) { + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(path) + + path <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(path)) + return(file.path(path, basename(project))) + + file.path(project, "renv/library") + + } + + renv_bootstrap_validate_version <- function(version) { + + loadedversion <- utils::packageDescription("renv", fields = "Version") + if (version == loadedversion) + return(TRUE) + + # assume four-component versions are from GitHub; three-component + # versions are from CRAN + components <- strsplit(loadedversion, "[.-]")[[1]] + remote <- if (length(components) == 4L) + paste("rstudio/renv", loadedversion, sep = "@") + else + paste("renv", loadedversion, sep = "@") + + fmt <- paste( + "renv %1$s was loaded from project library, but renv %2$s is recorded in lockfile.", + "Use `renv::record(\"%3$s\")` to record this version in the lockfile.", + "Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + + msg <- sprintf(fmt, loadedversion, version, remote) + warning(msg, call. = FALSE) + + FALSE + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # load the project + renv::load(project) + + TRUE + + } + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # attempt to load + if (renv_bootstrap_load(project, libpath, version)) + return(TRUE) + + # load failed; attempt to bootstrap + bootstrap(version, libpath) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + message("Successfully installed and loaded renv ", version, ".") + return(renv::load()) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + +}) diff --git a/rules/renv.snakefile b/rules/renv.snakefile index 31952fbf..b4fba594 100644 --- a/rules/renv.snakefile +++ b/rules/renv.snakefile @@ -1,12 +1,12 @@ ## renv_install: installs renv onto machine rule renv_install: shell: - "R -e 'install.packages(\"renv\", repos=\"http://cran.us.r-project.org\")'" + "R -e 'if (!requireNamespace(\"renv\", quietly = TRUE)) install.packages(\"renv\", repos=\"http://cran.us.r-project.org\")'" ## renv_install: initialize a renv environment for this project rule renv_init: shell: - "R -e 'options(renv.consent = TRUE)' && R -e 'renv::init()'" + "R -e 'renv::init()'" ## renv_snap : Look for new R packages in files & archives them rule renv_snap: diff --git a/tests/data/processed/test01/sms_sent_daily.csv b/tests/data/processed/test01/sms_sent_daily.csv index 2b44c1f1..6f0c430c 100644 --- a/tests/data/processed/test01/sms_sent_daily.csv +++ b/tests/data/processed/test01/sms_sent_daily.csv @@ -1,2 +1,2 @@ "local_date","sms_sent_daily_countmostfrequentcontact","sms_sent_daily_count","sms_sent_daily_distinctcontacts","sms_sent_daily_timefirstsms","sms_sent_daily_timelastsms" -"2017-05-14",1,1,1,18.10,18.45 +"2017-05-14",1,1,1,18.45,18.45