cmd/root.go (114 lines of code) (raw):

// Copyright 2018 The Terraformer Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package cmd import ( "github.com/GoogleCloudPlatform/terraformer/terraformutils" "github.com/spf13/cobra" ) func NewCmdRoot() *cobra.Command { cmd := &cobra.Command{ SilenceUsage: true, SilenceErrors: true, Version: version, } cmd.AddCommand(newImportCmd()) cmd.AddCommand(newPlanCmd()) cmd.AddCommand(versionCmd) return cmd } func Execute() error { cmd := NewCmdRoot() return cmd.Execute() } func providerImporterSubcommands() []func(options ImportOptions) *cobra.Command { return []func(options ImportOptions) *cobra.Command{ // Major Cloud newCmdGoogleImporter, newCmdAwsImporter, newCmdAzureImporter, newCmdAliCloudImporter, newCmdIbmImporter, // Cloud newCmdDigitalOceanImporter, newCmdEquinixMetalImporter, newCmdHerokuImporter, newCmdLaunchDarklyImporter, newCmdLinodeImporter, newCmdOpenStackImporter, newCmdTencentCloudImporter, newCmdVultrImporter, newCmdYandexImporter, newCmdIonosCloudImporter, // Infrastructure Software newCmdKubernetesImporter, newCmdOctopusDeployImporter, newCmdRabbitMQImporter, // Network newCmdMyrasecImporter, newCmdCloudflareImporter, newCmdFastlyImporter, newCmdNs1Importer, newCmdPanosImporter, // VCS newCmdAzureDevOpsImporter, newCmdAzureADImporter, newCmdGithubImporter, newCmdGitLabImporter, // Monitoring & System Management newCmdDatadogImporter, newCmdNewRelicImporter, newCmdMackerelImporter, newCmdGrafanaImporter, newCmdPagerDutyImporter, newCmdOpsgenieImporter, newCmdHoneycombioImporter, newCmdOpalImporter, // Community newCmdKeycloakImporter, newCmdLogzioImporter, newCmdCommercetoolsImporter, newCmdMikrotikImporter, newCmdXenorchestraImporter, newCmdGmailfilterImporter, newCmdVaultImporter, newCmdOktaImporter, newCmdAuth0Importer, } } func providerGenerators() map[string]func() terraformutils.ProviderGenerator { list := make(map[string]func() terraformutils.ProviderGenerator) for _, providerGen := range []func() terraformutils.ProviderGenerator{ // Major Cloud newGoogleProvider, newAWSProvider, newAzureProvider, newAliCloudProvider, newIbmProvider, // Cloud newDigitalOceanProvider, newEquinixMetalProvider, newFastlyProvider, newHerokuProvider, newLaunchDarklyProvider, newLinodeProvider, newNs1Provider, newOpenStackProvider, newTencentCloudProvider, newVultrProvider, // Infrastructure Software newKubernetesProvider, newOctopusDeployProvider, newRabbitMQProvider, // Network newMyrasecProvider, newCloudflareProvider, // VCS newAzureDevOpsProvider, newAzureADProvider, newGitHubProvider, newGitLabProvider, // Monitoring & System Management newDataDogProvider, newNewRelicProvider, newPagerDutyProvider, newHoneycombioProvider, newOpalProvider, // Community newKeycloakProvider, newLogzioProvider, newCommercetoolsProvider, newMikrotikProvider, newXenorchestraProvider, newGmailfilterProvider, newVaultProvider, newOktaProvider, newAuth0Provider, } { list[providerGen().GetName()] = providerGen } return list }