Create a "handle" for interacting with orderly repositories that
are hosted at a different path. This might be useful in cases
where you have access to an orderly repository via a network mount
or a synchronised folder (e.g., Dropbox, Box, etc). More
generally, orderly_remote_path
implements an interface
used by orderly to abstract over different ways that orderly
repositories might be hosted remotely, including over HTTP APIs.
Value
An orderly_remote_path
object, with methods that
orderly will use in order to control this remote
See also
orderly_pull_dependencies()
and
orderly_pull_archive()
, which are the primary ways
these remote objects are used. See also
OrderlyWeb for a
system for hosting orderly repositories over an HTTP API.
Examples
# Suppose we have a "remote" orderly repository at some path.
# This might be read-only for you in practice and available via a
# network filesystem or a dropbox folder synced to your computer.
# We'll populate this with a pair of reports:
path_remote <- orderly::orderly_example("demo")
id <- orderly::orderly_run("other", list(nmin = 0),
root = path_remote, echo = FALSE)
#> [ name ] other
#> [ id ] 20230621-105036-68689f36
#> [ sources ] functions.R
#> [ parameter ] nmin: 0
#> [ start ] 2023-06-21 10:50:36
#> [ data ] source => extract: 20 x 2
#> [ parameter ] nmin: 0
#> [ end ] 2023-06-21 10:50:36
#> [ elapsed ] Ran report in 0.01751804 secs
#> [ artefact ] summary.csv: 3fac8347e152c84c96e6676413c718b7
#> [ ... ] graph.png: a70cdfd037035a0b34e71b921fc9de42
orderly::orderly_commit(id, root = path_remote)
#> [ commit ] other/20230621-105036-68689f36
#> [ copy ]
#> [ import ] other:20230621-105036-68689f36
#> [ success ] :)
#> [1] "/tmp/RtmpGRuIRx/file4750e36bcc/archive/other/20230621-105036-68689f36"
id <- orderly::orderly_run("use_dependency",
root = path_remote, echo = FALSE)
#> [ name ] use_dependency
#> [ id ] 20230621-105036-ab4ec3f2
#> [ depends ] other@20230621-105036-68689f36:summary.csv -> incoming.csv
#> [ start ] 2023-06-21 10:50:36
#> [ end ] 2023-06-21 10:50:36
#> [ elapsed ] Ran report in 0.01221561 secs
#> [ artefact ] graph.png: a70cdfd037035a0b34e71b921fc9de42
#> [ ... ] info.rds: 257613836b8b7434143957548548e22e
orderly::orderly_commit(id, root = path_remote)
#> [ commit ] use_dependency/20230621-105036-ab4ec3f2
#> [ copy ]
#> [ import ] use_dependency:20230621-105036-ab4ec3f2
#> [ success ] :)
#> [1] "/tmp/RtmpGRuIRx/file4750e36bcc/archive/use_dependency/20230621-105036-ab4ec3f2"
# We'll create a an object to interact with this remote using
# orderly_remote_path.
remote <- orderly::orderly_remote_path(path_remote)
# We can use this object directly
remote$list_reports()
#> [1] "changelog" "connection" "default-param"
#> [4] "global" "html" "interactive"
#> [7] "minimal" "multi-artefact" "multifile-artefact"
#> [10] "other" "slow1" "slow10"
#> [13] "slow3" "spaces" "use_dependency"
#> [16] "use_dependency_2" "use_resource" "use_resource_dir"
#> [19] "view"
remote$list_versions("other")
#> [1] "20230621-105036-68689f36"
# More typically one will interact with the functions
# orderly_pull_archive and orderly_pull_dependencies.
# Now, suppose that you have your "local" copy of this; it shares
# the same source (ordinarily these would both be under version
# control with git):
path_local <- orderly::orderly_example("demo")
# If we wanted to run the report "use_dependency" we need to have
# a copy of the report "other", on which it depends:
try(orderly::orderly_run("use_dependency", root = path_local))
#> [ name ] use_dependency
#> Error in orderly_find_report(id, name, config, draft = use_draft, must_work = TRUE) :
#> Did not find archive report other:latest
# We can "pull" dependencies of a report before running
orderly::orderly_pull_dependencies("use_dependency", remote = remote,
root = path_local)
#> [ depends ] use_dependency has 1 dependency
#> [ pull ] other:20230621-105036-68689f36
#> [ import ] other:20230621-105036-68689f36
# Now we can run the report because we have a local copy of the
# dependency:
orderly::orderly_run("use_dependency", root = path_local)
#> [ name ] use_dependency
#> [ id ] 20230621-105037-1147bd9e
#> [ depends ] other@20230621-105036-68689f36:summary.csv -> incoming.csv
#> [ start ] 2023-06-21 10:50:37
#>
#> > d <- read.csv("incoming.csv", stringsAsFactors = FALSE)
#>
#> > png("graph.png")
#>
#> > par(mar = c(15, 4, 0.5, 0.5))
#>
#> > barplot(setNames(d$number, d$name), las = 2)
#>
#> > dev.off()
#> agg_png
#> 2
#>
#> > info <- orderly::orderly_run_info()
#>
#> > saveRDS(info, "info.rds")
#> [ end ] 2023-06-21 10:50:37
#> [ elapsed ] Ran report in 0.01295447 secs
#> [ artefact ] graph.png: a70cdfd037035a0b34e71b921fc9de42
#> [ ... ] info.rds: 7f85ab8c3a09dfc88c357c7a628be8ba
#> [1] "20230621-105037-1147bd9e"
# We can also directly pull previously run reports:
orderly::orderly_pull_archive("use_dependency", id, remote = remote,
root = path_local)
#> [ pull ] use_dependency:20230621-105036-ab4ec3f2
#> [ depends ] other/20230621-105036-68689f36
#> [ pull ] other:20230621-105036-68689f36 already exists, skipping
#> [ import ] use_dependency:20230621-105036-ab4ec3f2
orderly::orderly_list_archive(root = path_local)
#> name id
#> 1 other 20230621-105036-68689f36
#> 2 use_dependency 20230621-105036-ab4ec3f2