github.com/drud/ddev@v1.21.5-alpha1.0.20230226034409-94fcc4b94453/pkg/ddevapp/composer.go (about) 1 package ddevapp 2 3 import ( 4 "fmt" 5 "os" 6 "runtime" 7 8 "github.com/drud/ddev/pkg/fileutil" 9 "github.com/mattn/go-isatty" 10 ) 11 12 // Composer runs composer commands in the web container, managing pre- and post- hooks 13 // returns stdout, stderr, error 14 func (app *DdevApp) Composer(args []string) (string, string, error) { 15 err := app.ProcessHooks("pre-composer") 16 if err != nil { 17 return "", "", fmt.Errorf("failed to process pre-composer hooks: %v", err) 18 } 19 20 stdout, stderr, err := app.Exec(&ExecOpts{ 21 Service: "web", 22 Dir: app.GetComposerRoot(true, true), 23 RawCmd: append([]string{"composer"}, args...), 24 Tty: isatty.IsTerminal(os.Stdin.Fd()), 25 }) 26 if err != nil { 27 return stdout, stderr, fmt.Errorf("composer command failed: %v", err) 28 } 29 30 err = app.MutagenSyncFlush() 31 if err != nil { 32 return stdout, stderr, err 33 } 34 if runtime.GOOS == "windows" { 35 fileutil.ReplaceSimulatedLinks(app.AppRoot) 36 } 37 err = app.ProcessHooks("post-composer") 38 if err != nil { 39 return "", "", fmt.Errorf("failed to process post-composer hooks: %v", err) 40 } 41 42 return stdout, stderr, nil 43 }