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  }