47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								// Copyright 2016 The Go Authors. All rights reserved.
							 | 
						||
| 
								 | 
							
								// Use of this source code is governed by a BSD-style
							 | 
						||
| 
								 | 
							
								// license that can be found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Package browser provides utilities for interacting with users' browsers.
							 | 
						||
| 
								 | 
							
								package browser
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"os"
							 | 
						||
| 
								 | 
							
									"os/exec"
							 | 
						||
| 
								 | 
							
									"runtime"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Commands returns a list of possible commands to use to open a url.
							 | 
						||
| 
								 | 
							
								func Commands() [][]string {
							 | 
						||
| 
								 | 
							
									var cmds [][]string
							 | 
						||
| 
								 | 
							
									if exe := os.Getenv("BROWSER"); exe != "" {
							 | 
						||
| 
								 | 
							
										cmds = append(cmds, []string{exe})
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									switch runtime.GOOS {
							 | 
						||
| 
								 | 
							
									case "darwin":
							 | 
						||
| 
								 | 
							
										cmds = append(cmds, []string{"/usr/bin/open"})
							 | 
						||
| 
								 | 
							
									case "windows":
							 | 
						||
| 
								 | 
							
										cmds = append(cmds, []string{"cmd", "/c", "start"})
							 | 
						||
| 
								 | 
							
									default:
							 | 
						||
| 
								 | 
							
										cmds = append(cmds, []string{"xdg-open"})
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									cmds = append(cmds,
							 | 
						||
| 
								 | 
							
										[]string{"chrome"},
							 | 
						||
| 
								 | 
							
										[]string{"google-chrome"},
							 | 
						||
| 
								 | 
							
										[]string{"chromium"},
							 | 
						||
| 
								 | 
							
										[]string{"firefox"},
							 | 
						||
| 
								 | 
							
									)
							 | 
						||
| 
								 | 
							
									return cmds
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Open tries to open url in a browser and reports whether it succeeded.
							 | 
						||
| 
								 | 
							
								func Open(url string) bool {
							 | 
						||
| 
								 | 
							
									for _, args := range Commands() {
							 | 
						||
| 
								 | 
							
										cmd := exec.Command(args[0], append(args[1:], url)...)
							 | 
						||
| 
								 | 
							
										if cmd.Start() == nil {
							 | 
						||
| 
								 | 
							
											return true
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return false
							 | 
						||
| 
								 | 
							
								}
							 |