Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ export(image_delete)
export(image_rename)
export(image_transfer)
export(images)
export(install_github_r_package)
export(install_r_package)
export(key)
export(key_create)
Expand Down
60 changes: 51 additions & 9 deletions R/debian.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ NULL
#' @export
debian_add_swap <- function(droplet) {
droplet_ssh(droplet,
"fallocate -l 4G /swapfile",
"chmod 600 /swapfile",
"mkswap /swapfile",
"sudo swapon /swapfile",
"sudo echo \"/swapfile none swap sw 0 0\" >> /etc/fstab"
"fallocate -l 4G /swapfile",
"chmod 600 /swapfile",
"mkswap /swapfile",
"sudo swapon /swapfile",
"sudo echo \"/swapfile none swap sw 0 0\" >> /etc/fstab"
)
}

Expand Down Expand Up @@ -86,8 +86,8 @@ debian_install_opencpu <- function(droplet, version = "1.5") {
#' @export
debian_apt_get_update <- function(droplet) {
droplet_ssh(droplet,
"sudo apt-get update -qq",
"sudo apt-get upgrade -y"
"sudo apt-get update -qq",
"sudo apt-get upgrade -y"
)
}

Expand All @@ -96,7 +96,7 @@ debian_apt_get_update <- function(droplet) {
#' @param ... Arguments to apt-get install.
debian_apt_get_install <- function(droplet, ...) {
droplet_ssh(droplet,
paste0("sudo apt-get install -y --force-yes ", paste(..., collapse = " "))
paste0("sudo apt-get install -y --force-yes ", paste(..., collapse = " "))
)
}

Expand All @@ -108,6 +108,48 @@ debian_apt_get_install <- function(droplet, ...) {
#' @param repo CRAN mirror to use.
install_r_package <- function(droplet, package, repo = "http://cran.rstudio.com") {
droplet_ssh(droplet,
sprintf("Rscript -e \"install.packages(\'%s\', repos=\'%s/\')\"", package, repo)
sprintf("Rscript -e \"install.packages(\'%s\', repos=\'%s/\')\"", package, repo)
)
}

#' @rdname debian
#' @export
#' @param package Name of R package to install.
#' @param repo CRAN mirror to use.
install_github_r_package <- function(droplet, package, repo = "http://cran.rstudio.com") {
tf <- tempdir()
randName <- paste(sample(c(letters, LETTERS), size = 10,
replace = TRUE), collapse = "")
tff <- file.path(tf, randName)
on.exit({
if (file.exists(tff)) {
file.remove(tff)
}
})
command = "Rscript -e \"cat(requireNamespace('remotes', quietly = TRUE))\""
droplet_ssh(droplet, paste0(command, " > /tmp/",
randName), verbose = FALSE)
droplet_download(droplet, paste0("/tmp/", randName),
tf, verbose = FALSE)
droplet_ssh(droplet, paste0("rm /tmp/", randName),
verbose = FALSE)

have_remotes <- readLines(tff, warn = FALSE)
if (length(have_remotes) == 1) {
if (have_remotes %in% c("TRUE", "FALSE")) {
have_remotes = as.logical(have_remotes)
} else {
have_remotes = FALSE
}
} else {
have_remotes = FALSE
}
if (!have_remotes) {
install_r_package(droplet, "remotes", repo = repo)
}

droplet_ssh(
droplet,
sprintf("Rscript -e \"remotes::install_github('%s')\"",
package))
}
9 changes: 5 additions & 4 deletions R/droplet-ssh.R
Original file line number Diff line number Diff line change
Expand Up @@ -78,24 +78,25 @@ droplet_ssh <- function(droplet, ..., user = "root", keyfile = NULL, ssh_passwd

#' @export
#' @rdname droplet_ssh
droplet_upload <- function(droplet, local, remote, user = "root", keyfile = NULL,
droplet_upload <- function(droplet, local, remote, user = "root", keyfile = NULL,
ssh_passwd = NULL, verbose = FALSE) {

check_for_a_pkg("ssh")
droplet <- as.droplet(droplet)
do_scp(droplet, local, remote, user,
keyfile = keyfile, ssh_passwd = ssh_passwd,
do_scp(droplet, local, remote, user,
keyfile = keyfile, ssh_passwd = ssh_passwd,
verbose = verbose)
}


#' @export
#' @rdname droplet_ssh
droplet_download <- function(droplet, remote, local, user = "root",
keyfile = NULL, ssh_passwd = NULL, verbose = FALSE, overwrite = FALSE) {

check_for_a_pkg("ssh")
droplet <- as.droplet(droplet)
do_scp(droplet, local, remote, user, scp = "download",
do_scp(droplet, local, remote, user, scp = "download",
keyfile, ssh_passwd, verbose = verbose)
}

Expand Down
3 changes: 3 additions & 0 deletions man/debian.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.