github.com/GoogleCloudPlatform/terraformer@v0.8.18/cmd/root.go (about) 1 // Copyright 2018 The Terraformer Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package cmd 16 17 import ( 18 "github.com/GoogleCloudPlatform/terraformer/terraformutils" 19 "github.com/spf13/cobra" 20 ) 21 22 func NewCmdRoot() *cobra.Command { 23 cmd := &cobra.Command{ 24 SilenceUsage: true, 25 SilenceErrors: true, 26 Version: version, 27 } 28 cmd.AddCommand(newImportCmd()) 29 cmd.AddCommand(newPlanCmd()) 30 cmd.AddCommand(versionCmd) 31 return cmd 32 } 33 34 func Execute() error { 35 cmd := NewCmdRoot() 36 return cmd.Execute() 37 } 38 39 func providerImporterSubcommands() []func(options ImportOptions) *cobra.Command { 40 return []func(options ImportOptions) *cobra.Command{ 41 // Major Cloud 42 newCmdGoogleImporter, 43 newCmdAwsImporter, 44 newCmdAzureImporter, 45 newCmdAliCloudImporter, 46 newCmdIbmImporter, 47 // Cloud 48 newCmdDigitalOceanImporter, 49 newCmdEquinixMetalImporter, 50 newCmdHerokuImporter, 51 newCmdLinodeImporter, 52 newCmdOpenStackImporter, 53 newCmdTencentCloudImporter, 54 newCmdVultrImporter, 55 newCmdYandexImporter, 56 // Infrastructure Software 57 newCmdKubernetesImporter, 58 newCmdOctopusDeployImporter, 59 newCmdRabbitMQImporter, 60 // Network 61 newCmdCloudflareImporter, 62 newCmdFastlyImporter, 63 newCmdNs1Importer, 64 newCmdPanosImporter, 65 // VCS 66 newCmdAzureDevOpsImporter, 67 newCmdGithubImporter, 68 newCmdGitLabImporter, 69 // Monitoring & System Management 70 newCmdDatadogImporter, 71 newCmdNewRelicImporter, 72 newCmdGrafanaImporter, 73 newCmdPagerDutyImporter, 74 // Community 75 newCmdKeycloakImporter, 76 newCmdLogzioImporter, 77 newCmdCommercetoolsImporter, 78 newCmdMikrotikImporter, 79 newCmdXenorchestraImporter, 80 newCmdGmailfilterImporter, 81 newCmdVaultImporter, 82 newCmdOktaImporter, 83 } 84 } 85 86 func providerGenerators() map[string]func() terraformutils.ProviderGenerator { 87 list := make(map[string]func() terraformutils.ProviderGenerator) 88 for _, providerGen := range []func() terraformutils.ProviderGenerator{ 89 // Major Cloud 90 newGoogleProvider, 91 newAWSProvider, 92 newAzureProvider, 93 newAliCloudProvider, 94 newIbmProvider, 95 // Cloud 96 newDigitalOceanProvider, 97 newEquinixMetalProvider, 98 newFastlyProvider, 99 newHerokuProvider, 100 newLinodeProvider, 101 newNs1Provider, 102 newOpenStackProvider, 103 newTencentCloudProvider, 104 newVultrProvider, 105 // Infrastructure Software 106 newKubernetesProvider, 107 newOctopusDeployProvider, 108 newRabbitMQProvider, 109 // Network 110 newCloudflareProvider, 111 // VCS 112 newAzureDevOpsProvider, 113 newGitHubProvider, 114 newGitLabProvider, 115 // Monitoring & System Management 116 newDataDogProvider, 117 newNewRelicProvider, 118 newPagerDutyProvider, 119 // Community 120 newKeycloakProvider, 121 newLogzioProvider, 122 newCommercetoolsProvider, 123 newMikrotikProvider, 124 newXenorchestraProvider, 125 newGmailfilterProvider, 126 newVaultProvider, 127 newOktaProvider, 128 } { 129 list[providerGen().GetName()] = providerGen 130 } 131 return list 132 }