mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/efekarakus/termcolor"
 | 
						|
	"github.com/juanfont/headscale/cmd/headscale/cli"
 | 
						|
	"github.com/pkg/profile"
 | 
						|
	"github.com/rs/zerolog"
 | 
						|
	"github.com/rs/zerolog/log"
 | 
						|
)
 | 
						|
 | 
						|
func main() {
 | 
						|
	if _, enableProfile := os.LookupEnv("HEADSCALE_PROFILING_ENABLED"); enableProfile {
 | 
						|
		if profilePath, ok := os.LookupEnv("HEADSCALE_PROFILING_PATH"); ok {
 | 
						|
			err := os.MkdirAll(profilePath, os.ModePerm)
 | 
						|
			if err != nil {
 | 
						|
				log.Fatal().Err(err).Msg("failed to create profiling directory")
 | 
						|
			}
 | 
						|
 | 
						|
			defer profile.Start(profile.ProfilePath(profilePath)).Stop()
 | 
						|
		} else {
 | 
						|
			defer profile.Start().Stop()
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	var colors bool
 | 
						|
	switch l := termcolor.SupportLevel(os.Stderr); l {
 | 
						|
	case termcolor.Level16M:
 | 
						|
		colors = true
 | 
						|
	case termcolor.Level256:
 | 
						|
		colors = true
 | 
						|
	case termcolor.LevelBasic:
 | 
						|
		colors = true
 | 
						|
	case termcolor.LevelNone:
 | 
						|
		colors = false
 | 
						|
	default:
 | 
						|
		// no color, return text as is.
 | 
						|
		colors = false
 | 
						|
	}
 | 
						|
 | 
						|
	// Adhere to no-color.org manifesto of allowing users to
 | 
						|
	// turn off color in cli/services
 | 
						|
	if _, noColorIsSet := os.LookupEnv("NO_COLOR"); noColorIsSet {
 | 
						|
		colors = false
 | 
						|
	}
 | 
						|
 | 
						|
	zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
 | 
						|
	log.Logger = log.Output(zerolog.ConsoleWriter{
 | 
						|
		Out:        os.Stdout,
 | 
						|
		TimeFormat: time.RFC3339,
 | 
						|
		NoColor:    !colors,
 | 
						|
	})
 | 
						|
 | 
						|
	cli.Execute()
 | 
						|
}
 |