@platforma-sdk/workflow-tengo 2.8.0 → 2.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tengo/lib/assets.lib.tengo +76 -82
- package/dist/tengo/lib/constants.lib.tengo +28 -31
- package/dist/tengo/lib/exec.R.internal.lib.tengo +14 -14
- package/dist/tengo/lib/exec.R.lib.tengo +158 -167
- package/dist/tengo/lib/exec.internal.lib.tengo +222 -234
- package/dist/tengo/lib/exec.lib.tengo +647 -714
- package/dist/tengo/lib/exec.package.lib.tengo +229 -238
- package/dist/tengo/lib/exec.python.internal.lib.tengo +5 -6
- package/dist/tengo/lib/exec.python.lib.tengo +138 -146
- package/dist/tengo/lib/exec.runcmd.lib.tengo +234 -253
- package/dist/tengo/lib/exec.runenv.lib.tengo +88 -92
- package/dist/tengo/lib/exec.stream.lib.tengo +36 -40
- package/dist/tengo/lib/file.internal.lib.tengo +70 -77
- package/dist/tengo/lib/file.lib.tengo +54 -57
- package/dist/tengo/lib/ll.lib.tengo +217 -241
- package/dist/tengo/lib/maps.lib.tengo +98 -106
- package/dist/tengo/lib/objects.lib.tengo +11 -13
- package/dist/tengo/lib/oop.lib.tengo +16 -19
- package/dist/tengo/lib/path.lib.tengo +116 -125
- package/dist/tengo/lib/pframes.constants.lib.tengo +25 -28
- package/dist/tengo/lib/pframes.export-pcolumn.lib.tengo +28 -33
- package/dist/tengo/lib/pframes.lib.tengo +38 -43
- package/dist/tengo/lib/pframes.ll.lib.tengo +70 -73
- package/dist/tengo/lib/pframes.pcolumn.lib.tengo +45 -51
- package/dist/tengo/lib/pframes.spec.lib.tengo +70 -96
- package/dist/tengo/lib/pframes.util.lib.tengo +154 -289
- package/dist/tengo/lib/pframes.xsv.lib.tengo +260 -273
- package/dist/tengo/lib/render.lib.tengo +65 -76
- package/dist/tengo/lib/sets.lib.tengo +61 -68
- package/dist/tengo/lib/slices.lib.tengo +169 -180
- package/dist/tengo/lib/smart.lib.tengo +956 -1069
- package/dist/tengo/lib/test.lib.tengo +129 -161
- package/dist/tengo/lib/tpl.lib.tengo +448 -516
- package/dist/tengo/lib/tpl.state-await.lib.tengo +226 -241
- package/dist/tengo/lib/tpl.util.lib.tengo +4 -9
- package/dist/tengo/lib/validation.lib.tengo +334 -379
- package/dist/tengo/lib/workdir.lib.tengo +309 -332
- package/dist/tengo/lib/workdir.proc.lib.tengo +126 -144
- package/dist/tengo/lib/workdir.save.lib.tengo +113 -130
- package/dist/tengo/lib/workflow.bobject.lib.tengo +21 -26
- package/dist/tengo/lib/workflow.bquery.lib.tengo +140 -166
- package/dist/tengo/lib/workflow.constants.lib.tengo +1 -2
- package/dist/tengo/lib/workflow.context.lib.tengo +27 -32
- package/dist/tengo/lib/workflow.lib.tengo +167 -207
- package/dist/tengo/tpl/exec.R.create-renv.plj.gz +0 -0
- package/dist/tengo/tpl/exec.exec.plj.gz +0 -0
- package/dist/tengo/tpl/exec.python.create-venv.plj.gz +0 -0
- package/dist/tengo/tpl/exec.python.install-deps.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.aggregate.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-multiple-pcolumns.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.export-single-pcolumn.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.import-dir.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.map-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-export-pframe.plj.gz +0 -0
- package/dist/tengo/tpl/pframes.xsv-import-map.plj.gz +0 -0
- package/dist/tengo/tpl/workdir.save.plj.gz +0 -0
- package/dist/tengo/tpl/workflow.build-ctx.plj.gz +0 -0
- package/package.json +5 -5
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
7
6
|
|
|
8
7
|
ll := import("@platforma-sdk/workflow-tengo:ll")
|
|
9
8
|
json := import("json")
|
|
@@ -17,318 +16,307 @@ runcmd := import("@platforma-sdk/workflow-tengo:exec.runcmd")
|
|
|
17
16
|
python := import("@platforma-sdk/workflow-tengo:exec.python")
|
|
18
17
|
R := import("@platforma-sdk/workflow-tengo:exec.R")
|
|
19
18
|
|
|
20
|
-
// Variables, substituted in command arguments and environment variable values
|
|
21
19
|
_ARG_VAR_PKG := "{pkg}" // abs path to software package
|
|
22
20
|
_ARG_VAR_JAVA := "{java}" // abs path to 'java' run environment
|
|
23
21
|
_ARG_VAR_PYTHON := "{python}" // abs path to 'python' run environment
|
|
24
22
|
_ARG_VAR_R := "{R}" // abs path to 'R' run environment runtime
|
|
25
23
|
_ARG_VAR_R_VENV := "{rVenv}" // abs path to 'R' portable virtual environment
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
*/
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
32
29
|
_newArg := func(hasVariables, value) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
return ll.toStrict({
|
|
31
|
+
hasVars: hasVariables,
|
|
32
|
+
value: value
|
|
33
|
+
})
|
|
37
34
|
}
|
|
38
35
|
|
|
39
36
|
_newRefVar := func(varName, refName, reference) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
return ll.toStrict({
|
|
38
|
+
varName: varName,
|
|
39
|
+
refName: refName,
|
|
40
|
+
reference: reference
|
|
41
|
+
})
|
|
45
42
|
}
|
|
46
43
|
|
|
47
44
|
_installSoftware := func(registry, pkgName) {
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
archive := pkg.get(registry, pkgName).archive()
|
|
46
|
+
return pkg.install(archive).package()
|
|
50
47
|
}
|
|
51
48
|
|
|
52
49
|
_directCallOptions := func(runOptions) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
50
|
+
cmd := _newArg(false, runOptions.cmd)
|
|
51
|
+
args := []
|
|
52
|
+
envs := {}
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
for name, arg in runOptions.args {
|
|
55
|
+
args = append(args, _newArg(false, arg))
|
|
56
|
+
}
|
|
60
57
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
for name, val in runOptions.envs {
|
|
59
|
+
envs[name] = _newArg(false, val)
|
|
60
|
+
}
|
|
64
61
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
return oop.inherit(runOptions, {
|
|
63
|
+
variables: [],
|
|
64
|
+
customPaths: [],
|
|
65
|
+
cmd: cmd,
|
|
66
|
+
args: args,
|
|
67
|
+
envs: envs
|
|
68
|
+
})
|
|
72
69
|
}
|
|
73
70
|
|
|
74
71
|
_loadJavaRunEnvironment := func(operationMode, descriptor) {
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
javaPkg := _installSoftware(descriptor.runEnv.registry, descriptor.runEnv.package)
|
|
73
|
+
javaRefVar := _newRefVar(_ARG_VAR_JAVA, descriptor.runEnv.name, javaPkg)
|
|
77
74
|
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
return ll.toStrict({
|
|
76
|
+
runEnvType: "java",
|
|
80
77
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
variables: [ javaRefVar ],
|
|
79
|
+
customPaths: [ _newArg(true, path.join(_ARG_VAR_JAVA, descriptor.runEnv.binDir)) ],
|
|
80
|
+
envs: {}
|
|
81
|
+
})
|
|
85
82
|
}
|
|
86
83
|
|
|
87
84
|
_loadPythonRunEnvironment := func(operationMode, descriptor, softName, softPkg) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
85
|
+
venvBuilder := python.venvBuilder().
|
|
86
|
+
software(softPkg).
|
|
87
|
+
runEnvDescriptor(descriptor.runEnv).
|
|
88
|
+
dependencies(descriptor.dependencies)
|
|
92
89
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
if !is_undefined(descriptor.toolset) && descriptor.toolset != "" {
|
|
91
|
+
venvBuilder.useToolset(descriptor.toolset)
|
|
92
|
+
}
|
|
96
93
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
venv := venvBuilder.
|
|
95
|
+
cacheDays(7).
|
|
96
|
+
build().
|
|
97
|
+
venv()
|
|
101
98
|
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
venvRoot := path.join(_ARG_VAR_PYTHON, "venv")
|
|
100
|
+
venvRefKey := softName + "/venv"
|
|
104
101
|
|
|
105
|
-
|
|
102
|
+
pythonRefVar := _newRefVar(_ARG_VAR_PYTHON, venvRefKey, venv)
|
|
106
103
|
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
return ll.toStrict({
|
|
105
|
+
runEnvType: "python",
|
|
109
106
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
107
|
+
variables: [ pythonRefVar ],
|
|
108
|
+
customPaths: [ _newArg(true, path.join(venvRoot, "bin")) ],
|
|
109
|
+
envs: {
|
|
110
|
+
"VIRTUAL_ENV": _newArg(true, venvRoot)
|
|
111
|
+
}
|
|
112
|
+
})
|
|
116
113
|
}
|
|
117
114
|
|
|
118
115
|
_loadRRunEnvironment := func(operationMode, descriptor, softName, softPkg) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
116
|
+
renvBuilder := R.rVenvBuilder().
|
|
117
|
+
operationMode(operationMode).
|
|
118
|
+
software(softPkg).
|
|
119
|
+
runEnvDescriptor(descriptor.runEnv).
|
|
120
|
+
dependencies(descriptor.dependencies)
|
|
121
|
+
|
|
122
|
+
if !is_undefined(descriptor.toolset) && descriptor.toolset != "" {
|
|
123
|
+
renvBuilder.useToolset(descriptor.toolset)
|
|
124
|
+
}
|
|
128
125
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
rRuntime := renvBuilder.
|
|
127
|
+
cacheDays(7).
|
|
128
|
+
build()
|
|
132
129
|
|
|
133
|
-
|
|
134
|
-
|
|
130
|
+
rEnv := rRuntime.venv()
|
|
131
|
+
rPackage := rRuntime.R()
|
|
135
132
|
|
|
136
|
-
|
|
133
|
+
rBinDir := path.join(_ARG_VAR_R, descriptor.runEnv.binDir)
|
|
137
134
|
|
|
138
|
-
|
|
139
|
-
|
|
135
|
+
rRefKey := softName + "/R-runtime"
|
|
136
|
+
rRefVar := _newRefVar(_ARG_VAR_R, rRefKey, rPackage)
|
|
140
137
|
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
rEnvRefKey := softName + "/R-virtual-env"
|
|
139
|
+
rEnvRefVar := _newRefVar(_ARG_VAR_R_VENV, rEnvRefKey, rEnv)
|
|
143
140
|
|
|
144
|
-
|
|
145
|
-
|
|
141
|
+
return ll.toStrict({
|
|
142
|
+
runEnvType: "R",
|
|
146
143
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
144
|
+
variables: [ rRefVar, rEnvRefVar ],
|
|
145
|
+
customPaths: [ _newArg(true, rBinDir) ],
|
|
146
|
+
envs: {
|
|
147
|
+
"R_HOME_DIR": _newArg(true, _ARG_VAR_R),
|
|
148
|
+
"RENV_PATHS_ROOT": _newArg(true, path.join(_ARG_VAR_R, "renv-root")),
|
|
149
|
+
"RENV_PATHS_RENV": _newArg(true, path.join(_ARG_VAR_R_VENV, "renv")),
|
|
150
|
+
"RENV_PATHS_LOCKFILE": _newArg(true, path.join(_ARG_VAR_PKG, descriptor.dependencies.lockFile)),
|
|
151
|
+
"RENV_CONFIG_AUTO_SNAPSHOT": _newArg(false, "FALSE"),
|
|
152
|
+
"RENV_CONFIG_SYNCHRONIZED_CHECK": _newArg(false, "FALSE")
|
|
153
|
+
}
|
|
154
|
+
})
|
|
158
155
|
}
|
|
159
156
|
|
|
160
157
|
|
|
161
158
|
_loadRunEnvironment := func(operationMode, descriptor, softName, softPackage) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*/
|
|
159
|
+
if descriptor.runEnv.type == "java" {
|
|
160
|
+
return _loadJavaRunEnvironment(operationMode, descriptor)
|
|
161
|
+
}
|
|
162
|
+
if descriptor.runEnv.type == "python" {
|
|
163
|
+
return _loadPythonRunEnvironment(operationMode, descriptor, softName, softPackage)
|
|
164
|
+
}
|
|
165
|
+
if descriptor.runEnv.type == "R" {
|
|
166
|
+
return _loadRRunEnvironment(operationMode, descriptor, softName, softPackage)
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
ll.panic("run environment type %q is not currently supported by workflow-sdk", descriptor.runEnv.type)
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
178
174
|
_binPackageCallOptions := func(operationMode, runOptions, variables, descriptor, softPackage) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
ll.assert(len(descriptor.cmd) != 0, "cannot render final command for software: empty 'cmd' in software descritor")
|
|
204
|
-
|
|
205
|
-
cmd := _newArg(true, descriptor.cmd[0])
|
|
206
|
-
|
|
207
|
-
for arg in splice(descriptor.cmd, 1) {
|
|
208
|
-
args = append(args, _newArg(true, arg))
|
|
209
|
-
}
|
|
210
|
-
for arg in runOptions.args {
|
|
211
|
-
args = append(args, _newArg(false, arg))
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
for name, val in runOptions.envs {
|
|
215
|
-
envs[name] = _newArg(false, val)
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return oop.inherit(runOptions, {
|
|
219
|
-
runEnvType: runEnvType,
|
|
220
|
-
variables: variables,
|
|
221
|
-
customPaths: customPaths,
|
|
222
|
-
cmd: cmd,
|
|
223
|
-
args: args,
|
|
224
|
-
envs: envs
|
|
225
|
-
})
|
|
175
|
+
customPaths := []
|
|
176
|
+
envs := ll.toStrict({})
|
|
177
|
+
args := []
|
|
178
|
+
runEnvType := "binary"
|
|
179
|
+
|
|
180
|
+
if (maps.containsKey(descriptor, "runEnv")) {
|
|
181
|
+
runEnvInfo := _loadRunEnvironment(operationMode, descriptor, runOptions.software.name, softPackage)
|
|
182
|
+
|
|
183
|
+
runEnvType = runEnvInfo.runEnvType
|
|
184
|
+
if len(runEnvInfo.variables) > 0 {
|
|
185
|
+
variables = append(variables, runEnvInfo.variables...)
|
|
186
|
+
}
|
|
187
|
+
if len(runEnvInfo.customPaths) > 0 {
|
|
188
|
+
customPaths = append(customPaths, runEnvInfo.customPaths...)
|
|
189
|
+
}
|
|
190
|
+
if len(runEnvInfo.envs) > 0 {
|
|
191
|
+
for n, v in runEnvInfo.envs {
|
|
192
|
+
envs[n] = v
|
|
193
|
+
}
|
|
194
|
+
}
|
|
226
195
|
}
|
|
227
196
|
|
|
228
|
-
|
|
229
|
-
software := runOptions.software
|
|
230
|
-
localDescriptor := software.descriptor.local
|
|
197
|
+
ll.assert(len(descriptor.cmd) != 0, "cannot render final command for software: empty 'cmd' in software descritor")
|
|
231
198
|
|
|
232
|
-
|
|
233
|
-
hash: localDescriptor.hash,
|
|
234
|
-
path: localDescriptor.path,
|
|
235
|
-
descriptor: json.encode(ll.fromStrict(software.descriptor)),
|
|
236
|
-
origin: {
|
|
237
|
-
registry: "dev-local",
|
|
238
|
-
url: "file://" + localDescriptor.path,
|
|
239
|
-
packageName: software.descriptor.name
|
|
240
|
-
}
|
|
241
|
-
}).package()
|
|
199
|
+
cmd := _newArg(true, descriptor.cmd[0])
|
|
242
200
|
|
|
243
|
-
|
|
201
|
+
for arg in splice(descriptor.cmd, 1) {
|
|
202
|
+
args = append(args, _newArg(true, arg))
|
|
203
|
+
}
|
|
204
|
+
for arg in runOptions.args {
|
|
205
|
+
args = append(args, _newArg(false, arg))
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
for name, val in runOptions.envs {
|
|
209
|
+
envs[name] = _newArg(false, val)
|
|
210
|
+
}
|
|
244
211
|
|
|
245
|
-
|
|
212
|
+
return oop.inherit(runOptions, {
|
|
213
|
+
runEnvType: runEnvType,
|
|
214
|
+
variables: variables,
|
|
215
|
+
customPaths: customPaths,
|
|
216
|
+
cmd: cmd,
|
|
217
|
+
args: args,
|
|
218
|
+
envs: envs
|
|
219
|
+
})
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
_devLocalPackageCallOptions := func(runOptions) {
|
|
223
|
+
software := runOptions.software
|
|
224
|
+
localDescriptor := software.descriptor.local
|
|
225
|
+
|
|
226
|
+
softPackage := pkg.use({
|
|
227
|
+
hash: localDescriptor.hash,
|
|
228
|
+
path: localDescriptor.path,
|
|
229
|
+
descriptor: json.encode(ll.fromStrict(software.descriptor)),
|
|
230
|
+
origin: {
|
|
231
|
+
registry: "dev-local",
|
|
232
|
+
url: "file://" + localDescriptor.path,
|
|
233
|
+
packageName: software.descriptor.name
|
|
234
|
+
}
|
|
235
|
+
}).package()
|
|
236
|
+
|
|
237
|
+
variables := [ _newRefVar(_ARG_VAR_PKG, software.name, softPackage) ]
|
|
238
|
+
|
|
239
|
+
return _binPackageCallOptions("dev-local", runOptions, variables, localDescriptor, softPackage)
|
|
246
240
|
}
|
|
247
241
|
|
|
248
242
|
_remotePackageCallOptions := func(runOptions) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
243
|
+
software := runOptions.software
|
|
244
|
+
binaryDescriptor := software.descriptor.binary
|
|
245
|
+
softPackage := _installSoftware(binaryDescriptor.registry, binaryDescriptor.package)
|
|
252
246
|
|
|
253
|
-
|
|
247
|
+
variables := [ _newRefVar(_ARG_VAR_PKG, software.name, softPackage) ]
|
|
254
248
|
|
|
255
|
-
|
|
249
|
+
return _binPackageCallOptions("remote", runOptions, variables, binaryDescriptor, softPackage)
|
|
256
250
|
}
|
|
257
251
|
|
|
258
252
|
binaryRunOptions := func(runOptions) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
//
|
|
263
|
-
return _directCallOptions(runOptions)
|
|
264
|
-
}
|
|
253
|
+
if (is_undefined(ll.fromStrict(runOptions).software)) {
|
|
254
|
+
return _directCallOptions(runOptions)
|
|
255
|
+
}
|
|
265
256
|
|
|
266
|
-
|
|
267
|
-
|
|
257
|
+
software := runOptions.software
|
|
258
|
+
descriptor := software.descriptor
|
|
268
259
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
260
|
+
if (maps.containsKey(descriptor, "local")) {
|
|
261
|
+
return _devLocalPackageCallOptions(runOptions)
|
|
262
|
+
}
|
|
272
263
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
264
|
+
if (maps.containsKey(descriptor, "binary")) {
|
|
265
|
+
return _remotePackageCallOptions(runOptions)
|
|
266
|
+
}
|
|
276
267
|
|
|
277
|
-
|
|
268
|
+
ll.panic("Unable to run software %s v%s: 'binary' execution mode is not enabled in software descriptor", software.name, software.version)
|
|
278
269
|
}
|
|
279
270
|
|
|
280
271
|
prepareCommandRun := func(wd, opts) {
|
|
281
|
-
|
|
272
|
+
runBuilder := runcmd.builder(wd)
|
|
282
273
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
274
|
+
for varInfo in opts.variables {
|
|
275
|
+
runBuilder.ref(varInfo.refName, varInfo.reference)
|
|
276
|
+
runBuilder.substitutionRule(varInfo.varName, varInfo.refName)
|
|
277
|
+
}
|
|
288
278
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}
|
|
279
|
+
for p in opts.customPaths {
|
|
280
|
+
runBuilder.addToPath(p.value, p.hasVars)
|
|
281
|
+
}
|
|
293
282
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
}
|
|
283
|
+
for name, value in opts.envs {
|
|
284
|
+
if value.hasVars {
|
|
285
|
+
runBuilder.envVar(name, value.value)
|
|
286
|
+
} else {
|
|
287
|
+
runBuilder.env(name, value.value)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
302
290
|
|
|
303
|
-
|
|
291
|
+
return runBuilder
|
|
304
292
|
}
|
|
305
293
|
|
|
306
294
|
_activateRenv := func(wd, opts) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
295
|
+
activateRenv := prepareCommandRun(wd, opts)
|
|
296
|
+
activateRenv.
|
|
297
|
+
cmd("R").
|
|
298
|
+
arg("-e").arg("renv::activate()")
|
|
311
299
|
|
|
312
|
-
|
|
300
|
+
activateRenvRun := activateRenv.build()
|
|
313
301
|
|
|
314
|
-
|
|
302
|
+
return activateRenvRun
|
|
315
303
|
}
|
|
316
304
|
|
|
317
305
|
prepareWDForRunEnvironment := func(wd, opts) {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
306
|
+
if (!maps.containsKey(opts, "runEnvType")) {
|
|
307
|
+
return wd
|
|
308
|
+
}
|
|
321
309
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
310
|
+
if (opts.runEnvType == "R") {
|
|
311
|
+
return _activateRenv(wd, opts).workdir
|
|
312
|
+
}
|
|
325
313
|
|
|
326
|
-
|
|
314
|
+
return wd
|
|
327
315
|
}
|
|
328
316
|
|
|
329
317
|
export {
|
|
330
|
-
|
|
318
|
+
binaryRunOptions : binaryRunOptions,
|
|
331
319
|
|
|
332
|
-
|
|
333
|
-
|
|
320
|
+
prepareWDForRunEnvironment : prepareWDForRunEnvironment,
|
|
321
|
+
prepareCommandRun : prepareCommandRun
|
|
334
322
|
}
|