flash: search for default serial port on both macOS and Linux
Signed-off-by: Ron Evans <ron@hybridgroup.com>
Этот коммит содержится в:
		
							родитель
							
								
									768c652468
								
							
						
					
					
						коммит
						34ee3883d6
					
				
					 1 изменённых файлов: 41 добавлений и 1 удалений
				
			
		
							
								
								
									
										42
									
								
								main.go
									
										
									
									
									
								
							
							
						
						
									
										42
									
								
								main.go
									
										
									
									
									
								
							| 
						 | 
					@ -144,6 +144,14 @@ func Test(pkgName string, options *compileopts.Options) error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Flash builds and flashes the built binary to the given serial port.
 | 
					// Flash builds and flashes the built binary to the given serial port.
 | 
				
			||||||
func Flash(pkgName, port string, options *compileopts.Options) error {
 | 
					func Flash(pkgName, port string, options *compileopts.Options) error {
 | 
				
			||||||
 | 
						if port == "" {
 | 
				
			||||||
 | 
							var err error
 | 
				
			||||||
 | 
							port, err = getDefaultPort()
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config, err := builder.NewConfig(options)
 | 
						config, err := builder.NewConfig(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
| 
						 | 
					@ -255,6 +263,14 @@ func Flash(pkgName, port string, options *compileopts.Options) error {
 | 
				
			||||||
// Note: this command is expected to execute just before exiting, as it
 | 
					// Note: this command is expected to execute just before exiting, as it
 | 
				
			||||||
// modifies global state.
 | 
					// modifies global state.
 | 
				
			||||||
func FlashGDB(pkgName, port string, ocdOutput bool, options *compileopts.Options) error {
 | 
					func FlashGDB(pkgName, port string, ocdOutput bool, options *compileopts.Options) error {
 | 
				
			||||||
 | 
						if port == "" {
 | 
				
			||||||
 | 
							var err error
 | 
				
			||||||
 | 
							port, err = getDefaultPort()
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config, err := builder.NewConfig(options)
 | 
						config, err := builder.NewConfig(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
| 
						 | 
					@ -480,6 +496,30 @@ func parseSize(s string) (int64, error) {
 | 
				
			||||||
	return n, err
 | 
						return n, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// getDefaultPort returns the default serial port depending on the operating system.
 | 
				
			||||||
 | 
					// Currently only supports macOS and Linux.
 | 
				
			||||||
 | 
					func getDefaultPort() (port string, err error) {
 | 
				
			||||||
 | 
						var portPath string
 | 
				
			||||||
 | 
						switch runtime.GOOS {
 | 
				
			||||||
 | 
						case "darwin":
 | 
				
			||||||
 | 
							portPath = "/dev/cu.usb*"
 | 
				
			||||||
 | 
						case "linux":
 | 
				
			||||||
 | 
							portPath = "/dev/ttyACM*"
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return "", errors.New("unable to search for a default USB device to be flashed on this OS")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						d, err := filepath.Glob(portPath)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return "", err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if d == nil {
 | 
				
			||||||
 | 
							return "", errors.New("unable to locate a USB device to be flashed")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return d[0], nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func usage() {
 | 
					func usage() {
 | 
				
			||||||
	fmt.Fprintln(os.Stderr, "TinyGo is a Go compiler for small places.")
 | 
						fmt.Fprintln(os.Stderr, "TinyGo is a Go compiler for small places.")
 | 
				
			||||||
	fmt.Fprintln(os.Stderr, "version:", version)
 | 
						fmt.Fprintln(os.Stderr, "version:", version)
 | 
				
			||||||
| 
						 | 
					@ -547,7 +587,7 @@ func main() {
 | 
				
			||||||
	printSize := flag.String("size", "", "print sizes (none, short, full)")
 | 
						printSize := flag.String("size", "", "print sizes (none, short, full)")
 | 
				
			||||||
	nodebug := flag.Bool("no-debug", false, "disable DWARF debug symbol generation")
 | 
						nodebug := flag.Bool("no-debug", false, "disable DWARF debug symbol generation")
 | 
				
			||||||
	ocdOutput := flag.Bool("ocd-output", false, "print OCD daemon output during debug")
 | 
						ocdOutput := flag.Bool("ocd-output", false, "print OCD daemon output during debug")
 | 
				
			||||||
	port := flag.String("port", "/dev/ttyACM0", "flash port")
 | 
						port := flag.String("port", "", "flash port")
 | 
				
			||||||
	programmer := flag.String("programmer", "", "which hardware programmer to use")
 | 
						programmer := flag.String("programmer", "", "which hardware programmer to use")
 | 
				
			||||||
	cFlags := flag.String("cflags", "", "additional cflags for compiler")
 | 
						cFlags := flag.String("cflags", "", "additional cflags for compiler")
 | 
				
			||||||
	ldFlags := flag.String("ldflags", "", "additional ldflags for linker")
 | 
						ldFlags := flag.String("ldflags", "", "additional ldflags for linker")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Загрузка…
	
	Создание таблицы
		
		Сослаться в новой задаче