Compare commits
	
		
			2 Commits
		
	
	
		
			617c2fccf9
			...
			cb87159237
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						cb87159237
	
				 | 
					
					
						|||
| 
						
						
							
						
						491870e247
	
				 | 
					
					
						
@@ -28,6 +28,8 @@ type Command struct {
 | 
			
		||||
	Func  func(CmdArgs) (int, error)
 | 
			
		||||
	Flags *flag.FlagSet
 | 
			
		||||
	Use   string
 | 
			
		||||
	Short string
 | 
			
		||||
	Long  string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var commandRegistry = make(map[string]Command)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								cmd/help.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								cmd/help.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
package lumecmd
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	var cmdName string = "help"
 | 
			
		||||
	fs := flag.NewFlagSet(cmdName, flag.ExitOnError)
 | 
			
		||||
 | 
			
		||||
	RegisterCommand(cmdName, Command{
 | 
			
		||||
		Func:  HelpCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "<command>",
 | 
			
		||||
		Short: "Show help for a command",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func HelpCmd(args CmdArgs) (int, error) {
 | 
			
		||||
	argv := args.Flags.Args()
 | 
			
		||||
 | 
			
		||||
	if len(argv) == 0 {
 | 
			
		||||
		printHelp(commandRegistry)
 | 
			
		||||
	} else if len(argv) >= 1 {
 | 
			
		||||
		subCmd, ok := commandRegistry[argv[0]]
 | 
			
		||||
		if !ok {
 | 
			
		||||
			fmt.Printf("unknown command: %s\n", argv[0])
 | 
			
		||||
			return 1, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if subCmd.Use != "" {
 | 
			
		||||
			fmt.Printf("usage:\n  lume %s %s\n", subCmd.Name, subCmd.Use)
 | 
			
		||||
			fmt.Println()
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		fmt.Print("flags:\n")
 | 
			
		||||
		subCmd.Flags.PrintDefaults()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func printHelp(commands map[string]Command) {
 | 
			
		||||
	var maxLen, cmdLen int
 | 
			
		||||
	for _, c := range commands {
 | 
			
		||||
		cmdLen = len(c.Name)
 | 
			
		||||
		if cmdLen > maxLen {
 | 
			
		||||
			maxLen = cmdLen
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fmt.Printf("usage:\n  lume <command> [<args...>]")
 | 
			
		||||
	fmt.Println()
 | 
			
		||||
 | 
			
		||||
	fmt.Println("\ncommands:")
 | 
			
		||||
	for _, c := range commands {
 | 
			
		||||
		fmt.Printf("  %-*s    %s\n", maxLen, c.Name, c.Short)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -18,6 +18,7 @@ func init() {
 | 
			
		||||
		Func:  LsCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "[--selector=<selector>",
 | 
			
		||||
		Short: "List the lights",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,7 @@ func init() {
 | 
			
		||||
		Func:  SetColorCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "[--selector <selector>] [--power (on|off)] [--hue <hue>] [--saturation <saturation>] [--rgb <rbg>] [--name <color>] [--brightness <brightness>] [--duration <sec>] [--fast]",
 | 
			
		||||
		Short: "Set the color",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@ func init() {
 | 
			
		||||
		Func:  SetStateCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "[--selector <selector>] [--power (on|off)] [--color <color>] [--brightness <brightness>] [--duration <sec>] [--infrared <infrared>] [--fast]",
 | 
			
		||||
		Short: "Set various state attributes",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,7 @@ func init() {
 | 
			
		||||
		Func:  SetWhiteCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "[--selector <selector>] [--power (on|off)] [--kelvin <kelvin>] [--name <color>] [--brightness <brightness>] [--duration <sec>] [--infrared] [--fast]",
 | 
			
		||||
		Short: "Set the white level",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ func init() {
 | 
			
		||||
		Func:  ToggleCmd,
 | 
			
		||||
		Flags: fs,
 | 
			
		||||
		Use:   "[--selector <selector>] [--duration <sec>]",
 | 
			
		||||
		Short: "Toggle the power on/off",
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user