Age | Commit message (Collapse) | Author |
|
|
|
We need to connect our `Stderr` and `Stdout` to those in
`github.com/pkg/browser` so that custom writers get linked correctly in
the underlying library.
Previously, customising these writers only worked for the command
specified in the `BROWSER` environment variable, not when `BROWSER` was
unset.
|
|
|
|
|
|
After reading the `urlview` man page, I learned that it supports
multiple commands in the `BROWSER` environment variable separated by
colons.
Read over the source to see what `urlview` does:
https://github.com/sigpipe/urlview/blob/08767aa863cd27d1755ba0aff65b8cc1a0c1446a/urlview.c#L617-L630
It tries each command from left to right until one of them exits with a
`0` exit code. Use the same logic here.
|
|
Use the global `Stdout` and `Stderr` variables when running the command
specified by `BROWSER`.
|
|
Not to be confused with the previous `fmtBrowserCommand()` function,
this one handles all formatting including `%s`, shell escaping, etc.
|
|
Didn't like `escapeBrowserCommand()` either, since we're escaping the
URL not the rest of the command.
|
|
Formatting the browser command will incorporate more steps, not just
this one, so rename it to be more specific about what it's doing. I want
to use the other name for a different function.
|
|
On Unix, we escape the URL argument by surrounding it with single
quotes. This fails if the URL contains single quotes. It also fails if
the `BROWSER` command contains `%s` not surrounded by single quotes.
Fix this by escaping the single quotes. We might also want to look into
passing the `BROWSER` command and arguments into `exec.Command` directly
instead of through `/bin/sh` and checking if that has an automatic
escaping mechanism we can take advantage of.
|
|
The `BROWSER` environment variable might contain a `%s` format string
that should be replaced by the URL to open. If it's present perform the
replacement. Otherwise, append the URL to the `BROWSER` command as
before.
|
|
If the `BROWSER` environment variable is set, open the reader in the
given browser.
Works by copying the `Reader`'s contents to a temporary file and opening
that with `OpenFile()`.
|
|
If the `BROWSER` environment variable is set, open the given file path
in the given browser.
|
|
If the `BROWSER` environment variable is set, open the given URL using
the command specified in the variable.
Run the command in a shell process, either from the `SHELL` environment
variable or `/bin/sh` on Unix OSes. Run it through `cmd` on Windows.
Essentially repurposes my code from
https://github.com/pkg/browser/pull/14.
|
|
This will be used to extend `browser`'s functionality.
|