Add a no-browser mode to gh browse
For when you just want the destination URL on stdout.
This commit is contained in:
parent
a6710ec506
commit
49ff0c6530
2 changed files with 44 additions and 10 deletions
|
|
@ -26,10 +26,11 @@ type BrowseOptions struct {
|
|||
|
||||
SelectorArg string
|
||||
|
||||
Branch string
|
||||
ProjectsFlag bool
|
||||
SettingsFlag bool
|
||||
WikiFlag bool
|
||||
Branch string
|
||||
ProjectsFlag bool
|
||||
SettingsFlag bool
|
||||
WikiFlag bool
|
||||
NoBrowserFlag bool
|
||||
}
|
||||
|
||||
func NewCmdBrowse(f *cmdutil.Factory, runF func(*BrowseOptions) error) *cobra.Command {
|
||||
|
|
@ -99,6 +100,7 @@ func NewCmdBrowse(f *cmdutil.Factory, runF func(*BrowseOptions) error) *cobra.Co
|
|||
cmd.Flags().BoolVarP(&opts.ProjectsFlag, "projects", "p", false, "Open repository projects")
|
||||
cmd.Flags().BoolVarP(&opts.WikiFlag, "wiki", "w", false, "Open repository wiki")
|
||||
cmd.Flags().BoolVarP(&opts.SettingsFlag, "settings", "s", false, "Open repository settings")
|
||||
cmd.Flags().BoolVarP(&opts.NoBrowserFlag, "no-browser", "n", false, "Print destination URL instead of opening the browser")
|
||||
cmd.Flags().StringVarP(&opts.Branch, "branch", "b", "", "Select another branch by passing in the branch name")
|
||||
|
||||
return cmd
|
||||
|
|
@ -151,10 +153,15 @@ func runBrowse(opts *BrowseOptions) error {
|
|||
}
|
||||
}
|
||||
|
||||
if opts.IO.IsStdoutTTY() {
|
||||
fmt.Fprintf(opts.IO.Out, "now opening %s in browser\n", url)
|
||||
if opts.NoBrowserFlag {
|
||||
_, err := fmt.Fprintf(opts.IO.Out, "%s\n", url)
|
||||
return err
|
||||
} else {
|
||||
if opts.IO.IsStdoutTTY() {
|
||||
fmt.Fprintf(opts.IO.Out, "now opening %s in browser\n", url)
|
||||
}
|
||||
return opts.Browser.Browse(url)
|
||||
}
|
||||
return opts.Browser.Browse(url)
|
||||
}
|
||||
|
||||
func parseFileArg(fileArg string) (string, error) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package browse
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
|
|
@ -49,6 +50,14 @@ func TestNewCmdBrowse(t *testing.T) {
|
|||
},
|
||||
wantsErr: false,
|
||||
},
|
||||
{
|
||||
name: "no browser flag",
|
||||
cli: "--no-browser",
|
||||
wants: BrowseOptions{
|
||||
NoBrowserFlag: true,
|
||||
},
|
||||
wantsErr: false,
|
||||
},
|
||||
{
|
||||
name: "branch flag",
|
||||
cli: "--branch main",
|
||||
|
|
@ -118,6 +127,7 @@ func TestNewCmdBrowse(t *testing.T) {
|
|||
assert.Equal(t, tt.wants.SelectorArg, opts.SelectorArg)
|
||||
assert.Equal(t, tt.wants.ProjectsFlag, opts.ProjectsFlag)
|
||||
assert.Equal(t, tt.wants.WikiFlag, opts.WikiFlag)
|
||||
assert.Equal(t, tt.wants.NoBrowserFlag, opts.NoBrowserFlag)
|
||||
assert.Equal(t, tt.wants.SettingsFlag, opts.SettingsFlag)
|
||||
})
|
||||
}
|
||||
|
|
@ -233,6 +243,17 @@ func Test_runBrowse(t *testing.T) {
|
|||
wantsErr: false,
|
||||
expectedURL: "https://github.com/github/ThankYouGitHub/tree/first-browse-pull/browse.go#L32",
|
||||
},
|
||||
{
|
||||
name: "no browser with branch file and line number",
|
||||
opts: BrowseOptions{
|
||||
Branch: "3-0-stable",
|
||||
SelectorArg: "init.rb:6",
|
||||
NoBrowserFlag: true,
|
||||
},
|
||||
baseRepo: ghrepo.New("mislav", "will_paginate"),
|
||||
wantsErr: false,
|
||||
expectedURL: "https://github.com/mislav/will_paginate/tree/3-0-stable/init.rb#L6",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
|
|
@ -263,9 +284,15 @@ func Test_runBrowse(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
assert.Equal(t, "", stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
browser.Verify(t, tt.expectedURL)
|
||||
if opts.NoBrowserFlag {
|
||||
assert.Equal(t, fmt.Sprintf("%s\n", tt.expectedURL), stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
browser.Verify(t, "")
|
||||
} else {
|
||||
assert.Equal(t, "", stdout.String())
|
||||
assert.Equal(t, "", stderr.String())
|
||||
browser.Verify(t, tt.expectedURL)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue