Skip to content

Commit

Permalink
gitflow ux
Browse files Browse the repository at this point in the history
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
  • Loading branch information
aluzzardi committed May 25, 2021
1 parent 52a1a6b commit b77d1a1
Show file tree
Hide file tree
Showing 37 changed files with 494 additions and 1,042 deletions.
44 changes: 0 additions & 44 deletions .dagger/env/dev-stdlib/adhoc.cue

This file was deleted.

69 changes: 0 additions & 69 deletions .dagger/env/dev/main.cue

This file was deleted.

1 change: 0 additions & 1 deletion .dagger/env/hello-world

This file was deleted.

21 changes: 0 additions & 21 deletions .dagger/env/sandbox/sandbox.cue

This file was deleted.

70 changes: 42 additions & 28 deletions cmd/dagger/cmd/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,79 @@ package common

import (
"context"
"errors"
"os"

"dagger.io/go/dagger"
"dagger.io/go/dagger/state"
"github.com/rs/zerolog/log"
"github.com/spf13/viper"
)

func GetCurrentEnvironmentState(ctx context.Context, store *dagger.Store) *dagger.EnvironmentState {
func GetCurrentEnvironmentState(ctx context.Context) *state.State {
lg := log.Ctx(ctx)

environmentName := viper.GetString("environment")
if environmentName != "" {
st, err := store.LookupEnvironmentByName(ctx, environmentName)
// 1) If no environment name has been given, look for the current environment
environment := viper.GetString("environment")
if environment == "" {
st, err := state.Current(ctx)
if err != nil {
lg.
Fatal().
Err(err).
Str("environmentName", environmentName).
Msg("failed to lookup environment by name")
Msg("failed to load environment")
}
return st
}

wd, err := os.Getwd()
if err != nil {
lg.Fatal().Err(err).Msg("cannot get current working directory")
// 2) Check if it's an environment path (can be opened directly)
st, err := state.Open(ctx, environment)
if err == nil {
return st
}
st, err := store.LookupEnvironmentByPath(ctx, wd)
if err != nil {
if !errors.Is(err, os.ErrNotExist) {
lg.
Fatal().
Err(err).
Str("environmentPath", wd).
Msg("failed to lookup environment by path")
Str("environmentPath", environment).
Msg("failed to load environment")
}
if len(st) == 0 {

// At this point, it must be an environment name
workspace := viper.GetString("workspace")
if workspace == "" {
workspace, err = state.CurrentWorkspace(ctx)
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to determine current workspace")
}
}

environments, err := state.List(ctx, workspace)
if err != nil {
lg.
Fatal().
Err(err).
Str("environmentPath", wd).
Msg("no environments match the current directory")
Msg("failed to list environments")
}
if len(st) > 1 {
environments := []string{}
for _, s := range st {
environments = append(environments, s.Name)
for _, e := range environments {
if e.Name == environment {
return e
}
lg.
Fatal().
Err(err).
Str("environmentPath", wd).
Strs("environments", environments).
Msg("multiple environments match the current directory, select one with `--environment`")
}
return st[0]

lg.
Fatal().
Str("environment", environment).
Msg("environment not found")

return nil
}

// Re-compute an environment (equivalent to `dagger up`).
func EnvironmentUp(ctx context.Context, state *dagger.EnvironmentState, noCache bool) *dagger.Environment {
func EnvironmentUp(ctx context.Context, state *state.State, noCache bool) *dagger.Environment {
lg := log.Ctx(ctx)

c, err := dagger.NewClient(ctx, "", noCache)
Expand Down
22 changes: 10 additions & 12 deletions cmd/dagger/cmd/compute.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@ import (
"cuelang.org/go/cue"
"dagger.io/go/cmd/dagger/cmd/common"
"dagger.io/go/cmd/dagger/logger"
"dagger.io/go/dagger"
"dagger.io/go/dagger/compiler"
"dagger.io/go/dagger/state"
"go.mozilla.org/sops/v3"
"go.mozilla.org/sops/v3/decrypt"

"github.com/google/uuid"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
Expand All @@ -36,16 +35,15 @@ var computeCmd = &cobra.Command{
lg := logger.New()
ctx := lg.WithContext(cmd.Context())

st := &dagger.EnvironmentState{
ID: uuid.New().String(),
Name: "FIXME",
PlanSource: dagger.DirInput(args[0], []string{"*.cue", "cue.mod"}),
st := &state.State{
Name: "FIXME",
Path: args[0],
}

for _, input := range viper.GetStringSlice("input-string") {
parts := strings.SplitN(input, "=", 2)
k, v := parts[0], parts[1]
err := st.SetInput(k, dagger.TextInput(v))
err := st.SetInput(k, state.TextInput(v))
if err != nil {
lg.
Fatal().
Expand All @@ -58,7 +56,7 @@ var computeCmd = &cobra.Command{
for _, input := range viper.GetStringSlice("input-dir") {
parts := strings.SplitN(input, "=", 2)
k, v := parts[0], parts[1]
err := st.SetInput(k, dagger.DirInput(v, []string{}))
err := st.SetInput(k, state.DirInput(v, []string{}))
if err != nil {
lg.
Fatal().
Expand All @@ -71,7 +69,7 @@ var computeCmd = &cobra.Command{
for _, input := range viper.GetStringSlice("input-git") {
parts := strings.SplitN(input, "=", 2)
k, v := parts[0], parts[1]
err := st.SetInput(k, dagger.GitInput(v, "", ""))
err := st.SetInput(k, state.GitInput(v, "", ""))
if err != nil {
lg.
Fatal().
Expand Down Expand Up @@ -102,7 +100,7 @@ var computeCmd = &cobra.Command{
lg.Fatal().Msg("invalid json")
}

err = st.SetInput("", dagger.JSONInput(string(content)))
err = st.SetInput("", state.JSONInput(string(content)))
if err != nil {
lg.Fatal().Err(err).Msg("failed to add input")
}
Expand All @@ -125,7 +123,7 @@ var computeCmd = &cobra.Command{
content = plaintext
}

err = st.SetInput("", dagger.YAMLInput(string(content)))
err = st.SetInput("", state.YAMLInput(string(content)))
if err != nil {
lg.Fatal().Err(err).Msg("failed to add input")
}
Expand All @@ -143,7 +141,7 @@ var computeCmd = &cobra.Command{
}

if len(content) > 0 {
err = st.SetInput(k, dagger.FileInput(v))
err = st.SetInput(k, state.FileInput(v))
if err != nil {
lg.Fatal().Err(err).Msg("failed to set input string")
}
Expand Down
66 changes: 66 additions & 0 deletions cmd/dagger/cmd/init.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package cmd

import (
"os"
"path/filepath"

"dagger.io/go/cmd/dagger/logger"
"dagger.io/go/dagger/state"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)

var initCmd = &cobra.Command{
Use: "init",
Args: cobra.MaximumNArgs(1),
PreRun: func(cmd *cobra.Command, args []string) {
// Fix Viper bug for duplicate flags:
// https://github.com/spf13/viper/issues/233
if err := viper.BindPFlags(cmd.Flags()); err != nil {
panic(err)
}
},
Run: func(cmd *cobra.Command, args []string) {
lg := logger.New()
ctx := lg.WithContext(cmd.Context())

dir := viper.GetString("environment")
if dir == "" {
cwd, err := os.Getwd()
if err != nil {
lg.
Fatal().
Err(err).
Msg("failed to get current working dir")
}
dir = cwd
}

var name string
if len(args) > 0 {
name = args[0]
} else {
name = getNewEnvironmentName(dir)
}

_, err := state.Init(ctx, dir, name)
if err != nil {
lg.Fatal().Err(err).Msg("failed to initialize")
}
},
}

func getNewEnvironmentName(dir string) string {
dirName := filepath.Base(dir)
if dirName == "/" {
return "root"
}

return dirName
}

func init() {
if err := viper.BindPFlags(initCmd.Flags()); err != nil {
panic(err)
}
}

0 comments on commit b77d1a1

Please sign in to comment.