install_mc() could no longer download the client at all. MinIO
moved 'mc' into its closed-source AIStor product, retired the community
download host (every https://dl.min.io/client/mc/release/ URL now returns
"410 Gone"), and archived the minio/mc
repository. install_mc() now installs the last release published there,
RELEASE.2025-08-13T08-35-41Z, from its GitHub release assets, so existing
workflows keep working. That client is frozen at that version and will
receive no further upstream fixes. Set options(minioclient.version=) to
install a different release tag, or options(minioclient.url=) to download
from a mirror.install_mc() now downloads to a temporary file alongside the destination
and only moves it into place on success, so a failed or truncated download
can no longer leave a stub that later looks like an installed client.
Failures raise an informative error, and a benign download.file() warning
(some R versions warn about a length mismatch across the redirect to
GitHub's CDN) no longer aborts an otherwise complete download.mc() and mc_sql() discarded the client's own error messages.
processx::run() defaults to error_on_status = TRUE and threw before
either function's p$status != 0 check could run, so a failing mc_* call
reported a generic "System command 'mc' failed" while the message mc
wrote to stderr was lost. Both now run with error_on_status = FALSE -- in
mc(), a caller passing that through ... still wins -- and surface the
underlying message. In mc() a timeout or interrupt, which now reaches the
status check with status = NA, gets a descriptive message rather than an
empty one.mc() and mc_sql() looked for a binary named mc
while install_mc() installs mc.exe, so the install check never matched
and interactive sessions were prompted to (re)install on every call. The
binary name is now resolved through a shared mc_bin() helper everywhere.
Thanks to @mdsumner for the diagnosis
(#16,
#15).mc_sql() returns S3-Select results with --json, but mc
reports server-side errors as a JSON payload on stdout while exiting 0.
mc_sql() now detects that payload and raises an R error instead of
returning the error object as if it were query results.CRAN-policy based bugfix release.
~/.mc.
Configuration files are now placed in minio_path() directory,
using OS-specific path from tools::R_user_dir(),
or configured as options("minioclient.dir")install_mc() will now prompt before install in interactive mode and must
be called explicitly in batch scripts.mc_ls() to provide results as a data.framemc_sql() function added, which can query CSV, JSON and parquet objects using sql (S3 Select API sql syntax)mc_head() function added, which reads the first n lines from an object and returns a stringmc_cat() function added, which can be useful when reading or previewing a smaller file directly from the object storage server without first requiring to download it locallymc_config_set(), can be used to set session tokens #1.mc_mb() gains optional arguments, e.g. to not error if bucket exists.mc_rb() prompts first in interactive mode.NEWS.md file to track changes to the package.mc()