github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/resource/actions.go (about) 1 package resource 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/gobuffalo/flect/name" 8 "github.com/gobuffalo/genny/v2" 9 "github.com/gobuffalo/genny/v2/gogen" 10 ) 11 12 func addResource(pres presenter) genny.RunFn { 13 return func(r *genny.Runner) error { 14 f, err := r.FindFile("actions/app.go") 15 if err != nil { 16 return err 17 } 18 19 stmt := fmt.Sprintf("app.Resource(\"/%s\", %sResource{})", pres.Name.URL(), pres.Name.Resource()) 20 f, err = gogen.AddInsideBlock(f, "appOnce.Do(func() {", stmt) 21 if err != nil { 22 if strings.Contains(err.Error(), "could not find desired block") { 23 f, err = gogen.AddInsideBlock(f, "if app == nil {", stmt) 24 if err != nil { 25 return err 26 } else { 27 r.Logger.Warnf("This app was built with CLI v0.18.8 or older. See https://gobuffalo.io/documentation/known-issues/#cli-v0.18.8") 28 } 29 } else { 30 return err 31 } 32 } 33 34 return r.File(f) 35 } 36 } 37 38 func actions(opts *Options) []name.Ident { 39 actions := []name.Ident{ 40 name.New("list"), 41 name.New("show"), 42 name.New("create"), 43 name.New("update"), 44 name.New("destroy"), 45 } 46 47 if opts.App.AsWeb { 48 actions = append(actions, name.New("new"), name.New("edit")) 49 } 50 51 return actions 52 }