passings args to cue loader to mimick cue eval

Signed-off-by: Richard Jones <richard@dagger.io>
This commit is contained in:
Richard Jones 2021-12-07 16:10:55 -07:00
parent d2af60d484
commit 5c9965f10a
3 changed files with 36 additions and 20 deletions

View File

@ -25,7 +25,7 @@ import (
var upCmd = &cobra.Command{ var upCmd = &cobra.Command{
Use: "up", Use: "up",
Short: "Bring an environment online with latest plan and inputs", Short: "Bring an environment online with latest plan and inputs",
Args: cobra.NoArgs, Args: cobra.MaximumNArgs(1),
PreRun: func(cmd *cobra.Command, args []string) { PreRun: func(cmd *cobra.Command, args []string) {
// Fix Viper bug for duplicate flags: // Fix Viper bug for duplicate flags:
// https://github.com/spf13/viper/issues/233 // https://github.com/spf13/viper/issues/233
@ -52,6 +52,20 @@ var upCmd = &cobra.Command{
} }
ctx := lg.WithContext(cmd.Context()) ctx := lg.WithContext(cmd.Context())
cl := common.NewClient(ctx)
if viper.GetBool("europa") {
err = europaUp(ctx, cl, args...)
// TODO: rework telemetry
// <-doneCh
if err != nil {
lg.Fatal().Err(err).Msg("failed to up environment")
}
return
}
project := common.CurrentProject(ctx) project := common.CurrentProject(ctx)
st := common.CurrentEnvironmentState(ctx, project) st := common.CurrentEnvironmentState(ctx, project)
@ -62,20 +76,6 @@ var upCmd = &cobra.Command{
doneCh := common.TrackProjectCommand(ctx, cmd, project, st) doneCh := common.TrackProjectCommand(ctx, cmd, project, st)
cl := common.NewClient(ctx)
if viper.GetBool("europa") {
err = europaUp(ctx, cl, project.Path)
<-doneCh
if err != nil {
lg.Fatal().Err(err).Msg("failed to up environment")
}
return
}
env, err := environment.New(st) env, err := environment.New(st)
if err != nil { if err != nil {
lg.Fatal().Err(err).Msg("unable to create environment") lg.Fatal().Err(err).Msg("unable to create environment")
@ -112,10 +112,10 @@ var upCmd = &cobra.Command{
}, },
} }
func europaUp(ctx context.Context, cl *client.Client, path string) error { func europaUp(ctx context.Context, cl *client.Client, args ...string) error {
lg := log.Ctx(ctx) lg := log.Ctx(ctx)
p, err := plan.Load(ctx, path, "") p, err := plan.Load(ctx, args...)
if err != nil { if err != nil {
lg.Fatal().Err(err).Msg("failed to load plan") lg.Fatal().Err(err).Msg("failed to load plan")
} }

View File

@ -23,13 +23,13 @@ type Plan struct {
source *compiler.Value source *compiler.Value
} }
func Load(ctx context.Context, path, pkg string) (*Plan, error) { func Load(ctx context.Context, args ...string) (*Plan, error) {
// FIXME: universe vendoring // FIXME: universe vendoring
if err := state.VendorUniverse(ctx, path); err != nil { if err := state.VendorUniverse(ctx, ""); err != nil {
return nil, err return nil, err
} }
v, err := compiler.Build(path, nil, pkg) v, err := compiler.Build("", nil, args...)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -356,6 +356,22 @@ func (w *Project) cleanPackageName(ctx context.Context, pkg string) (string, err
func cueModInit(ctx context.Context, parentDir string) error { func cueModInit(ctx context.Context, parentDir string) error {
lg := log.Ctx(ctx) lg := log.Ctx(ctx)
if parentDir == "" {
wd, _ := os.Getwd()
separator := string(os.PathSeparator)
dirs := strings.Split(wd, separator)
dirsLen := len(dirs)
// traverse the directory tree starting from PWD going up to successive parents
for i := dirsLen; i > 0; i-- {
parentDir = strings.Join(dirs[:i], separator)
// look for the cue.mod filder
if _, err := os.Stat(parentDir + "/cue.mod"); !os.IsNotExist(err) {
break // found it!
}
}
}
modDir := path.Join(parentDir, "cue.mod") modDir := path.Join(parentDir, "cue.mod")
if err := os.Mkdir(modDir, 0755); err != nil { if err := os.Mkdir(modDir, 0755); err != nil {
if !errors.Is(err, os.ErrExist) { if !errors.Is(err, os.ErrExist) {