github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/build/apkg.go (about)

     1  package build
     2  
     3  import (
     4  	"os/exec"
     5  
     6  	"github.com/gobuffalo/genny/v2"
     7  )
     8  
     9  func apkg(opts *Options) (*genny.Generator, error) {
    10  	g := genny.New()
    11  
    12  	if err := opts.Validate(); err != nil {
    13  		return g, err
    14  	}
    15  
    16  	g.RunFn(copyInflections)
    17  	g.RunFn(copyDatabase)
    18  	g.RunFn(addDependencies)
    19  
    20  	return g, nil
    21  }
    22  
    23  func addDependencies(r *genny.Runner) error {
    24  	return r.Exec(exec.Command("go", "mod", "tidy"))
    25  }
    26  
    27  func copyDatabase(r *genny.Runner) error {
    28  	defer func() {
    29  		r.Disk.Remove("database.yml")
    30  	}()
    31  	f, err := r.FindFile("database.yml")
    32  	if err != nil {
    33  		f, err = r.FindFile("config/database.yml")
    34  		if err != nil {
    35  			// it's ok to not have this file
    36  			return nil
    37  		}
    38  	}
    39  	return r.File(genny.NewFile("a/database.yml", f))
    40  }
    41  
    42  func copyInflections(r *genny.Runner) error {
    43  	defer func() {
    44  		r.Disk.Remove("inflections.json")
    45  	}()
    46  	f, err := r.FindFile("inflections.json")
    47  	if err != nil {
    48  		// it's ok to not have this file
    49  		return nil
    50  	}
    51  	return r.File(genny.NewFile("a/inflections.json", f))
    52  }