github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/cmds/newapp/mod.go (about)

     1  package newapp
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"path/filepath"
     7  
     8  	"github.com/gobuffalo/buffalo-cli/v2/cli/internal/plugins/golang/mod"
     9  	"github.com/gobuffalo/plugins"
    10  )
    11  
    12  func (cmd *Cmd) modInit(ctx context.Context, root string, name string) error {
    13  	mi := &mod.Initer{}
    14  	var miplugs []plugins.Plugin
    15  
    16  	if cmd.pluginsFn != nil {
    17  		miplugs = cmd.pluginsFn()
    18  	}
    19  
    20  	fp := os.Getenv("BUFFALO_CLI")
    21  	if len(fp) == 0 {
    22  		err := mi.ModInit(ctx, root, name)
    23  		return plugins.Wrap(cmd, err)
    24  	}
    25  
    26  	if _, err := os.Stat(fp); err != nil {
    27  		return plugins.Wrap(cmd, err)
    28  	}
    29  
    30  	rel, err := filepath.Rel(root, fp)
    31  	if err != nil {
    32  		return plugins.Wrap(cmd, err)
    33  	}
    34  	rel = filepath.Dir(rel)
    35  
    36  	fn := func(root string) map[string]string {
    37  		return map[string]string{
    38  			"github.com/gobuffalo/buffalo-cli/v2": filepath.Join(rel, "/buffalo-cli"),
    39  		}
    40  	}
    41  
    42  	miplugs = append(miplugs, devReplacer(fn))
    43  	mi.WithPlugins(func() []plugins.Plugin {
    44  		return miplugs
    45  	})
    46  
    47  	pwd, err := os.Getwd()
    48  	if err != nil {
    49  		return plugins.Wrap(cmd, err)
    50  	}
    51  	defer os.Chdir(pwd)
    52  	os.Chdir(root)
    53  
    54  	err = mi.ModInit(ctx, root, name)
    55  	return plugins.Wrap(cmd, err)
    56  }