mirror of
https://github.com/opentffoundation/opentf.git
synced 2025-12-19 09:48:32 -05:00
Prevously OpenTofu delegated browser launching entirely to the third-party module github.com/cli/browser, which consists of a number of platform-specific lists of executable commands to try to run to launch a web browser. On Unix systems there is also a de-facto convention of using an environment variable called BROWSER to explicitly specify what to launch. That variable can either point directly to a browser, or can point to a script which implements some more complex policy for choosing a browser, such as detecting whether the command is running in a GUI context and launching either a GUI or textmode browser. The BROWSER variable has been most commonly implemented with similar treatment to earlier variables like EDITOR and PAGER where it's expected to be set to just a single command to run, with the URL given as the first and only argument. There was also an attempt to define a more complex interpretation of this variable at http://www.catb.org/~esr/BROWSER/ , but that extended treatment was only implemented in a small amount of software, and those which implemented it did so slightly inconsistently due to the specification being ambiguous. OpenTofu's implementation therefore follows the common simpler convention, but will silently ignore variable values it cannot use so that OpenTofu won't fail when run in an environment that has that variable set in a way that's intended for use by some other software. In that case OpenTofu will continue to perform the default behavior as implemented in the third-party library. Because this convention is Unix-specific, OpenTofu will check for and use this environment variable only on operating systems that the Go toolchain considers to be "unix". This means that in particular on Windows systems OpenTofu will continue to follow the Windows convention of specifying the default browser via an entry in the Windows Registry. As usual with this sort of system-integration mechanism it isn't really viable to test this end-to-end in a portable way, but the main logic is separated out into testable functions, and I manually tested this on my own Linux system to verify that it works in a real OpenTofu executable. Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
18 lines
395 B
Go
18 lines
395 B
Go
// Copyright (c) The OpenTofu Authors
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
// Copyright (c) 2023 HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
//go:build !unix
|
|
|
|
package main
|
|
|
|
import (
|
|
"github.com/opentofu/opentofu/internal/command/webbrowser"
|
|
)
|
|
|
|
func browserLauncherFromEnv() webbrowser.Launcher {
|
|
// We know of no environment variable convention for the current platform.
|
|
return nil
|
|
}
|