Skip to content

Common utilities with sub-packages that are shared between products and components

License

Notifications You must be signed in to change notification settings

gladiusio/gladius-common

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gladius Common Utilities

Common utilities with sub-packages that are shared between products and components

API

Blockchain

Database (db)

Handlers

Manager

Requests

Routing

Utilities

General collection of useful functions that are shared between Gladius Packages and Projects.

Config

Gladius Projects use a common configuration pattern. Below are instructions to setup a project using this pattern.

  • Dependencies

The only current dependency we use is viper. We use the default singleton class to manage state of our projects.

  • Setup
// Dependencies
import (
	"github.com/spf13/viper"
)

// Setup config environment
func initializeConfiguration() {
	// Grab the Gladius Base Directory
	base, err := utils.GetGladiusBase()
	if err != nil {
		log.Warn().Err(err).Msg("Error retrieving base directory")
	}

	// Add config file name and searching
	viper.SetConfigName("gladius-config-example") // looks for gladius-config-example.toml in utils.GetGladiusBase()
	viper.AddConfigPath(base)

	// Setup env variable handling
	viper.SetEnvPrefix("ENV-PREFIX")
	r := strings.NewReplacer(".", "_")
	viper.SetEnvKeyReplacer(r)
	viper.AutomaticEnv()

	// Load config
	err = viper.ReadInConfig()
	if err != nil {
		log.Warn().Err(err).Msg("Error reading config file, it may not exist or is corrupted. Using defaults.")
	}

	// Build our config options
	buildOptions(base)
}

// Set up defaults using helper functions
func buildOptions(base string) {
	// Example option
	ConfigOption("Example.SubOption", "Default Value")
	
	// More can go here

	// Add the GladiusBase to access Gladius Folder
	ConfigOption("GladiusBase", base)
}

// Helper function for above
func configOption(key string, defaultValue interface{}) string {
	viper.SetDefault(key, defaultValue)
	return key
}

About

Common utilities with sub-packages that are shared between products and components

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages