From 922df190f0aca37c709e78368090de693da6f9d1 Mon Sep 17 00:00:00 2001 From: Hongchao Deng Date: Wed, 7 Feb 2018 13:30:46 -0800 Subject: [PATCH] *: render directory layout --- .gitignore | 9 ++++++ cmd/operator-sdk/main.go | 13 ++++++++ pkg/generator/generator.go | 61 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 cmd/operator-sdk/main.go create mode 100644 pkg/generator/generator.go diff --git a/.gitignore b/.gitignore index a1338d68517..8ba78ab3c11 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,12 @@ # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 .glide/ + +# Folders +vendor +_obj +_test +_output +.kube +.vscode +.idea diff --git a/cmd/operator-sdk/main.go b/cmd/operator-sdk/main.go new file mode 100644 index 00000000000..924b83c19de --- /dev/null +++ b/cmd/operator-sdk/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "github.com/coreos/operator-sdk/pkg/generator" +) + +func main() { + g := &generator.Generator{} + err := g.Render() + if err != nil { + panic(err) + } +} diff --git a/pkg/generator/generator.go b/pkg/generator/generator.go new file mode 100644 index 00000000000..58ebcec46fb --- /dev/null +++ b/pkg/generator/generator.go @@ -0,0 +1,61 @@ +package generator + +import ( + "errors" + "os" + "path/filepath" + "strings" +) + +const defaultFileMode = 0750 + +type Generator struct { +} + +func (g *Generator) Render() error { + gopath, ok := os.LookupEnv("GOPATH") + if !ok { + return errors.New("GOPATH must be set") + } + projDir, ok := os.LookupEnv("PROJECT") // github.com/coreos/play + if !ok { + return errors.New("PROJECT must be set") + } + apiGroup, ok := os.LookupEnv("APIGROUP") // play.coreos.com/v1alpha1 + if !ok { + return errors.New("PROJECT must be set") + } + + projDir = filepath.Join(gopath, "src", projDir) + err := os.MkdirAll(projDir, defaultFileMode) + if err != nil { + return err + } + + programName := func() string { + splits := strings.Split(projDir, "/") + return splits[len(splits)-1] + }() + err = os.MkdirAll(filepath.Join(projDir, "cmd", programName), defaultFileMode) + if err != nil { + return err + } + + // pkg/apis/ + groupName, apiVersion := func() (string, string) { + splits := strings.Split(apiGroup, "/") + return strings.Split(splits[0], ".")[0], splits[1] + }() + err = os.MkdirAll(filepath.Join(projDir, "pkg/apis", groupName, apiVersion), defaultFileMode) + if err != nil { + return err + } + + // pkg/controller/ + err = os.MkdirAll(filepath.Join(projDir, "pkg/controller"), defaultFileMode) + if err != nil { + return err + } + + return nil +}