mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/creachadair/command"
 | |
| 	"github.com/creachadair/flax"
 | |
| 	"github.com/juanfont/headscale/hscontrol/mapper"
 | |
| 	"github.com/juanfont/headscale/integration/integrationutil"
 | |
| )
 | |
| 
 | |
| type MapConfig struct {
 | |
| 	Directory string `flag:"directory,Directory to read map responses from"`
 | |
| }
 | |
| 
 | |
| var mapConfig MapConfig
 | |
| 
 | |
| func main() {
 | |
| 	root := command.C{
 | |
| 		Name: "mapresponses",
 | |
| 		Help: "MapResponses is a tool to map and compare map responses from a directory",
 | |
| 		Commands: []*command.C{
 | |
| 			{
 | |
| 				Name:     "online",
 | |
| 				Help:     "",
 | |
| 				Usage:    "run [test-pattern] [flags]",
 | |
| 				SetFlags: command.Flags(flax.MustBind, &mapConfig),
 | |
| 				Run:      runOnline,
 | |
| 			},
 | |
| 			command.HelpCommand(nil),
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	env := root.NewEnv(nil).MergeFlags(true)
 | |
| 	command.RunOrFail(env, os.Args[1:])
 | |
| }
 | |
| 
 | |
| // runIntegrationTest executes the integration test workflow.
 | |
| func runOnline(env *command.Env) error {
 | |
| 	if mapConfig.Directory == "" {
 | |
| 		return fmt.Errorf("directory is required")
 | |
| 	}
 | |
| 
 | |
| 	resps, err := mapper.ReadMapResponsesFromDirectory(mapConfig.Directory)
 | |
| 	if err != nil {
 | |
| 		return fmt.Errorf("reading map responses from directory: %w", err)
 | |
| 	}
 | |
| 
 | |
| 	expected := integrationutil.BuildExpectedOnlineMap(resps)
 | |
| 
 | |
| 	out, err := json.MarshalIndent(expected, "", "  ")
 | |
| 	if err != nil {
 | |
| 		return fmt.Errorf("marshaling expected online map: %w", err)
 | |
| 	}
 | |
| 
 | |
| 	os.Stderr.Write(out)
 | |
| 	os.Stderr.Write([]byte("\n"))
 | |
| 	return nil
 | |
| }
 |