GenerateDockerfile generates a Dockerfile that replicates the devbox shell
(ctx context.Context, generateOpts devopt.GenerateOpts)
| 512 | |
| 513 | // GenerateDockerfile generates a Dockerfile that replicates the devbox shell |
| 514 | func (d *Devbox) GenerateDockerfile(ctx context.Context, generateOpts devopt.GenerateOpts) error { |
| 515 | ctx, task := trace.NewTask(ctx, "devboxGenerateDockerfile") |
| 516 | defer task.End() |
| 517 | |
| 518 | dockerfilePath := filepath.Join(d.projectDir, "Dockerfile") |
| 519 | // check if Dockerfile doesn't exist |
| 520 | filesExist := fileutil.Exists(dockerfilePath) |
| 521 | if !generateOpts.Force && filesExist { |
| 522 | return usererr.New( |
| 523 | "Dockerfile is already present in the current directory. " + |
| 524 | "Remove it or use --force to overwrite it.", |
| 525 | ) |
| 526 | } |
| 527 | |
| 528 | // Setup Generate parameters |
| 529 | gen := &generate.Options{ |
| 530 | Path: d.projectDir, |
| 531 | RootUser: generateOpts.RootUser, |
| 532 | IsDevcontainer: false, |
| 533 | Pkgs: d.AllPackageNamesIncludingRemovedTriggerPackages(), |
| 534 | LocalFlakeDirs: d.getLocalFlakesDirs(), |
| 535 | } |
| 536 | |
| 537 | scripts := d.cfg.Scripts() |
| 538 | |
| 539 | // generate dockerfile |
| 540 | return errors.WithStack(gen.CreateDockerfile(ctx, generate.CreateDockerfileOptions{ |
| 541 | ForType: generateOpts.ForType, |
| 542 | HasBuild: scripts["build"] != nil, |
| 543 | HasInstall: scripts["install"] != nil, |
| 544 | HasStart: scripts["start"] != nil, |
| 545 | })) |
| 546 | } |
| 547 | |
| 548 | func PrintEnvrcContent(w io.Writer, envFlags devopt.EnvFlags, configDir string) error { |
| 549 | return generate.EnvrcContent(w, envFlags, configDir) |
no test coverage detected