forked from TrueCloudLab/distribution
ba4a6bbe02
Microsoft has updated the golang Azure SDK significantly. Update the azure storage driver to use the new SDK. Add support for client secret and MSI authentication schemes in addition to shared key authentication. Implement rootDirectory support for the azure storage driver to mirror the S3 driver. Signed-off-by: Kirat Singh <kirat.singh@beacon.io> Co-authored-by: Cory Snider <corhere@gmail.com>
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
// Package browser provides helpers to open files, readers, and urls in a browser window.
|
|
//
|
|
// The choice of which browser is started is entirely client dependant.
|
|
package browser
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
)
|
|
|
|
// Stdout is the io.Writer to which executed commands write standard output.
|
|
var Stdout io.Writer = os.Stdout
|
|
|
|
// Stderr is the io.Writer to which executed commands write standard error.
|
|
var Stderr io.Writer = os.Stderr
|
|
|
|
// OpenFile opens new browser window for the file path.
|
|
func OpenFile(path string) error {
|
|
path, err := filepath.Abs(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return OpenURL("file://" + path)
|
|
}
|
|
|
|
// OpenReader consumes the contents of r and presents the
|
|
// results in a new browser window.
|
|
func OpenReader(r io.Reader) error {
|
|
f, err := ioutil.TempFile("", "browser")
|
|
if err != nil {
|
|
return fmt.Errorf("browser: could not create temporary file: %v", err)
|
|
}
|
|
if _, err := io.Copy(f, r); err != nil {
|
|
f.Close()
|
|
return fmt.Errorf("browser: caching temporary file failed: %v", err)
|
|
}
|
|
if err := f.Close(); err != nil {
|
|
return fmt.Errorf("browser: caching temporary file failed: %v", err)
|
|
}
|
|
oldname := f.Name()
|
|
newname := oldname + ".html"
|
|
if err := os.Rename(oldname, newname); err != nil {
|
|
return fmt.Errorf("browser: renaming temporary file failed: %v", err)
|
|
}
|
|
return OpenFile(newname)
|
|
}
|
|
|
|
// OpenURL opens a new browser window pointing to url.
|
|
func OpenURL(url string) error {
|
|
return openBrowser(url)
|
|
}
|
|
|
|
func runCmd(prog string, args ...string) error {
|
|
cmd := exec.Command(prog, args...)
|
|
cmd.Stdout = Stdout
|
|
cmd.Stderr = Stderr
|
|
setFlags(cmd)
|
|
return cmd.Run()
|
|
}
|