Skip to content

Commit 0104f05

Browse files
authored
feat: add clip command (knqyf263#191)
copy selected command to clipboard
1 parent 9b3e0fa commit 0104f05

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

Diff for: cmd/clip.go

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
"github.com/atotto/clipboard"
8+
"github.com/fatih/color"
9+
"github.com/knqyf263/pet/config"
10+
"github.com/spf13/cobra"
11+
)
12+
13+
// clipCmd represents the clip command
14+
var clipCmd = &cobra.Command{
15+
Use: "clip",
16+
Short: "Copy the selected commands",
17+
Long: `Copy the selected commands to clipboard`,
18+
RunE: clip,
19+
}
20+
21+
func clip(cmd *cobra.Command, args []string) (err error) {
22+
flag := config.Flag
23+
24+
var options []string
25+
if flag.Query != "" {
26+
options = append(options, fmt.Sprintf("--query %s", flag.Query))
27+
}
28+
29+
commands, err := filter(options, flag.FilterTag)
30+
if err != nil {
31+
return err
32+
}
33+
command := strings.Join(commands, flag.Delimiter)
34+
if flag.Command && command != "" {
35+
fmt.Printf("%s: %s\n", color.YellowString("Command"), command)
36+
}
37+
return clipboard.WriteAll(command)
38+
}
39+
40+
func init() {
41+
RootCmd.AddCommand(clipCmd)
42+
clipCmd.Flags().StringVarP(&config.Flag.Query, "query", "q", "",
43+
`Initial value for query`)
44+
clipCmd.Flags().BoolVarP(&config.Flag.Command, "command", "", false,
45+
`Display snippets in one line`)
46+
clipCmd.Flags().StringVarP(&config.Flag.Delimiter, "delimiter", "d", "; ",
47+
`Use delim as the command delimiter character`)
48+
clipCmd.Flags().StringVarP(&config.Flag.FilterTag, "tag", "t", "",
49+
`Filter tag`)
50+
}

Diff for: go.mod

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ require (
2424
gopkg.in/alessio/shellescape.v1 v1.0.0-20170105083845-52074bc9df61
2525
)
2626

27+
require github.com/atotto/clipboard v0.1.4
28+
2729
require (
2830
github.com/alessio/shellescape v1.4.1 // indirect
2931
github.com/golang/protobuf v1.2.0 // indirect

Diff for: go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ github.com/BurntSushi/toml v0.3.0 h1:e1/Ivsx3Z0FVTV0NSOv/aVgbUWyQuzj7DDnFblkRvsY
22
github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
33
github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVKJUX0=
44
github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
5+
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
6+
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
57
github.com/briandowns/spinner v0.0.0-20170614154858-48dbb65d7bd5 h1:osZyZB7J4kE1tKLeaUjV6+uZVBfS835T0I/RxmwWw1w=
68
github.com/briandowns/spinner v0.0.0-20170614154858-48dbb65d7bd5/go.mod h1:hw/JEQBIE+c/BLI4aKM8UU8v+ZqrD3h7HC27kKt8JQU=
79
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=

0 commit comments

Comments
 (0)