Merge pull request #220 from dagger/layout-to-plan
terminology: rename layout -> plan
This commit is contained in:
commit
c5089d5c04
@ -33,9 +33,9 @@ var computeCmd = &cobra.Command{
|
|||||||
ctx := lg.WithContext(cmd.Context())
|
ctx := lg.WithContext(cmd.Context())
|
||||||
|
|
||||||
st := &dagger.DeploymentState{
|
st := &dagger.DeploymentState{
|
||||||
ID: uuid.New().String(),
|
ID: uuid.New().String(),
|
||||||
Name: "FIXME",
|
Name: "FIXME",
|
||||||
LayoutSource: dagger.DirInput(args[0], []string{"*.cue", "cue.mod"}),
|
PlanSource: dagger.DirInput(args[0], []string{"*.cue", "cue.mod"}),
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, input := range viper.GetStringSlice("input-string") {
|
for _, input := range viper.GetStringSlice("input-string") {
|
||||||
|
@ -34,8 +34,8 @@ var newCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
st := &dagger.DeploymentState{
|
st := &dagger.DeploymentState{
|
||||||
Name: getNewDeploymentName(ctx),
|
Name: getNewDeploymentName(ctx),
|
||||||
LayoutSource: getLayoutSource(ctx),
|
PlanSource: getPlanSource(ctx),
|
||||||
}
|
}
|
||||||
|
|
||||||
err = store.CreateDeployment(ctx, st)
|
err = store.CreateDeployment(ctx, st)
|
||||||
@ -86,8 +86,8 @@ func getNewDeploymentName(ctx context.Context) string {
|
|||||||
return currentDir
|
return currentDir
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Implement options: --layout-*
|
// FIXME: Implement options: --plan-*
|
||||||
func getLayoutSource(ctx context.Context) dagger.Input {
|
func getPlanSource(ctx context.Context) dagger.Input {
|
||||||
lg := log.Ctx(ctx)
|
lg := log.Ctx(ctx)
|
||||||
|
|
||||||
wd, err := os.Getwd()
|
wd, err := os.Getwd()
|
||||||
@ -102,10 +102,10 @@ func init() {
|
|||||||
newCmd.Flags().StringP("name", "n", "", "Specify a deployment name")
|
newCmd.Flags().StringP("name", "n", "", "Specify a deployment name")
|
||||||
newCmd.Flags().BoolP("up", "u", false, "Bring the deployment online")
|
newCmd.Flags().BoolP("up", "u", false, "Bring the deployment online")
|
||||||
|
|
||||||
newCmd.Flags().String("layout-dir", "", "Load layout from a local directory")
|
newCmd.Flags().String("plan-dir", "", "Load plan from a local directory")
|
||||||
newCmd.Flags().String("layout-git", "", "Load layout from a git repository")
|
newCmd.Flags().String("plan-git", "", "Load plan from a git repository")
|
||||||
newCmd.Flags().String("layout-package", "", "Load layout from a cue package")
|
newCmd.Flags().String("plan-package", "", "Load plan from a cue package")
|
||||||
newCmd.Flags().String("layout-file", "", "Load layout from a cue or json file")
|
newCmd.Flags().String("plan-file", "", "Load plan from a cue or json file")
|
||||||
|
|
||||||
newCmd.Flags().String("setup", "auto", "Specify whether to prompt user for initial setup (no|yes|auto)")
|
newCmd.Flags().String("setup", "auto", "Specify whether to prompt user for initial setup (no|yes|auto)")
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package layout
|
package plan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var dirCmd = &cobra.Command{
|
var dirCmd = &cobra.Command{
|
||||||
Use: "dir PATH",
|
Use: "dir PATH",
|
||||||
Short: "Load layout from a local directory",
|
Short: "Load plan from a local directory",
|
||||||
Args: cobra.ExactArgs(1),
|
Args: cobra.ExactArgs(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:
|
@ -1,4 +1,4 @@
|
|||||||
package layout
|
package plan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var fileCmd = &cobra.Command{
|
var fileCmd = &cobra.Command{
|
||||||
Use: "file PATH|-",
|
Use: "file PATH|-",
|
||||||
Short: "Load layout from a cue file",
|
Short: "Load plan from a cue file",
|
||||||
Args: cobra.ExactArgs(1),
|
Args: cobra.ExactArgs(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:
|
@ -1,4 +1,4 @@
|
|||||||
package layout
|
package plan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var gitCmd = &cobra.Command{
|
var gitCmd = &cobra.Command{
|
||||||
Use: "git REMOTE REF [SUBDIR]",
|
Use: "git REMOTE REF [SUBDIR]",
|
||||||
Short: "Load layout from a git package",
|
Short: "Load plan from a git package",
|
||||||
Args: cobra.MinimumNArgs(2),
|
Args: cobra.MinimumNArgs(2),
|
||||||
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:
|
@ -1,4 +1,4 @@
|
|||||||
package layout
|
package plan
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
var packageCmd = &cobra.Command{
|
var packageCmd = &cobra.Command{
|
||||||
Use: "package PKG",
|
Use: "package PKG",
|
||||||
Short: "Load layout from a cue package",
|
Short: "Load plan from a cue package",
|
||||||
Args: cobra.ExactArgs(1),
|
Args: cobra.ExactArgs(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:
|
@ -1,11 +1,11 @@
|
|||||||
package layout
|
package plan
|
||||||
|
|
||||||
import "github.com/spf13/cobra"
|
import "github.com/spf13/cobra"
|
||||||
|
|
||||||
// Cmd exposes the top-level command
|
// Cmd exposes the top-level command
|
||||||
var Cmd = &cobra.Command{
|
var Cmd = &cobra.Command{
|
||||||
Use: "layout",
|
Use: "plan",
|
||||||
Short: "Manage a deployment's layout",
|
Short: "Manage a deployment's plan",
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
@ -57,7 +57,7 @@ func init() {
|
|||||||
|
|
||||||
queryCmd.Flags().BoolP("--no-input", "I", false, "Exclude inputs from query")
|
queryCmd.Flags().BoolP("--no-input", "I", false, "Exclude inputs from query")
|
||||||
queryCmd.Flags().BoolP("--no-output", "O", false, "Exclude outputs from query")
|
queryCmd.Flags().BoolP("--no-output", "O", false, "Exclude outputs from query")
|
||||||
queryCmd.Flags().BoolP("--no-layout", "L", false, "Exclude outputs from query")
|
queryCmd.Flags().BoolP("--no-plan", "P", false, "Exclude outputs from query")
|
||||||
|
|
||||||
if err := viper.BindPFlags(queryCmd.Flags()); err != nil {
|
if err := viper.BindPFlags(queryCmd.Flags()); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
inputCmd "dagger.io/go/cmd/dagger/cmd/input"
|
inputCmd "dagger.io/go/cmd/dagger/cmd/input"
|
||||||
"dagger.io/go/cmd/dagger/cmd/layout"
|
|
||||||
"dagger.io/go/cmd/dagger/cmd/output"
|
"dagger.io/go/cmd/dagger/cmd/output"
|
||||||
|
"dagger.io/go/cmd/dagger/cmd/plan"
|
||||||
"dagger.io/go/cmd/dagger/logger"
|
"dagger.io/go/cmd/dagger/logger"
|
||||||
"github.com/moby/buildkit/util/appcontext"
|
"github.com/moby/buildkit/util/appcontext"
|
||||||
"github.com/opentracing/opentracing-go"
|
"github.com/opentracing/opentracing-go"
|
||||||
@ -36,7 +36,7 @@ func init() {
|
|||||||
historyCmd,
|
historyCmd,
|
||||||
loginCmd,
|
loginCmd,
|
||||||
logoutCmd,
|
logoutCmd,
|
||||||
layout.Cmd,
|
plan.Cmd,
|
||||||
inputCmd.Cmd,
|
inputCmd.Cmd,
|
||||||
output.Cmd,
|
output.Cmd,
|
||||||
)
|
)
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
|
|
||||||
var upCmd = &cobra.Command{
|
var upCmd = &cobra.Command{
|
||||||
Use: "up",
|
Use: "up",
|
||||||
Short: "Bring a deployment online with latest layout and inputs",
|
Short: "Bring a deployment online with latest plan and inputs",
|
||||||
Args: cobra.NoArgs,
|
Args: cobra.NoArgs,
|
||||||
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:
|
||||||
|
@ -132,7 +132,7 @@ func (c *Client) buildfn(ctx context.Context, deployment *Deployment, ch chan *b
|
|||||||
s := NewSolver(c.c, gw, ch)
|
s := NewSolver(c.c, gw, ch)
|
||||||
|
|
||||||
lg.Debug().Msg("loading configuration")
|
lg.Debug().Msg("loading configuration")
|
||||||
if err := deployment.LoadLayout(ctx, s); err != nil {
|
if err := deployment.LoadPlan(ctx, s); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@ type DeploymentState struct {
|
|||||||
// FIXME: store multiple names?
|
// FIXME: store multiple names?
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
// Cue module containing the deployment layout
|
// Cue module containing the deployment plan
|
||||||
// The input's top-level artifact is used as a module directory.
|
// The input's top-level artifact is used as a module directory.
|
||||||
LayoutSource Input `json:"layout,omitempty"`
|
PlanSource Input `json:"plan,omitempty"`
|
||||||
|
|
||||||
Inputs []inputKV `json:"inputs,omitempty"`
|
Inputs []inputKV `json:"inputs,omitempty"`
|
||||||
}
|
}
|
||||||
@ -64,8 +64,8 @@ func (s *DeploymentState) RemoveInputs(key string) error {
|
|||||||
type Deployment struct {
|
type Deployment struct {
|
||||||
st *DeploymentState
|
st *DeploymentState
|
||||||
|
|
||||||
// Layer 1: layout configuration
|
// Layer 1: plan configuration
|
||||||
layout *compiler.Value
|
plan *compiler.Value
|
||||||
|
|
||||||
// Layer 2: user inputs
|
// Layer 2: user inputs
|
||||||
input *compiler.Value
|
input *compiler.Value
|
||||||
@ -73,7 +73,7 @@ type Deployment struct {
|
|||||||
// Layer 3: computed values
|
// Layer 3: computed values
|
||||||
output *compiler.Value
|
output *compiler.Value
|
||||||
|
|
||||||
// All layers merged together: layout + input + output
|
// All layers merged together: plan + input + output
|
||||||
state *compiler.Value
|
state *compiler.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ func NewDeployment(st *DeploymentState) (*Deployment, error) {
|
|||||||
empty := compiler.EmptyStruct()
|
empty := compiler.EmptyStruct()
|
||||||
d := &Deployment{
|
d := &Deployment{
|
||||||
st: st,
|
st: st,
|
||||||
layout: empty,
|
plan: empty,
|
||||||
input: empty,
|
input: empty,
|
||||||
output: empty,
|
output: empty,
|
||||||
}
|
}
|
||||||
@ -116,12 +116,12 @@ func (d *Deployment) Name() string {
|
|||||||
return d.st.Name
|
return d.st.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Deployment) LayoutSource() Input {
|
func (d *Deployment) PlanSource() Input {
|
||||||
return d.st.LayoutSource
|
return d.st.PlanSource
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Deployment) Layout() *compiler.Value {
|
func (d *Deployment) Plan() *compiler.Value {
|
||||||
return d.layout
|
return d.plan
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Deployment) Input() *compiler.Value {
|
func (d *Deployment) Input() *compiler.Value {
|
||||||
@ -136,19 +136,19 @@ func (d *Deployment) State() *compiler.Value {
|
|||||||
return d.state
|
return d.state
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadLayout loads the layout
|
// LoadPlan loads the plan
|
||||||
func (d *Deployment) LoadLayout(ctx context.Context, s Solver) error {
|
func (d *Deployment) LoadPlan(ctx context.Context, s Solver) error {
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "deployment.LoadLayout")
|
span, ctx := opentracing.StartSpanFromContext(ctx, "deployment.LoadPlan")
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
|
|
||||||
layoutSource, err := d.st.LayoutSource.Compile()
|
planSource, err := d.st.PlanSource.Compile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
p := NewPipeline("[internal] source", s, nil)
|
p := NewPipeline("[internal] source", s, nil)
|
||||||
// execute updater script
|
// execute updater script
|
||||||
if err := p.Do(ctx, layoutSource); err != nil {
|
if err := p.Do(ctx, planSource); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,11 +157,11 @@ func (d *Deployment) LoadLayout(ctx context.Context, s Solver) error {
|
|||||||
stdlib.Path: stdlib.FS,
|
stdlib.Path: stdlib.FS,
|
||||||
"/": p.FS(),
|
"/": p.FS(),
|
||||||
}
|
}
|
||||||
layout, err := compiler.Build(sources)
|
plan, err := compiler.Build(sources)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("layout config: %w", err)
|
return fmt.Errorf("plan config: %w", err)
|
||||||
}
|
}
|
||||||
d.layout = layout
|
d.plan = plan
|
||||||
|
|
||||||
// Commit
|
// Commit
|
||||||
return d.mergeState()
|
return d.mergeState()
|
||||||
@ -202,12 +202,12 @@ func (d *Deployment) LocalDirs() map[string]string {
|
|||||||
localdirs(v.Get("#compute"))
|
localdirs(v.Get("#compute"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Scan the layout
|
// 2. Scan the plan
|
||||||
layout, err := d.st.LayoutSource.Compile()
|
plan, err := d.st.PlanSource.Compile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
localdirs(layout)
|
localdirs(plan)
|
||||||
return dirs
|
return dirs
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,7 +225,7 @@ func (d *Deployment) mergeState() error {
|
|||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
|
|
||||||
stateInst, err = stateInst.Fill(d.layout.Cue())
|
stateInst, err = stateInst.Fill(d.plan.Cue())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("merge base & input: %w", err)
|
return fmt.Errorf("merge base & input: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
func TestInputDir(t *testing.T) {
|
func TestInputDir(t *testing.T) {
|
||||||
st := &DeploymentState{
|
st := &DeploymentState{
|
||||||
LayoutSource: DirInput("/tmp/source", []string{}),
|
PlanSource: DirInput("/tmp/source", []string{}),
|
||||||
}
|
}
|
||||||
require.NoError(t, st.AddInput("www.source", DirInput(".", []string{})))
|
require.NoError(t, st.AddInput("www.source", DirInput(".", []string{})))
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ func (s *Store) indexDeployment(r *DeploymentState) {
|
|||||||
s.pathsByDeployment[r.ID] = append(s.pathsByDeployment[r.ID], i.Dir.Path)
|
s.pathsByDeployment[r.ID] = append(s.pathsByDeployment[r.ID], i.Dir.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
mapPath(r.LayoutSource)
|
mapPath(r.PlanSource)
|
||||||
for _, i := range r.Inputs {
|
for _, i := range r.Inputs {
|
||||||
mapPath(i.Value)
|
mapPath(i.Value)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user