passings args to cue loader to mimick cue eval
Signed-off-by: Richard Jones <richard@dagger.io>
This commit is contained in:
parent
d2af60d484
commit
5c9965f10a
@ -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")
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
Reference in New Issue
Block a user