From 8edba129281317e6728d4a9ded061968a3c53c25 Mon Sep 17 00:00:00 2001 From: German Lashevich Date: Sun, 11 Jun 2023 03:05:39 +0200 Subject: [PATCH] feat: add example environment configs --- .../mykso/dev/_apps/argocd/app-data.ytt.yaml | 5 ++++ .../assets/envs/mykso/dev/env-data.ytt.yaml | 8 ++++++ internal/myks/assets/envs_gitignore | 1 + internal/myks/globe.go | 27 ++++++++++++++++++- 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 internal/myks/assets/envs/mykso/dev/_apps/argocd/app-data.ytt.yaml create mode 100644 internal/myks/assets/envs/mykso/dev/env-data.ytt.yaml create mode 100644 internal/myks/assets/envs_gitignore diff --git a/internal/myks/assets/envs/mykso/dev/_apps/argocd/app-data.ytt.yaml b/internal/myks/assets/envs/mykso/dev/_apps/argocd/app-data.ytt.yaml new file mode 100644 index 00000000..8cd12376 --- /dev/null +++ b/internal/myks/assets/envs/mykso/dev/_apps/argocd/app-data.ytt.yaml @@ -0,0 +1,5 @@ +#@data/values-schema +--- +#@overlay/match-child-defaults missing_ok=True +application: + gcpServiceAccountEmail: argocd-repo-server@mykso-dev.iam.gserviceaccount.com diff --git a/internal/myks/assets/envs/mykso/dev/env-data.ytt.yaml b/internal/myks/assets/envs/mykso/dev/env-data.ytt.yaml new file mode 100644 index 00000000..c28b6f7d --- /dev/null +++ b/internal/myks/assets/envs/mykso/dev/env-data.ytt.yaml @@ -0,0 +1,8 @@ +#@data/values +--- +environment: + id: mykso-dev + applications: + - proto: argocd + - proto: argocd-apps + - proto: httpbingo diff --git a/internal/myks/assets/envs_gitignore b/internal/myks/assets/envs_gitignore new file mode 100644 index 00000000..c0c2ea92 --- /dev/null +++ b/internal/myks/assets/envs_gitignore @@ -0,0 +1 @@ +**/.myks/tmp/ diff --git a/internal/myks/globe.go b/internal/myks/globe.go index 1bdb3888..c76358e0 100644 --- a/internal/myks/globe.go +++ b/internal/myks/globe.go @@ -15,9 +15,15 @@ import ( //go:embed assets/env-data.ytt.yaml var dataSchema []byte -//go:embed assets/prototypes +//go:embed assets/envs_gitignore +var envsGitignore []byte + +//go:embed all:assets/prototypes var prototypesFs embed.FS +//go:embed all:assets/envs +var environmentsFs embed.FS + // Define the main structure type Globe struct { /// Globe configuration @@ -149,6 +155,11 @@ func (g *Globe) Bootstrap() error { return err } + log.Info().Msg("Creating sample environment") + if err := g.createSampleEnvironment(); err != nil { + return err + } + return nil } @@ -157,11 +168,13 @@ func (g *Globe) createBaseFileStructure() error { protoDir := filepath.Join(g.RootDir, g.PrototypesDir) renderedDir := filepath.Join(g.RootDir, g.RenderedDir) dataSchemaFile := filepath.Join(envDir, g.EnvironmentDataFileName) + envsGitignoreFile := filepath.Join(envDir, ".gitignore") log.Debug().Str("environments directory", envDir).Msg("") log.Debug().Str("prototypes directory", protoDir).Msg("") log.Debug().Str("rendered directory", renderedDir).Msg("") log.Debug().Str("data schema file", dataSchemaFile).Msg("") + log.Debug().Str("environments .gitignore file", envsGitignoreFile).Msg("") // TODO: interactively ask for confirmation and overwrite without checking notCleanErr := fmt.Errorf("Target directory is not clean, aborting") @@ -194,6 +207,13 @@ func (g *Globe) createBaseFileStructure() error { return err } + if _, err := os.Stat(envsGitignoreFile); err == nil { + return notCleanErr + } + if err := os.WriteFile(envsGitignoreFile, envsGitignore, 0o644); err != nil { + return err + } + return nil } @@ -202,6 +222,11 @@ func (g *Globe) createSamplePrototypes() error { return copyFileSystemToPath(prototypesFs, "assets/prototypes", protoDir) } +func (g *Globe) createSampleEnvironment() error { + envDir := filepath.Join(g.RootDir, g.EnvironmentBaseDir) + return copyFileSystemToPath(environmentsFs, "assets/envs", envDir) +} + func (g *Globe) collectEnvironments(searchPaths []string) { if len(searchPaths) == 0 { searchPaths = []string{g.EnvironmentBaseDir}