outsider
- package reviewThis is my first review for ROpenSci - exciting! Thank you for the opportunity!
This report contains documents associated with the review of rOpenSci submitted package:
outsider
: ropensci/software-review issue #282.Description:
Install and run external command-line programs in R through use of βDockerβ https://www.docker.com/ and βGitHubβ http://github.com/.
Author: Dom Bennett dominic.john.bennett@gmail.com [aut, cre] (https://orcid.org/0000-0003-2722-1359)
repo url: https://antonellilab.github.io/outsider
website url: https://antonellilab.github.io/outsider/
key review checks:
Please be respectful and kind to the authors in your reviews. The rOpenSci code of conduct is mandatory for everyone involved in our review process.
sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=de_DE.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=de_DE.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=de_DE.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] magrittr_1.5
loaded via a namespace (and not attached):
[1] Rcpp_1.0.0 xmlparsedata_1.0.2 compiler_3.5.2
[4] prettyunits_1.0.2 remotes_2.0.2 tools_3.5.2
[7] testthat_2.0.1 digest_0.6.18 pkgbuild_1.0.2
[10] pkgload_1.0.2 praise_1.0.0 jsonlite_1.6
[13] evaluate_0.13 memoise_1.1.0 rlang_0.3.1
[16] rex_1.1.2 whoami_1.2.0 cli_1.0.1
[19] rstudioapi_0.9.0 yaml_2.2.0 xopen_1.0.0
[22] xfun_0.5 cyclocomp_1.1.0 pkgreviewr_0.1.0
[25] xml2_1.2.0 httr_1.4.0 withr_2.1.2
[28] knitr_1.21 desc_1.2.0 fs_1.2.6
[31] devtools_2.0.1 rprojroot_1.3-2 glue_1.3.0
[34] R6_2.4.0 processx_3.2.1 rcmdcheck_1.3.2
[37] rmarkdown_1.11 sessioninfo_1.1.1 lintr_1.0.3
[40] callr_3.1.1 covr_3.2.1 backports_1.1.3
[43] ps_1.3.0 clisymbols_1.2.0 htmltools_0.3.6
[46] usethis_1.4.0 rsconnect_0.8.13 assertthat_0.2.0
[49] goodpractice_1.0.2 lazyeval_0.2.1 crayon_1.3.4
outsider
install:devtools::install(pkg_dir, dependencies = T, build_vignettes = T)
These packages have more recent versions available.
Which would you like to update?
1: knitr (1.21 -> 1.22 ) [CRAN]
2: openssl (1.2.1 -> 1.2.2) [CRAN]
3: CRAN packages only
4: All
5: None
Enter one or more numbers separated by spaces, or an empty line to cancel
4
knitr (1.21 -> 1.22 ) [CRAN]
openssl (1.2.1 -> 1.2.2) [CRAN]
Installing 2 packages: knitr, openssl
Installing packages into β/home/daniel/R/x86_64-pc-linux-gnu-library/3.5β
(as βlibβ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/knitr_1.22.tar.gz'
Content type 'application/x-gzip' length 928365 bytes (906 KB)
==================================================
downloaded 906 KB
trying URL 'https://cloud.r-project.org/src/contrib/openssl_1.2.2.tar.gz'
Content type 'application/x-gzip' length 1196460 bytes (1.1 MB)
==================================================
downloaded 1.1 MB
* installing *source* package βknitrβ ...
** package βknitrβ successfully unpacked and MD5 sums checked
** R
** demo
** inst
** tests
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (knitr)
* installing *source* package βopensslβ ...
** package βopensslβ successfully unpacked and MD5 sums checked
Found pkg-config cflags and libs!
Using PKG_CFLAGS=
Using PKG_LIBS=-l:libssl.so.1.1 -l:libcrypto.so.1.1
** libs
rm -f aes.o base64.o bignum.o cert.o compatibility.o diffie.o envelope.o error.o hash.o info.o keygen.o keys.o onload.o openssh.o password.o pem.o pkcs12.o pkcs7.o rand.o rsa.o signing.o ssl.o stream.o write.o openssl.so
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c aes.c -o aes.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c base64.c -o base64.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c bignum.c -o bignum.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c cert.c -o cert.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c compatibility.c -o compatibility.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c diffie.c -o diffie.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c envelope.c -o envelope.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c error.c -o error.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c hash.c -o hash.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c info.c -o info.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c keygen.c -o keygen.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c keys.c -o keys.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c onload.c -o onload.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c openssh.c -o openssh.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c password.c -o password.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c pem.c -o pem.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c pkcs12.c -o pkcs12.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c pkcs7.c -o pkcs7.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c rand.c -o rand.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c rsa.c -o rsa.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c signing.c -o signing.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c ssl.c -o ssl.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c stream.c -o stream.o
gcc -std=gnu99 -I"/usr/share/R/include" -DNDEBUG -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c write.c -o write.o
gcc -std=gnu99 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o openssl.so aes.o base64.o bignum.o cert.o compatibility.o diffie.o envelope.o error.o hash.o info.o keygen.o keys.o onload.o openssh.o password.o pem.o pkcs12.o pkcs7.o rand.o rsa.o signing.o ssl.o stream.o write.o -l:libssl.so.1.1 -l:libcrypto.so.1.1 -L/usr/lib/R/lib -lR
installing to /home/daniel/R/x86_64-pc-linux-gnu-library/3.5/openssl/libs
** R
** inst
** tests
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (openssl)
The downloaded source packages are in
β/tmp/RtmpatNG5b/downloaded_packagesβ
Adding βknitr_1.22.tar.gzβ to the cache
Adding βopenssl_1.2.2.tar.gzβ to the cache
Adding βknitr_1.22_R_x86_64-pc-linux-gnu.tar.gzβ to the cache
Adding βopenssl_1.2.2_R_x86_64-pc-linux-gnu.tar.gzβ to the cache
checking for file β/home/daniel/Documents/2019_ROpenSci-review/outsider/DESCRIPTIONβ ...
[32mβ[39m [38;5;247mchecking for file β/home/daniel/Documents/2019_ROpenSci-review/outsider/DESCRIPTIONβ[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mpreparing βoutsiderβ:[39m[36m[39m
checking DESCRIPTION meta-information ...
checking DESCRIPTION meta-information ...
[32mβ[39m [38;5;247mchecking DESCRIPTION meta-information[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for LF line-endings in source and make files and shell scripts[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for empty or unneeded directories[39m[36m[39m
Removed empty directory βoutsider/.githubβ
Removed empty directory βoutsider/docsβ
Removed empty directory βoutsider/examplesβ
Removed empty directory βoutsider/otherβ
Removed empty directory βoutsider/paperβ
Removed empty directory βoutsider/pkgdownβ
Removed empty directory βoutsider/vignettesβ
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mbuilding βoutsider_0.0.0.tar.gzβ[39m[36m[39m
Running /usr/lib/R/bin/R CMD INSTALL \
/tmp/RtmpatNG5b/outsider_0.0.0.tar.gz --install-tests
-
[31m* installing to library β/home/daniel/R/x86_64-pc-linux-gnu-library/3.5β
[39m
|
[31m* installing *source* package βoutsiderβ ...
[39m
-
[31m** R
[39m
|
[31m** inst
[39m
-
[31m** tests
[39m
|
[31m** byte-compile and prepare package for lazy loading
[39m
-
|
-
[31m** help
[39m
|
[31m*** installing help indices
[39m
-
[31m** building package indices
[39m
|
[31m** testing if installed package can be loaded
[39m
-
[31m* DONE (outsider)
[39m
|
-
remove.packages("outsider")
Removing package from β/home/daniel/R/x86_64-pc-linux-gnu-library/3.5β
(as βlibβ is unspecified)
Error in remove.packages : there is no package called βoutsiderβ
outsider
from GitHub with:devtools::install_github("AntonelliLab/outsider", dependencies = T, build_vignettes = T)
Downloading GitHub repo AntonelliLab/outsider@master
checking for file β/tmp/RtmpatNG5b/remotes37c91ced7d13/AntonelliLab-outsider-2b31d50/DESCRIPTIONβ ...
[32mβ[39m [38;5;247mchecking for file β/tmp/RtmpatNG5b/remotes37c91ced7d13/AntonelliLab-outsider-2b31d50/DESCRIPTIONβ[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mpreparing βoutsiderβ:[39m[36m[39m
checking DESCRIPTION meta-information ...
[32mβ[39m [38;5;247mchecking DESCRIPTION meta-information[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for LF line-endings in source and make files and shell scripts[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for empty or unneeded directories[39m[36m[39m
Removed empty directory βoutsider/.githubβ
Removed empty directory βoutsider/docsβ
Removed empty directory βoutsider/examplesβ
Removed empty directory βoutsider/otherβ
Removed empty directory βoutsider/paperβ
Removed empty directory βoutsider/pkgdownβ
Removed empty directory βoutsider/vignettesβ
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mbuilding βoutsider_0.0.0.tar.gzβ[39m[36m[39m
Installing package into β/home/daniel/R/x86_64-pc-linux-gnu-library/3.5β
(as βlibβ is unspecified)
* installing *source* package βoutsiderβ ...
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (outsider)
0.0.0
seems curious to me though, I suggest to either go with the .9000
versioning as described here if you think this is a development state, if you think you have a first working version (as the βactiveβ repo status suggests), why not go with 0.1.0
?outsider
source:devtools::check(pkg_dir)
module_search.R
manually works, but fails during check:E checking examples (1.6s)
Running examples in βoutsider-Ex.Rβ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: module_details
> ### Title: Look up details on module(s)
> ### Aliases: module_details
>
> ### ** Examples
>
> library(outsider)
> # return table of ALL available modules on GitHub
> # NOT RUN - takes too long
> # (available_modules <- module_search())
>
> # look-up whether specific module exists
> # NOT RUN
> # repo <- 'dombennett/om..goodbye.world'
> # (suppressWarnings(module_exists(repo = repo)))
> repo <- 'dombennett/om..hello.world'
> (module_exists(repo = repo))
Error in open.connection(con, "rb") : HTTP error 401.
Calls: module_exists ... parse_and_simplify -> parseJSON -> parse_con -> open -> open.connection
Execution halted
ββ 1. Error: module_details() works (@test-search.R#94) βββββββββββ
HTTP error 401.
1: module_details(repo = c(repo, "dombennett/om..mafft")) at testthat/test-search.R:94
2: lapply(X = repo, FUN = repo_search)
3: FUN(X[[i]], ...)
4: jsonlite::fromJSON(paste0(gh_search_repo_url, search_args))
5: parse_and_simplify(txt = txt, simplifyVector = simplifyVector, simplifyDataFrame = simplifyDataFrame,
simplifyMatrix = simplifyMatrix, flatten = flatten, ...)
6: parseJSON(txt, bigint_as_char)
7: parse_con(txt, bigint_as_char)
8: open(con, "rb")
9: open.connection(con, "rb")
outsider
source:devtools::test(pkg_dir)
Loading outsider
Attaching package: βtestthatβ
The following objects are masked from βpackage:magrittrβ:
equals, is_less_than, not
Testing outsider
β | OK [31mF[39m [35mW[39m [34mS[39m | Context
β | 0 | Testing 'args'
β | 1 | Testing 'args'
β | 2 | Testing 'args'
β Ή | 3 | Testing 'args'
β Έ | 4 | Testing 'args'
β Ό | 5 | Testing 'args'
β ΄ | 6 | Testing 'args'
β ¦ | 7 | Testing 'args'
β § | 8 | Testing 'args'
β | 9 | Testing 'args'
β | 10 | Testing 'args'
β | 11 | Testing 'args'
β | 12 | Testing 'args'
β Ή | 13 | Testing 'args'
β Έ | 14 | Testing 'args'
β Ό | 15 | Testing 'args'
β ΄ | 16 | Testing 'args'
β ¦ | 17 | Testing 'args'
β § | 18 | Testing 'args'
β | 19 | Testing 'args'
β | 20 | Testing 'args'
β | 21 | Testing 'args'
[32mβ[39m | 21 | Testing 'args'
β | 22 | Testing 'args'
β Ή | 23 | Testing 'args'
β Έ | 24 | Testing 'args'
β Ό | 25 | Testing 'args'
β ΄ | 26 | Testing 'args'
β ¦ | 27 | Testing 'args'this: [32m'that'[39m
other ...
... a: [32m'a'[39m
... b: [32m'b'[39m
β § | 28 | Testing 'args'
β | 29 | Testing 'args'
β | 30 | Testing 'args'
β | 31 | Testing 'args'
β | 32 | Testing 'args'
β Ή | 33 | Testing 'args'
β Έ | 34 | Testing 'args'
β Ό | 35 | Testing 'args'
β ΄ | 36 | Testing 'args'[32mHah! The module works! You are impressive![39m
β ¦ | 37 | Testing 'args'[34mA truly unfavourable circumstance: The module is not working....
But keep on making! You're doing fortunately![39m
β § | 38 | Testing 'args'
β | 0 | Testing 'console'
β | 1 | Testing 'console'
β | 2 | Testing 'console'
β Ή | 3 | Testing 'console'cat this
β Έ | 4 | Testing 'console'[32mWow! The module works! You are neat![39m
[32mHuzzah! The module works! You are rad![39m
[32mGee! The module works! You are cool![39m
[32mHuh! The module works! You are funkadelic![39m
[32mWhee! The module works! You are epic![39m
[32mYahoo! The module works! You are rad![39m
[32mOh! The module works! You are flawless![39m
[32mMmm! The module works! You are awe-inspiring![39m
[32mWhoa! The module works! You are remarkable![39m
[32mMmm! The module works! You are awesome![39m
β Ό | 5 | Testing 'console'[34mWell drop the goat. This is not great. The module is not working....
But keep on forming! You're doing frankly![39m
[34mAh shucks.... The module is not working....
But keep on making! You're doing gently![39m
[34mAh shucks.... The module is not working....
But keep on setting up! You're doing gently![39m
[34mI am sorry. I feel bad. The module is not working....
But keep on brewing! You're doing eagerly![39m
[34mDamn damn damn. The module is not working....
But keep on designing! You're doing eagerly![39m
[34mWell drop the goat. This is not great. The module is not working....
But keep on forging! You're doing elegantly![39m
[34mGrrrr..... The module is not working....
But keep on organizing! You're doing tenderly![39m
[34mWell drop the goat. This is not great. The module is not working....
But keep on assembling! You're doing honestly![39m
[34mA truly unfavourable circumstance: The module is not working....
But keep on making! You're doing justly![39m
[34mA truly unfavourable circumstance: The module is not working....
But keep on devising! You're doing quietly![39m
β ΄ | 6 | Testing 'console'
[32mβ[39m | 6 | Testing 'console'
β | 0 | Testing 'container'
β | 1 | Testing 'container'
β | 2 | Testing 'container'
β Ή | 3 | Testing 'container'
β Έ | 4 | Testing 'container'
β Ό | 5 | Testing 'container'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mDocker container details:[22m
Image [32m'dombennett/om_hello.world'[39m
Container [32m'om_hello.world_0'[39m
Tag [32m'latest'[39m
Status [32m'This is a mock'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mOutsider module details:[22m
Repo [32m'dombennett/om..hello.world'[39m
R package [32m'om..hello.world..dombennett'[39m
Program [32m'hello.world'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ΄ | 6 | Testing 'container'
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
β ¦ | 7 | Testing 'container'
-
|
-
|
-
|
-
β § | 8 | Testing 'container'
-
|
β | 9 | Testing 'container'
-
|
β | 10 | Testing 'container'
β | 11 | Testing 'container'
β | 12 | Testing 'container'
β Ή | 13 | Testing 'container'
-
|
-
β Έ | 14 | Testing 'container'
β Ό | 15 | Testing 'container'
β ΄ | 16 | Testing 'container'
-
|
-
|
-
|
β ¦ | 17 | Testing 'container'
-
|
[32mβ[39m | 17 | Testing 'container'[36m [16.2 s][39m
β | 0 | Testing 'docker'
β | 1 | Testing 'docker'
β | 2 | Testing 'docker'
β Ή | 3 | Testing 'docker'
β Έ | 4 | Testing 'docker'
β Ό | 5 | Testing 'docker'
β ΄ | 6 | Testing 'docker'
β ¦ | 7 | Testing 'docker'
-
|
Usage: docker [OPTIONS] COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default
"/home/daniel/.docker")
-D, --debug Enable debug mode
-H, --host list Daemon socket(s) to connect to
-l, --log-level string Set the logging level
("debug"|"info"|"warn"|"error"|"fatal")
(default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default
"/home/daniel/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default
"/home/daniel/.docker/cert.pem")
--tlskey string Path to TLS key file (default
"/home/daniel/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Management Commands:
builder Manage builds
config Manage Docker configs
container Manage containers
engine Manage the docker engine
image Manage images
network Manage networks
node Manage Swarm nodes
plugin Manage plugins
secret Manage Docker secrets
service Manage services
stack Manage Docker stacks
swarm Manage Swarm
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a co
-
mmand in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Run 'docker COMMAND --help' for more information on a command.
|
-
β § | 8 | Testing 'docker'
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
β | 9 | Testing 'docker'
-
|
[31munable to prepare context: path "url" not found
[39m
-
|
β | 10 | Testing 'docker'
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
|
-
β | 11 | Testing 'docker'
-
|
β | 12 | Testing 'docker'
β Ή | 13 | Testing 'docker'
β Έ | 14 | Testing 'docker'
β Ό | 15 | Testing 'docker'
β ΄ | 16 | Testing 'docker'
β ¦ | 17 | Testing 'docker'
[32mβ[39m | 17 | Testing 'docker'[36m [16.9 s][39m
β | 0 | Testing 'identities'
β | 1 | Testing 'identities'
β | 2 | Testing 'identities'
β Ή | 3 | Testing 'identities'
β Έ | 4 | Testing 'identities'
β Ό | 5 | Testing 'identities'
β ΄ | 6 | Testing 'identities'
β ¦ | 7 | Testing 'identities'
β § | 8 | Testing 'identities'
[32mβ[39m | 8 | Testing 'identities'
β | 0 | Testing 'install'
β | 1 | Testing 'install'
β | 2 | Testing 'install'
β Ή | 3 | Testing 'install'
β Έ | 4 | Testing 'install'
β Ό | 5 | Testing 'install'
β ΄ | 6 | Testing 'install'
β ¦ | 7 | Testing 'install'
β § | 8 | Testing 'install'
β | 9 | Testing 'install'
β | 10 | Testing 'install'
β | 11 | Testing 'install'
β | 12 | Testing 'install'
β Ή | 13 | Testing 'install'
β Έ | 14 | Testing 'install'
β Ό | 15 | Testing 'install'
β ΄ | 16 | Testing 'install'
β ¦ | 17 | Testing 'install'
β § | 18 | Testing 'install'
[32mβ[39m | 18 | Testing 'install'[36m [0.7 s][39m
β | 0 | Testing 'log'
β | 1 | Testing 'log'
β | 2 | Testing 'log'
β Ή | 3 | Testing 'log'
β Έ | 4 | Testing 'log'
β Ό | 5 | Testing 'log'
β ΄ | 6 | Testing 'log'
β ¦ | 7 | Testing 'log'
[32mβ[39m | 7 | Testing 'log'
β | 0 | Testing 'outsider'
β | 1 | Testing 'outsider'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mOutsider module:[22m
Repo [32m'user/repo'[39m
Package [32m'repo..user'[39m
Command [32mNA[39m
Args
Files to send
Working dir
Container image
Container name
Container tag
Container status [32m'This is a mock'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β | 2 | Testing 'outsider'
β Ή | 3 | Testing 'outsider'
β Έ | 4 | Testing 'outsider'
β Ό | 5 | Testing 'outsider'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mOutsider module:[22m
Repo [32m'user/repo'[39m
Package [32m'repo..user'[39m
Command [32m'cmd'[39m
Args
Files to send file
Working dir [32m'wd'[39m
Container image
Container name
Container tag
Container status [32m'Not running'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ΄ | 6 | Testing 'outsider'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mOutsider module:[22m
Repo [32m'user/repo'[39m
Package [32m'repo..user'[39m
Command [32m'cmd'[39m
Args
Files to send file
Working dir [32m'wd'[39m
Container image
Container name
Container tag
Container status [32m'Not running'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ¦ | 7 | Testing 'outsider'ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mOutsider module:[22m
Repo [32m'user/repo'[39m
Package [32m'repo..user'[39m
Command [32m'cmd'[39m
Args
Files to send file
Working dir [32m'wd'[39m
Container image
Container name
Container tag
Container status [32m'This is a mock'[39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β § | 8 | Testing 'outsider'
[32mβ[39m | 8 | Testing 'outsider'[36m [0.8 s][39m
β | 0 | Testing 'search'
β | 1 | Testing 'search'
β | 2 | Testing 'search'
β Ή | 3 | Testing 'search'
β Έ | 4 | Testing 'search'
β Ό | 5 | Testing 'search'
β ΄ | 6 | Testing 'search'
β ¦ | 7 | Testing 'search'
β § | 8 | Testing 'search'
β | 9 | Testing 'search'
β | 10 | Testing 'search'
β | 11 | Testing 'search'
β | 12 | Testing 'search'
β Ή | 12 1 | Testing 'search'
β Έ | 13 1 | Testing 'search'
β Ό | 14 1 | Testing 'search'
[32mβ[39m | 14 1 | Testing 'search'[36m [5.3 s][39m
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[1mtest-search.R:94: [35mwarning[39m: module_details() works[22m
No [32m'dombennett/om..mafft'[39m found.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β | 0 | Testing 'internal'
β | 1 | Testing 'internal'
[32mβ[39m | 1 | Testing 'internal'
β | 0 | Testing 'test'
β | 1 | Testing 'test'
β | 2 | Testing 'test'
β Ή | 3 | Testing 'test'
β Έ | 4 | Testing 'test'
β Ό | 5 | Testing 'test'
β ΄ | 6 | Testing 'test'
[32mβ[39m | 6 | Testing 'test'
β | 0 | Testing 'unittest'
β | 1 | Testing 'unittest'
β | 2 | Testing 'unittest'
[32mβ[39m | 2 | Testing 'unittest'
ββ [1mResults[22m βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[36mDuration: 41.2 s[39m
OK: [32m142[39m
Failed: [32m0[39m
Warnings: [35m1[39m
Skipped: [32m0[39m
[32mWoot![39m
outsider
for goodpractice:goodpractice::gp(pkg_dir)
Preparing: covr
Preparing: cyclocomp
checking for file β/tmp/RtmpatNG5b/remotes37c99256552/outsider/DESCRIPTIONβ ...
[32mβ[39m [38;5;247mchecking for file β/tmp/RtmpatNG5b/remotes37c99256552/outsider/DESCRIPTIONβ[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mpreparing βoutsiderβ:[39m[36m[39m
checking DESCRIPTION meta-information ...
[32mβ[39m [38;5;247mchecking DESCRIPTION meta-information[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for LF line-endings in source and make files and shell scripts[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mchecking for empty or unneeded directories[39m[36m[39m
[38;5;247mβ[39m[38;5;247m [39m[38;5;247mbuilding βoutsider_0.0.0.tar.gzβ[39m[36m[39m
* installing *source* package βoutsiderβ ...
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (outsider)
Preparing: description
Preparing: lintr
Preparing: namespace
Preparing: rcmdcheck
[33mββ GP outsider βββββββββββββββββββββββββββββββββββββββββββββββββββββ[39m
[1mIt is good practice to[22m
[31mβ[39m write unit tests for all functions, and all
package code in general. 94% of code lines are covered
by test cases.
[34mR/args.R[39m:[34m138[39m:[34mNA[39m
[34mR/container.R[39m:[34m34[39m:[34mNA[39m
[34mR/container.R[39m:[34m106[39m:[34mNA[39m
[34mR/container.R[39m:[34m135[39m:[34mNA[39m
[34mR/container.R[39m:[34m149[39m:[34mNA[39m
[34m ... and 33 more lines
[39m
[31mβ[39m fix this R CMD check ERROR: Running examples
in βoutsider-Ex.Rβ failed The error most likely occurred
in: > ### Name: module_details > ### Title: Look up
details on module(s) > ### Aliases: module_details > >
### ** Examples > > library(outsider) > # return table
of ALL available modules on GitHub > # NOT RUN - takes
too long > # (available_modules <- module_search()) > >
# look-up whether specific module exists > # NOT RUN > #
repo <- 'dombennett/om..goodbye.world' > #
(suppressWarnings(module_exists(repo = repo))) > repo <-
'dombennett/om..hello.world' > (module_exists(repo =
repo)) Error in open.connection(con, "rb") : HTTP error
401. Calls: module_exists ... parse_and_simplify ->
parseJSON -> parse_con -> open -> open.connection
Execution halted
[31mβ[39m checking tests ... ERROR Running the tests in
βtests/test-all.Rβ failed. Last 13 lines of output: 3:
FUN(X[[i]], ...) 4:
jsonlite::fromJSON(paste0(gh_search_repo_url,
search_args)) 5: parse_and_simplify(txt = txt,
simplifyVector = simplifyVector, simplifyDataFrame =
simplifyDataFrame, simplifyMatrix = simplifyMatrix,
flatten = flatten, ...) 6: parseJSON(txt,
bigint_as_char) 7: parse_con(txt, bigint_as_char) 8:
open(con, "rb") 9: open.connection(con, "rb") ββ
testthat results
βββββββββββββββββββββββββββββββββββββββββββββββ OK: 142
SKIPPED: 0 FAILED: 1 1. Error: module_details() works
(@test-search.R#94) Error: testthat unit tests failed
Execution halted
[33mββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ[39m
devtools::spell_check(pkg_dir)
WORD FOUND IN
etc build.Rmd:45
filepath docker_cp.Rd:10,12
file_create.Rd:15
is_filepath.Rd:5,17
revbayes README.md:73
ropensci README.md:8
README.Rmd:18
README.md
: I recommend to have an empty line after headlines and a space after the #
/##
in the source code for readabilityphylotaR
and ape
to Suggests
because you use them in vignettesonline documentation: https://antonellilab.github.io/outsider/
outsider
function help files:help(package = "outsider")
outsider
vignettes:vignette(package = "outsider")
outsider
covers a pretty complex problem! With the existing examples of one very basic βhello worldβ and one (to me very) complex analysis pipeline, I see room for a further example that shows a bit more but is not that domain specific, e.g.Β loading some data from a CSV and running a regression model, saving that to a file. For me as a user it would be great to know how can I load my data, how call my function, and how access the output data.input_sequences.fasta
does not work - would it be possible to let a user download (with R code) such a file and actually run that? I was a bit disappointed when I went though all previous steps and then was βstoppedβ unexpectedly.log_set
already in the get started documentation.module_help(repo = 'dombennett/om..mafft', fname = 'mafft')
more helpful? Right now it only says βRun mafftβ. I think for the βstoryβ of the vignette it would be much better to actually have some documentation there, e.g.Β reference papers and describe the function.library("outsider")
exports <- ls("package:outsider")
exports
# partial examples only!
outsider:::vars_get
outsider:::.run.outsider
outsider:::repo_search("nuest/outsider")
Sys.getenv("GITHUB_PAT")
module_list(repo = 'dombennett/om..mafft')
is feasible to implement..
pkgreviewr::pkgreview_print_source("outsider")
* might not be suitable for large packages with many exported functions
.module_validate(..)
to validate the formal structure of a module - I now see there is .module_check
:-) - I suggest to put this βTODOβ into a GitHub issue so that potential collaborators see this is an open task, and not have a function that a user cann access with :::
without any functionality. Or at least add a warning("not implemented")
test()
)pkgdetails_get
I personally would rely on the package desc
to do the parsing - you already have a number of imports and this lightweight one should not hurt.module_travis
- your approach means that the function will fail if the repo mooves, or if there is no internet connectionβ¦ for me itβs always a signal to reconsider the approach if you have a constant like a URL within a function body. I think it would be better to manage the βtemplateβ file within the codebase of the package.container.R
: your package code probable precedes stevedore
, but if you find yourself writing code around calling docker with sys::exec..
then it might be worth the effort to switch; things like running containers remotely (if that is what you mean by βremote hostingβ) would come very cheaply then;search.R
:
tkn <- NULL
to make it more obvious when requests fail because of a missing token (and not because the token is not valid etc.)info[['url']] <- paste0('https://github.com/', info[['repo']])
> reuse gh_url
from the top of the same filemodule_exists
is not implemented fully, see suggestion above (warning and/or GitHub issue)See guidance on testing for further details.
covr::package_coverage(pkg_dir)
[1moutsider Coverage: [22m[32m94.10%[39m
[1mR/install.R: [22m[33m86.30%[39m
[1mR/identities.R: [22m[32m90.91%[39m
[1mR/search.R: [22m[32m92.08%[39m
[1mR/docker.R: [22m[32m92.42%[39m
[1mR/test.R: [22m[32m93.02%[39m
[1mR/outsider.R: [22m[32m93.75%[39m
[1mR/container.R: [22m[32m94.12%[39m
[1mR/args.R: [22m[32m98.04%[39m
[1mR/build.R: [22m[32m100.00%[39m
[1mR/console.R: [22m[32m100.00%[39m
[1mR/log.R: [22m[32m100.00%[39m
test-search.R
, the βmainβ function testing in test-outsider.R
, test-log.R
(i.e.Β run actual workflows, capture the output, and see if the user is (not) shown what she should see). You could also run integration tests with incomplete modules and see if they fail at the expected point.test-docker.R
docker_pull
, should be skipped on CRAN, see ?testthat::skip_on_cran
, or you add your own test function skip_if_docker_is_not_available()
(later I saw a comment βTODO: add skips if no dockerβ - go for it :-) ! )img
variable from the previous test - that can quickly break. I suggest to either duplicate img
, or move it outside of the test_that(..)
functiondocker_img_rm()
returns FALSE
expect_warning(expect_equal(attr(system2("docker", args = c("inspect", img), stdout = TRUE, stderr = TRUE), "status"), 1))
, or with the package stevedore (also applies to test-container.R
)test-console.R
expect_output(..)
, e.g. expect_output(outsider:::cat_line('cat this'), "cat this")
(and also for celebrate()
and comfort()
)outsider:::vars_get()
- the function is only for testing, right? Then I think it would be better to add it to the test codebase, e.g.Β in test-all.R
comments: