diff --git a/cmd/available.go b/cmd/available.go new file mode 100644 index 0000000..fdca1eb --- /dev/null +++ b/cmd/available.go @@ -0,0 +1,66 @@ +// Copyright © 2018 Microsoft Corporation and contributors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package cmd + +import ( + "encoding/json" + "os" + + "github.com/gobuffalo/buffalo/plugins" + "github.com/spf13/cobra" +) + +// availableCmd represents the available command +var availableCmd = &cobra.Command{ + Use: "available", + Short: "A brief description of your command", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + Run: func(cmd *cobra.Command, args []string) { + usable := plugins.Commands{ + {Name: azureCmd.Name(), BuffaloCommand: "root", Description: azureCmd.Short}, + {Name: eventgridCmd.Name(), BuffaloCommand: "generate", Description: eventgridCmd.Short}, + } + + err := json.NewEncoder(os.Stdout).Encode(usable) + if err != nil { + os.Exit(1) + } + }, +} + +func init() { + rootCmd.AddCommand(availableCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // availableCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // availableCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/cmd/azure.go b/cmd/azure.go new file mode 100644 index 0000000..4a1f0b9 --- /dev/null +++ b/cmd/azure.go @@ -0,0 +1,56 @@ +// Copyright © 2018 Microsoft Corporation and contributors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// azureCmd represents the azure command +var azureCmd = &cobra.Command{ + Use: "azure", + Short: "A brief description of your command", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("azure called") + }, +} + +func init() { + rootCmd.AddCommand(azureCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // azureCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // azureCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/cmd/deploy.go b/cmd/deploy.go new file mode 100644 index 0000000..5fda6a6 --- /dev/null +++ b/cmd/deploy.go @@ -0,0 +1,56 @@ +// Copyright © 2018 Microsoft Corporation and contributors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// deployCmd represents the deploy command +var deployCmd = &cobra.Command{ + Use: "deploy", + Short: "A brief description of your command", + Long: `A longer description that spans multiple lines and likely contains examples +and usage of using your command. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("deploy called") + }, +} + +func init() { + azureCmd.AddCommand(deployCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // deployCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // deployCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/cmd/eventgrid.go b/cmd/eventgrid.go new file mode 100644 index 0000000..7e0817c --- /dev/null +++ b/cmd/eventgrid.go @@ -0,0 +1,67 @@ +// Copyright © 2018 Microsoft Corporation and contributors +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +// eventgridCmd represents the eventgrid command +var eventgridCmd = &cobra.Command{ + Use: "eventgrid", + Short: "Generates new action(s) for handling Azure Event Grid events.", + Long: `More documenation can be found at: +https://azure.microsoft.com/en-us/services/event-grid/`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("eventgrid called") + }, +} + +// Flavor indicates which set of templates and HTTP Muxes to use +// to host your Event Grid application. +type Flavor string + +// All of the well-known HTTP Mux implementations that are either supported +// or plan to be supported by the eventgrid generator. +const ( + FlavorBuffalo Flavor = "buffalo" + FlavorStdlib Flavor = "stdlib" + FlavorGorilla Flavor = "gorilla" + FlavorEcho Flavor = "echo" +) + +func init() { + rootCmd.AddCommand(eventgridCmd) + + // Here you will define your flags and configuration settings. + + // Cobra supports Persistent Flags which will work for this command + // and all subcommands, e.g.: + // eventgridCmd.PersistentFlags().String("foo", "", "A help for foo") + + // Cobra supports local flags which will only run when this command + // is called directly, e.g.: + // eventgridCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + + eventgridCmd.PersistentFlags().StringP("flavor", "f", string(FlavorBuffalo), "The HTTP framework that should be used for receiving and dispatching Event Grid events.") +} diff --git a/cmd/root.go b/cmd/root.go index 4bc1ba9..394eef6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -34,13 +34,7 @@ var cfgFile string // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "buffalo-azure", - Short: "A brief description of your application", - Long: `A longer description that spans multiple lines and likely contains -examples and usage of using your application. For example: - -Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, + Short: "Tools for deploying Buffalo to Azure", // Uncomment the following line if your bare application // has an action associated with it: // Run: func(cmd *cobra.Command, args []string) { }, diff --git a/main.go b/main.go index 0eb5d8b..fc24f43 100644 --- a/main.go +++ b/main.go @@ -20,7 +20,7 @@ package main -import "github.com/Azure/buffalo-azure/buffalo-azure/cmd" +import "github.com/Azure/buffalo-azure/cmd" func main() { cmd.Execute() diff --git a/model/eventgrid_generator.go b/model/eventgrid_generator.go new file mode 100644 index 0000000..cdebba2 --- /dev/null +++ b/model/eventgrid_generator.go @@ -0,0 +1,10 @@ +package model + +import ( + "github.com/gobuffalo/makr" +) + +func New() (*makr.Generator, error) { + g := makr.New() + +}