MCPcopy Create free account
hub / github.com/DBCDK/morph / GetBuildShell

Method GetBuildShell

nix/nix.go:226–268  ·  view source on GitHub ↗
(deploymentPath string)

Source from the content-addressed store, hash-verified

224}
225
226func (ctx *NixContext) GetBuildShell(deploymentPath string) (buildShell *string, err error) {
227
228 nixEvalInvocationArgs := NixEvalInvocationArgs{
229 AsJSON: true,
230 Attr: "info.buildShell",
231 DeploymentPath: deploymentPath,
232 NixContext: *ctx,
233 Strict: true,
234 }
235
236 jsonArgs, err := json.Marshal(nixEvalInvocationArgs)
237 if err != nil {
238 return buildShell, err
239 }
240
241 cmd := exec.Command(ctx.EvalCmd, nixEvalInvocationArgs.ToNixInstantiateArgs()...)
242
243 var stdout bytes.Buffer
244 cmd.Stdout = &stdout
245 cmd.Stderr = os.Stderr
246
247 utils.AddFinalizer(func() {
248 if (cmd.ProcessState == nil || !cmd.ProcessState.Exited()) && cmd.Process != nil {
249 _ = cmd.Process.Signal(syscall.SIGTERM)
250 }
251 })
252 cmd.Env = os.Environ()
253 cmd.Env = append(cmd.Env, fmt.Sprintf("MORPH_ARGS=%s", jsonArgs))
254 err = cmd.Run()
255 if err != nil {
256 errorMessage := fmt.Sprintf(
257 "Error while running `%s ..`: %s", ctx.EvalCmd, err.Error(),
258 )
259 return buildShell, errors.New(errorMessage)
260 }
261
262 err = json.Unmarshal(stdout.Bytes(), &buildShell)
263 if err != nil {
264 return nil, err
265 }
266
267 return buildShell, nil
268}
269
270func (ctx *NixContext) EvalHosts(deploymentPath string, attr string) (string, error) {
271 attribute := "nodes." + attr

Callers 1

BuildMachinesMethod · 0.95

Calls 4

ToNixInstantiateArgsMethod · 0.95
AddFinalizerFunction · 0.92
ErrorMethod · 0.80
RunMethod · 0.65

Tested by

no test coverage detected