config

package
v0.4.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2025 License: MPL-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ConfigVersion = 1
)

Variables

View Source
var (
	ErrProfileNotFound = errors.New("profile not found")
)
View Source
var LoginFunc = func(ctx context.Context) (*megaport.Client, error) {
	var accessKey, secretKey, env string

	manager, err := NewConfigManager()
	if err == nil {
		profile, _, err := manager.GetCurrentProfile()
		if err == nil {
			accessKey = profile.AccessKey
			secretKey = profile.SecretKey
			env = profile.Environment
		}
	}

	if accessKey == "" {
		accessKey = os.Getenv("MEGAPORT_ACCESS_KEY")
	}
	if secretKey == "" {
		secretKey = os.Getenv("MEGAPORT_SECRET_KEY")
	}
	if env == "" {
		env = os.Getenv("MEGAPORT_ENVIRONMENT")
	}

	if accessKey == "" {
		return nil, fmt.Errorf("megaport API access key not provided. Configure an active profile or set MEGAPORT_ACCESS_KEY environment variable")
	}
	if secretKey == "" {
		return nil, fmt.Errorf("megaport API secret key not provided. Configure an active profile or set MEGAPORT_SECRET_KEY environment variable")
	}

	if env == "" {
		env = "production"
	}

	var envOpt megaport.ClientOpt
	switch env {
	case "production":
		envOpt = megaport.WithEnvironment(megaport.EnvironmentProduction)
	case "staging":
		envOpt = megaport.WithEnvironment(megaport.EnvironmentStaging)
	case "development":
		envOpt = megaport.WithEnvironment(megaport.EnvironmentDevelopment)
	default:
		envOpt = megaport.WithEnvironment(megaport.EnvironmentProduction)
	}

	httpClient := &http.Client{}

	megaportClient, err := megaport.New(httpClient, megaport.WithCredentials(accessKey, secretKey), envOpt)
	if err != nil {
		return nil, err
	}

	spinner := output.PrintLoggingIn(false)
	_, err = megaportClient.Authorize(ctx)

	if err != nil {
		spinner.Stop()
		return nil, err
	} else {
		spinner.StopWithSuccess("Successfully logged in to Megaport")
	}

	return megaportClient, nil
}

LoginFunc logs into the Megaport API using the current profile or environment variables.

Functions

func AddCommandsTo

func AddCommandsTo(rootCmd *cobra.Command)

func ClearDefaults

func ClearDefaults(cmd *cobra.Command, args []string, noColor bool) error

func CreateProfile

func CreateProfile(cmd *cobra.Command, args []string, noColor bool) error

func DeleteProfile

func DeleteProfile(cmd *cobra.Command, args []string, noColor bool) error

func ExportConfig

func ExportConfig(cmd *cobra.Command, args []string, noColor bool) error

func GetConfigDir

func GetConfigDir() (string, error)

func GetConfigFilePath

func GetConfigFilePath() (string, error)

func GetDefault

func GetDefault(cmd *cobra.Command, args []string, noColor bool) error

func ImportConfig

func ImportConfig(cmd *cobra.Command, args []string, noColor bool) error

func ListProfiles

func ListProfiles(cmd *cobra.Command, args []string, noColor bool, outputFormat string) error

func Login

func Login(ctx context.Context) (*megaport.Client, error)

func RemoveDefault

func RemoveDefault(cmd *cobra.Command, args []string, noColor bool) error

func SetDefault

func SetDefault(cmd *cobra.Command, args []string, noColor bool) error

func UpdateProfile

func UpdateProfile(cmd *cobra.Command, args []string, noColor bool) error

func UseProfile

func UseProfile(cmd *cobra.Command, args []string, noColor bool) error

func ViewConfig

func ViewConfig(cmd *cobra.Command, args []string, noColor bool) error

Types

type ConfigFile

type ConfigFile struct {
	Version       int                    `json:"version"`
	ActiveProfile string                 `json:"active_profile"`
	Profiles      map[string]*Profile    `json:"profiles"`
	Defaults      map[string]interface{} `json:"defaults"`
}

func NewConfigFile

func NewConfigFile() *ConfigFile

type ConfigManager

type ConfigManager struct {
	// contains filtered or unexported fields
}

func NewConfigManager

func NewConfigManager() (*ConfigManager, error)

func (*ConfigManager) ClearDefaults

func (m *ConfigManager) ClearDefaults() error

func (*ConfigManager) CreateProfile

func (m *ConfigManager) CreateProfile(name, accessKey, secretKey, environment, description string) error

func (*ConfigManager) DeleteProfile

func (m *ConfigManager) DeleteProfile(name string) error

func (*ConfigManager) Export

func (m *ConfigManager) Export() (*ConfigFile, error)

func (*ConfigManager) GetCurrentProfile

func (m *ConfigManager) GetCurrentProfile() (*Profile, string, error)

func (*ConfigManager) GetDefault

func (m *ConfigManager) GetDefault(key string) (interface{}, bool)

func (*ConfigManager) ListProfiles

func (m *ConfigManager) ListProfiles() (map[string]*Profile, error)

func (*ConfigManager) RemoveDefault

func (m *ConfigManager) RemoveDefault(key string) error

func (*ConfigManager) Save

func (m *ConfigManager) Save() error

func (*ConfigManager) SetDefault

func (m *ConfigManager) SetDefault(key string, value interface{}) error

func (*ConfigManager) UpdateProfile

func (m *ConfigManager) UpdateProfile(name, accessKey, secretKey, environment string, updateDescription bool, description string) error

func (*ConfigManager) UseProfile

func (m *ConfigManager) UseProfile(name string) error

type Module

type Module struct{}

func NewModule

func NewModule() *Module

func (*Module) Name

func (m *Module) Name() string

func (*Module) RegisterCommands

func (m *Module) RegisterCommands(rootCmd *cobra.Command)

type Profile

type Profile struct {
	AccessKey   string `json:"access_key"`
	SecretKey   string `json:"secret_key"`
	Environment string `json:"environment"`
	Description string `json:"description,omitempty"`
}

type ProfileOutput

type ProfileOutput struct {
	output.Output `json:"-" header:"-"`
	Name          string `json:"name" header:"Name"`
	AccessKey     string `json:"access_key" header:"Access Key"`
	Environment   string `json:"environment" header:"Environment"`
	Description   string `json:"description" header:"Description"`
	IsActive      bool   `json:"is_active" header:"Active"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL