Touch a module by marking it as outdated and by resetting its default configuration, if appropriate.

touch(name = .Last.name)

Arguments

name

A string (character vector of lenght one).

A module name can contain letters, figures and some special characters, namely _, -, and /. The latter is a namespace separator.

Names containing /mock/, /mocks/, /test/, /tests/, /example/, or /examples/ have a special meaning related to code testing and examples.

The name "modulr" corresponds to a special module and is therefore reserved.

Details

See make and module_options.

Warning

It is considered a very bad practice to define, touch, undefine, load, make, reset, or perform any other operation from within a module definition that may alterate the internal state of modulr.

See also

.Last.name, plot_dependencies, make, module_options, and reset.

Examples

#> [2018-12-02T17:14:11 CET] Resetting modulr state ... OK
define("foo", NULL, function() format(Sys.time(), "%H:%M:%OS6"))
#> [2018-12-02T17:14:11 CET] Defining 'foo' ... OK
#> [2018-12-02T17:14:11 CET] Making 'foo' ... #> [2018-12-02T17:14:11 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:11 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:11 CET] DONE ('foo' in 0.026 secs)
#> [1] "17:14:11.631650"
#> [2018-12-02T17:14:11 CET] Making 'foo' ... #> [2018-12-02T17:14:11 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:11 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:11 CET] DONE ('foo' in 0.026 secs)
#> [1] "17:14:11.631650"
touch()
#> [2018-12-02T17:14:11 CET] Touching 'foo' ... OK
#> [2018-12-02T17:14:11 CET] Making 'foo' ... #> [2018-12-02T17:14:11 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:11 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:11 CET] DONE ('foo' in 0.033 secs)
#> [1] "17:14:11.703787"
#> [2018-12-02T17:14:11 CET] Resetting modulr state ... OK
define("A", NULL, function() "(A)")
#> [2018-12-02T17:14:11 CET] Defining 'A' ... OK
define("B", NULL, function() "(B)")
#> [2018-12-02T17:14:11 CET] Defining 'B' ... OK
define("C", list(a = "A"), function(a) paste0("(", a, "C)"))
#> [2018-12-02T17:14:11 CET] Defining 'C' ... OK
define("D", list(a = "A", b = "B"), function(a, b) paste0("(", a, b, "D)"))
#> [2018-12-02T17:14:11 CET] Defining 'D' ... OK
define("E", list(d = "D"), function(d) paste0("(", d, "E)"))
#> [2018-12-02T17:14:11 CET] Defining 'E' ... OK
define("F", list(c = "C", d = "D", e = "E"), function(c, d, e) paste0("(", c, d, e, "F)"))
#> [2018-12-02T17:14:11 CET] Defining 'F' ... OK
#> [2018-12-02T17:14:11 CET] Making 'F' ... #> [2018-12-02T17:14:11 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:11 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:11 CET] * Sorting 5 dependencies with 7 relations ... on 3 layers, OK #> [2018-12-02T17:14:11 CET] * Evaluating new and outdated dependencies ... #> [2018-12-02T17:14:11 CET] ** Evaluating #1/5 (layer #1/3): 'B' ... #> [2018-12-02T17:14:11 CET] ** Evaluating #2/5 (layer #1/3): 'A' ... #> [2018-12-02T17:14:11 CET] ** Evaluating #3/5 (layer #2/3): 'C' ... #> [2018-12-02T17:14:11 CET] ** Evaluating #4/5 (layer #2/3): 'D' ... #> [2018-12-02T17:14:11 CET] ** Evaluating #5/5 (layer #3/3): 'E' ... #> [2018-12-02T17:14:11 CET] DONE ('F' in 0.15 secs)
#> [1] "(((A)C)((A)(B)D)(((A)(B)D)E)F)"
touch("B")
#> [2018-12-02T17:14:11 CET] Touching 'B' ... OK
make("F")
#> [2018-12-02T17:14:11 CET] Making 'F' ... #> [2018-12-02T17:14:11 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:12 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:12 CET] * Sorting 5 dependencies with 7 relations ... on 3 layers, OK #> [2018-12-02T17:14:12 CET] * Evaluating new and outdated dependencies ... #> [2018-12-02T17:14:12 CET] ** Evaluating #1/5 (layer #1/3): 'B' ... #> [2018-12-02T17:14:12 CET] ** Evaluating #4/5 (layer #2/3): 'D' ... #> [2018-12-02T17:14:12 CET] ** Evaluating #5/5 (layer #3/3): 'E' ... #> [2018-12-02T17:14:12 CET] DONE ('F' in 0.15 secs)
#> [1] "(((A)C)((A)(B)D)(((A)(B)D)E)F)"
#> [2018-12-02T17:14:12 CET] Resetting modulr state ... OK
define("foo", list(bar = "bar"), function(bar) bar)
#> [2018-12-02T17:14:12 CET] Defining 'foo' ... OK
define("bar#1.0.0", NULL, function() "bar v1.0.0")
#> [2018-12-02T17:14:12 CET] Defining 'bar#1.0.0' ... OK
define("bar#1.0.1", NULL, function() "bar v1.0.1")
#> [2018-12-02T17:14:12 CET] Defining 'bar#1.0.1' ... OK
make("foo")
#> [2018-12-02T17:14:12 CET] Making 'foo' ... #> [2018-12-02T17:14:12 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:12 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:12 CET] * Evaluating #1/1 (layer #1/1): 'bar#1.0.1' ... #> [2018-12-02T17:14:12 CET] DONE ('foo' in 0.059 secs)
#> [1] "bar v1.0.1"
maps_config$set(foo = list("bar" = "bar#1.0.0")) make("foo")
#> [2018-12-02T17:14:12 CET] Making 'foo' ... #> [2018-12-02T17:14:12 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:12 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:12 CET] DONE ('foo' in 0.057 secs)
#> [1] "bar v1.0.1"
touch("foo")
#> [2018-12-02T17:14:12 CET] Touching 'foo' ... OK
make("foo")
#> [2018-12-02T17:14:12 CET] Making 'foo' ... #> [2018-12-02T17:14:12 CET] * Visiting and defining dependencies ... #> [2018-12-02T17:14:12 CET] * Constructing dependency graph ... OK #> [2018-12-02T17:14:12 CET] * Evaluating #1/1 (layer #1/1): 'bar#1.0.0' ... #> [2018-12-02T17:14:12 CET] DONE ('foo' in 0.059 secs)
#> [1] "bar v1.0.0"