summaryrefslogtreecommitdiff
path: root/share/man/just-mrrc.5.org
blob: 07c284818572c9745fee420746ae88042f0efe18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#+TITLE: JUST-MRRC
#+MAN_CLASS_OPTIONS: section-id=5

* NAME

just-mr configuration -- The format of the configuration used by *just-mr(1)*

* DESCRIPTION

The file is read as JSON. Any other serialization describing the
same JSON object is equivalent. We assume, that in JSON objects,
each key occurs at most once; it is implementation defined how
repetitions of the same key are treated.

** Location objects

A /location/ is a JSON object with the keys ~"root"~, ~"path"~, and ~"base"~.

The value for key ~"root"~ is either ~"workspace"~, ~"home"~, or ~"system"~,
which have the following meanings:

- ~"workspace"~ refers to the root of the workspace in which the ~just-mr~
  invocation was issued (not the workspace of the requested main repository).
  This location root is ignored if ~just-mr~ was not invoked from inside a
  workspace.

- ~"home"~ refers to the user's home directory.

- ~"system"~ refers to the system root ~/~.

The value for key ~"path"~ is the relative path of the item to locate within
the location root.

The value for key ~"base"~ is a relative path within the location root. This
path is only relevant for locations of config files. If such a config file
contains relative paths, those will be resolved relative to the specified base.
If omitted, the default value ~.~ is used.

** The just-mrrc format

The just-mrrc is given by a JSON object.

- The value for the key ~"config lookup order"~ is a JSON list of location
  objects, specifying where to look for multi-repository configurations (see
  *just-mr-repository-config(5)* for more detail). The lookup is performed in
  the same order the location objects appear in the list.

- The value for the key ~"local build root"~ is a single location object,
  specifying the path to use as the local build root. For more details, see
  *just-mr(1)*.

- The value for the key ~"checkout locations"~ is a single location object,
  specifying the path to the file for checkout locations. For more details, see
  *just-mr(1)*.

- The value for the key ~"distdirs"~ is a JSON list of location objects,
  specifying where to look for distribution files (usually collected via the
  subcommand ~fetch~). The lookup is performed in the same order the location
  objects appear in the list. For more details, see *just-mr(1)*.

- The value for the key ~"just"~ is a single location object, specifying the
  path to the ~just~ binary to use for execution, if ~just-mr~ is used as a
  launcher.

- The value for the key ~"git"~ is a single location object, specifying the
  path to the git binary to use in the instances when ~just-mr~ needs to shell
  out.

- The value for the key ~"local launcher"~, if given, is list of
  strings setting the default for local launcher for ~just-mr~;
  command-line arguments take precedence over the value in the
  configuration file. If the key ~"local launcher"~ is absent, the
  default ~["env", "--"]~ is assumed.

- The value for the key ~"log limit"~, if given, sets the default
  value for the log limit, that can be overridden by the command-line
  options.

- The value ~"log files"~, if given, has to be a list of location
  objects, specifying additional log files, on top of those specified
  on the command line.

- The value for the key ~"just args"~ is a JSON object. Its keys are ~just~
  subcommands and its value is a JSON list of strings. For the corresponding
  subcommand, these strings are prefixed to the ~just~ argument vector, if
  ~just-mr~ is used as a launcher.

* EXAMPLE

An example just-mrrc file could look like the following:

#+BEGIN_SRC js
{ "config lookup order":
  [ {"root": "workspace", "path": "repos.json"}
  , {"root": "workspace", "path": "etc/repos.json"}
  , {"root": "home", "path": ".just-repos.json"}
  , {"root": "system", "path": "etc/just-repos.json"}
  ]
, "local build root": {"root": "home", "path": ".cache/just"}
, "checkout locations": {"root": "home", "path": ".just-local.json"}
, "local launcher": ["env", "--"]
, "log limit": 4
, "log files": [{"root": "home", "path": ".log/just/latest-invocation"}]
, "distdirs": [{"root": "home", "path": ".distfiles"}]
, "just": {"root": "system", "path": "usr/bin/just"}
, "git": {"root": "system", "path": "usr/bin/git"}
, "just args":
  { "build": ["-r", "10.0.0.1:8980", "--remote-execution-property", "OS:Linux"]
  , "install": ["-r", "10.0.0.1:8980", "--remote-execution-property", "OS:Linux"]
  , "rebuild": ["-r", "10.0.0.1:8980", "--remote-execution-property", "OS:Linux"]
  , "install-cas": ["-r", "10.0.0.1:8980"]
  }
}
#+END_SRC

* See also

*just-mr(1)*, *just-mr-repository-config(5)*