52 lines
2.1 KiB
R
52 lines
2.1 KiB
R
#' @importFrom s3fs s3_file_exists s3_file_upload s3_file_system
|
|
#' @export
|
|
upload_single_binary_to_s3 <- function(
|
|
endpoint = "https://s3.eu-central-003.backblazeb2.com",
|
|
region = "eu-central-003",
|
|
bucket = "devxy-arm64-r-binaries",
|
|
local_build_root = "/root", codename = NULL,
|
|
package_name, tag,
|
|
r_version_minor = NULL, build_for_minor = FALSE,
|
|
force = FALSE,
|
|
debug = FALSE) {
|
|
codename <- set_codename(codename)
|
|
|
|
if (is.null(r_version_minor)) {
|
|
r_version_minor <- sub("R version (\\d+\\.\\d+).*", "\\1", R.Version()$version.string)
|
|
}
|
|
|
|
local_bin_path <- set_bin_path(r_version_minor, build_for_minor, local_build_root = local_build_root, codename)
|
|
remote_bin_path <- set_bin_path(r_version_minor, build_for_minor, local_build_root = bucket, codename)
|
|
|
|
if (debug) {
|
|
cli::cli_alert_danger("DEBUG: dir_out_bin: {dir_out_bin}, codename: {codename}")
|
|
cli::cli_alert_danger("DEBUG: Body: {sprintf('%s/%s', dir_out_bin, tarball_name)}")
|
|
}
|
|
|
|
s3fs::s3_file_system(
|
|
aws_access_key_id = Sys.getenv("AWS_ACCESS_KEY_ID"),
|
|
aws_secret_access_key = Sys.getenv("AWS_SECRET_ACCESS_KEY"),
|
|
endpoint = endpoint,
|
|
region_name = region,
|
|
)
|
|
|
|
tarball_name <- sprintf("%s_%s.tar.gz", package_name, tag)
|
|
exists <- s3fs::s3_file_exists(sprintf("%s/%s", remote_bin_path, tarball_name))
|
|
|
|
if ((!exists && !force) || (!exists && force)) {
|
|
cli::cli_alert("{.fun upload_single_binary_to_s3}: 5. Uploading {.pkg {package_name}} {.field {tag}} to S3.")
|
|
s3fs::s3_file_upload(
|
|
sprintf("%s/%s", local_bin_path, tarball_name),
|
|
sprintf("%s/%s", remote_bin_path, tarball_name)
|
|
)
|
|
} else if (exists && force) {
|
|
cli::cli_alert_info("{.fun upload_single_binary_to_s3}: Force uploading package {.pkg {package_name}} {.field {tag}} because {.code force = TRUE} was set.")
|
|
s3fs::s3_file_upload(
|
|
sprintf("%s/%s", local_bin_path, tarball_name),
|
|
sprintf("%s/%s", remote_bin_path, tarball_name),
|
|
overwrite = TRUE
|
|
)
|
|
} else if (exists && !force) {
|
|
cli::cli_alert("{.fun upload_single_binary_to_s3}: Package {.pkg {package_name}} {.field {tag}} already exists in S3. Skipping upload.")
|
|
}
|
|
}
|