MCPcopy Index your code
hub / github.com/jetify-com/devbox / GenerateDockerfile

Method GenerateDockerfile

internal/devbox/devbox.go:514–546  ·  view source on GitHub ↗

GenerateDockerfile generates a Dockerfile that replicates the devbox shell

(ctx context.Context, generateOpts devopt.GenerateOpts)

Source from the content-addressed store, hash-verified

512
513// GenerateDockerfile generates a Dockerfile that replicates the devbox shell
514func (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
548func PrintEnvrcContent(w io.Writer, envFlags devopt.EnvFlags, configDir string) error {
549 return generate.EnvrcContent(w, envFlags, configDir)

Callers 1

dockerfileCmdFunction · 0.80

Calls 7

getLocalFlakesDirsMethod · 0.95
CreateDockerfileMethod · 0.95
ExistsFunction · 0.92
NewFunction · 0.92
EndMethod · 0.80
ScriptsMethod · 0.45

Tested by

no test coverage detected