diff --git a/Gopkg.lock b/Gopkg.lock new file mode 100644 index 0000000000..4ffba03485 --- /dev/null +++ b/Gopkg.lock @@ -0,0 +1,159 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + name = "github.com/davecgh/go-spew" + packages = ["spew"] + revision = "346938d642f2ec3594ed81d874461961cd0faa76" + version = "v1.1.0" + +[[projects]] + name = "github.com/ghodss/yaml" + packages = ["."] + revision = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7" + version = "v1.0.0" + +[[projects]] + name = "github.com/gogo/protobuf" + packages = ["proto","sortkeys"] + revision = "1adfc126b41513cc696b209667c8656ea7aac67c" + version = "v1.0.0" + +[[projects]] + branch = "master" + name = "github.com/golang/glog" + packages = ["."] + revision = "23def4e6c14b4da8ac2ed8007337bc5eb5007998" + +[[projects]] + branch = "master" + name = "github.com/google/btree" + packages = ["."] + revision = "e89373fe6b4a7413d7acd6da1725b83ef713e6e4" + +[[projects]] + branch = "master" + name = "github.com/google/gofuzz" + packages = ["."] + revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" + +[[projects]] + branch = "master" + name = "github.com/gregjones/httpcache" + packages = [".","diskcache"] + revision = "2bcd89a1743fd4b373f7370ce8ddc14dfbd18229" + +[[projects]] + branch = "master" + name = "github.com/hashicorp/golang-lru" + packages = [".","simplelru"] + revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3" + +[[projects]] + name = "github.com/inconshreveable/mousetrap" + packages = ["."] + revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" + version = "v1.0" + +[[projects]] + name = "github.com/json-iterator/go" + packages = ["."] + revision = "28452fcdec4e44348d2af0d91d1e9e38da3a9e0a" + version = "1.0.5" + +[[projects]] + name = "github.com/juju/ratelimit" + packages = ["."] + revision = "59fac5042749a5afb9af70e813da1dd5474f0167" + version = "1.0.1" + +[[projects]] + branch = "master" + name = "github.com/petar/GoLLRB" + packages = ["llrb"] + revision = "53be0d36a84c2a886ca057d34b6aa4468df9ccb4" + +[[projects]] + name = "github.com/peterbourgon/diskv" + packages = ["."] + revision = "5f041e8faa004a95c88a202771f4cc3e991971e6" + version = "v2.0.1" + +[[projects]] + name = "github.com/sirupsen/logrus" + packages = ["."] + revision = "d682213848ed68c0a260ca37d6dd5ace8423f5ba" + version = "v1.0.4" + +[[projects]] + name = "github.com/spf13/cobra" + packages = ["."] + revision = "7b2c5ac9fc04fc5efafb60700713d4fa609b777b" + version = "v0.0.1" + +[[projects]] + name = "github.com/spf13/pflag" + packages = ["."] + revision = "e57e3eeb33f795204c1ca35f56c44f83227c6e66" + version = "v1.0.0" + +[[projects]] + branch = "master" + name = "golang.org/x/crypto" + packages = ["ssh/terminal"] + revision = "650f4a345ab4e5b245a3034b110ebc7299e68186" + +[[projects]] + branch = "master" + name = "golang.org/x/net" + packages = ["context","http2","http2/hpack","idna","lex/httplex"] + revision = "dc948dff8834a7fe1ca525f8d04e261c2b56e70d" + +[[projects]] + branch = "master" + name = "golang.org/x/sys" + packages = ["unix","windows"] + revision = "37707fdb30a5b38865cfb95e5aab41707daec7fd" + +[[projects]] + branch = "master" + name = "golang.org/x/text" + packages = ["collate","collate/build","internal/colltab","internal/gen","internal/tag","internal/triegen","internal/ucd","language","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"] + revision = "4e4a3210bb54bb31f6ab2cdca2edcc0b50c420c1" + +[[projects]] + name = "gopkg.in/inf.v0" + packages = ["."] + revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + version = "v0.9.0" + +[[projects]] + branch = "v2" + name = "gopkg.in/yaml.v2" + packages = ["."] + revision = "d670f9405373e636a5a2765eea47fac0c9bc91a4" + +[[projects]] + branch = "master" + name = "k8s.io/api" + packages = ["core/v1"] + revision = "0d0b2f481328d8bae556061a08a02175054059f4" + +[[projects]] + branch = "master" + name = "k8s.io/apimachinery" + packages = ["pkg/api/errors","pkg/api/meta","pkg/api/resource","pkg/apis/meta/internalversion","pkg/apis/meta/v1","pkg/apis/meta/v1/unstructured","pkg/apis/meta/v1beta1","pkg/conversion","pkg/conversion/queryparams","pkg/fields","pkg/labels","pkg/runtime","pkg/runtime/schema","pkg/runtime/serializer","pkg/runtime/serializer/json","pkg/runtime/serializer/protobuf","pkg/runtime/serializer/recognizer","pkg/runtime/serializer/streaming","pkg/runtime/serializer/versioning","pkg/selection","pkg/types","pkg/util/cache","pkg/util/clock","pkg/util/diff","pkg/util/errors","pkg/util/framer","pkg/util/intstr","pkg/util/json","pkg/util/net","pkg/util/runtime","pkg/util/sets","pkg/util/validation","pkg/util/validation/field","pkg/util/wait","pkg/util/yaml","pkg/version","pkg/watch","third_party/forked/golang/reflect"] + revision = "da3b134bab57ebf23dedfec7e0004614dd4b5a24" + +[[projects]] + name = "k8s.io/client-go" + packages = ["pkg/version","rest","rest/watch","tools/cache","tools/clientcmd/api","tools/metrics","tools/pager","transport","util/buffer","util/cert","util/flowcontrol","util/integer","util/workqueue"] + revision = "78700dec6369ba22221b72770783300f143df150" + version = "v6.0.0" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + inputs-digest = "ea8e5405c04eb9033cac9e3b2c12053ea5a964d910643aef3ca430ab915c2231" + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml new file mode 100644 index 0000000000..9317d28bf1 --- /dev/null +++ b/Gopkg.toml @@ -0,0 +1,15 @@ +[[constraint]] + name = "github.com/sirupsen/logrus" + version = "1.0.4" + +[[constraint]] + name = "github.com/spf13/cobra" + version = "0.0.1" + +[[constraint]] + branch = "master" + name = "k8s.io/apimachinery" + +[[constraint]] + name = "k8s.io/client-go" + version = "6.0.0" diff --git a/cmd/operator-sdk/main.go b/cmd/operator-sdk/main.go deleted file mode 100644 index 924b83c19d..0000000000 --- a/cmd/operator-sdk/main.go +++ /dev/null @@ -1,13 +0,0 @@ -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/commands/operator-sdk/cmd/error.go b/commands/operator-sdk/cmd/error.go new file mode 100644 index 0000000000..d648ccacd7 --- /dev/null +++ b/commands/operator-sdk/cmd/error.go @@ -0,0 +1,17 @@ +package cmd + +import ( + "fmt" + "os" +) + +const ( + // ExitBadArgs is the exit error code for bad arguments. + ExitBadArgs = 128 +) + +// ExitWithError prints out an error code and an error string to stderr. +func ExitWithError(code int, err error) { + fmt.Fprintln(os.Stderr, "Error:", err) + os.Exit(code) +} diff --git a/commands/operator-sdk/cmd/new.go b/commands/operator-sdk/cmd/new.go new file mode 100644 index 0000000000..f90a291d13 --- /dev/null +++ b/commands/operator-sdk/cmd/new.go @@ -0,0 +1,50 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// newCmd represents the new command +var newCmd = &cobra.Command{ + Use: "new [options] ", + Short: "Creates a new operator application", + Long: `The operator-sdk new command creates a new operator application and + generates a default directory layout based on the input . + + If none of options are specified, the operator-sdk defaults + Kubernetes api group to .example.com/v1 + and Kubernetes resource kind to Service. + + For example, + $ mkdir $GOPATH/src/github.com/example.com/play + $ cd $GOPATH/src/github.com/example.com/play + $ operator-sdk new play + generates a skeletal play application in $GOPATH/src/github.com/example.com/play. +`, + Run: newFunc, +} + +var ( + apiGroup string + kind string +) + +func init() { + RootCmd.AddCommand(newCmd) + newCmd.Flags().StringVar(&apiGroup, "api-group", "", "Kubernetes API Group. e.g play.example.com/v1") + newCmd.Flags().StringVar(&kind, "kind", "", "Kubernetes Resource Kind. e.g PlayService") +} + +func newFunc(cmd *cobra.Command, args []string) { + if len(args) != 1 { + ExitWithError(ExitBadArgs, fmt.Errorf("new command needs 1 arguments.")) + } + parse(args) + // TODO: add generation logic. +} + +func parse(args []string) { + // TODO: parse args. +} diff --git a/commands/operator-sdk/cmd/root.go b/commands/operator-sdk/cmd/root.go new file mode 100644 index 0000000000..f9c8c22f7b --- /dev/null +++ b/commands/operator-sdk/cmd/root.go @@ -0,0 +1,9 @@ +package cmd + +import "github.com/spf13/cobra" + +// This represents the base command when called without any subcommands +var RootCmd = &cobra.Command{ + Use: "operator-sdk", + Short: "A sdk for building operator with ease", +} diff --git a/commands/operator-sdk/main.go b/commands/operator-sdk/main.go new file mode 100644 index 0000000000..42dfcfb37c --- /dev/null +++ b/commands/operator-sdk/main.go @@ -0,0 +1,15 @@ +package main + +import ( + "fmt" + "os" + + "github.com/coreos/operator-sdk/commands/operator-sdk/cmd" +) + +func main() { + if err := cmd.RootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(-1) + } +}