X Tutup
Skip to content

Commit 55a8f3d

Browse files
committed
Make gh gist view and edit commands reuse logic for id extraction
1 parent d685d66 commit 55a8f3d

File tree

3 files changed

+28
-15
lines changed

3 files changed

+28
-15
lines changed

pkg/cmd/gist/edit/edit.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"errors"
77
"fmt"
88
"net/http"
9-
"net/url"
109
"sort"
1110
"strings"
1211

@@ -69,11 +68,12 @@ func NewCmdEdit(f *cmdutil.Factory, runF func(*EditOptions) error) *cobra.Comman
6968
func editRun(opts *EditOptions) error {
7069
gistID := opts.Selector
7170

72-
u, err := url.Parse(opts.Selector)
73-
if err == nil {
74-
if strings.HasPrefix(u.Path, "/") {
75-
gistID = u.Path[1:]
71+
if strings.Contains(gistID, "/") {
72+
id, err := shared.GistIDFromURL(gistID)
73+
if err != nil {
74+
return err
7675
}
76+
gistID = id
7777
}
7878

7979
client, err := opts.HttpClient()

pkg/cmd/gist/shared/shared.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package shared
33
import (
44
"fmt"
55
"net/http"
6+
"net/url"
7+
"strings"
68
"time"
79

810
"github.com/cli/cli/api"
@@ -37,3 +39,20 @@ func GetGist(client *http.Client, hostname, gistID string) (*Gist, error) {
3739

3840
return &gist, nil
3941
}
42+
43+
func GistIDFromURL(gistURL string) (string, error) {
44+
u, err := url.Parse(gistURL)
45+
if err == nil && strings.HasPrefix(u.Path, "/") {
46+
split := strings.Split(u.Path, "/")
47+
48+
if len(split) > 2 {
49+
return split[2], nil
50+
}
51+
52+
if len(split) == 2 && split[1] != "" {
53+
return split[1], nil
54+
}
55+
}
56+
57+
return "", fmt.Errorf("Invalid gist URL %s", u)
58+
}

pkg/cmd/gist/view/view.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package view
33
import (
44
"fmt"
55
"net/http"
6-
"net/url"
76
"sort"
87
"strings"
98

@@ -72,16 +71,11 @@ func viewRun(opts *ViewOptions) error {
7271
}
7372

7473
if strings.Contains(gistID, "/") {
75-
u, err := url.Parse(opts.Selector)
76-
if err == nil && strings.HasPrefix(u.Path, "/") {
77-
split := strings.Split(u.Path, "/")
78-
79-
if len(split) > 2 && split[2] != "" {
80-
gistID = strings.Split(u.Path, "/")[2]
81-
} else {
82-
return fmt.Errorf("Invalid gist URL %s", u)
83-
}
74+
id, err := shared.GistIDFromURL(gistID)
75+
if err != nil {
76+
return err
8477
}
78+
gistID = id
8579
}
8680

8781
client, err := opts.HttpClient()

0 commit comments

Comments
 (0)
X Tutup