(deploymentPath string)
| 224 | } |
| 225 | |
| 226 | func (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 | |
| 270 | func (ctx *NixContext) EvalHosts(deploymentPath string, attr string) (string, error) { |
| 271 | attribute := "nodes." + attr |
no test coverage detected