Commit d76b785
Changed files (7)
cmd
utils
cmd/generate/generate.go
@@ -3,6 +3,7 @@ package generate
import (
"os"
+ "github.com/rs/zerolog/log"
"github.com/spf13/cobra"
)
@@ -12,7 +13,10 @@ var Cmd = &cobra.Command{
Long: `Generate stuff`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
- cmd.Help()
+ err := cmd.Help()
+ if err != nil {
+ log.Fatal().Err(err).Msg("Failed to display help")
+ }
os.Exit(0)
}
},
cmd/get/get.go
@@ -3,6 +3,8 @@ package get
import (
"os"
+ "github.com/rs/zerolog/log"
+
"github.com/spf13/cobra"
)
@@ -12,7 +14,10 @@ var Cmd = &cobra.Command{
Long: `Obtain information`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
- cmd.Help()
+ err := cmd.Help()
+ if err != nil {
+ log.Fatal().Err(err).Msg("Failed to display help")
+ }
os.Exit(0)
}
},
cmd/speedtest.go
@@ -37,10 +37,10 @@ var SpeedTestCmd = &cobra.Command{
log.Fatal().Err(err).Msg("Error testing upload speed")
}
- fmt.Printf("" +
+ fmt.Print(
fmt.Sprintf("%s: %s\n", color.Green("Latency"), s.Latency) +
- fmt.Sprintf("%s: %s\n", color.Green("Download"), s.DLSpeed) +
- fmt.Sprintf("%s: %s\n", color.Green("Upload"), s.ULSpeed),
+ fmt.Sprintf("%s: %s\n", color.Green("Download"), s.DLSpeed) +
+ fmt.Sprintf("%s: %s\n", color.Green("Upload"), s.ULSpeed),
)
s.Context.Reset()
utils/clipboard.go
@@ -1,30 +1,39 @@
package utils
import (
- "golang.design/x/clipboard"
+ "os"
+
+ "github.com/atotto/clipboard"
+ "github.com/rs/zerolog/log"
+ clipboardImage "github.com/skanehira/clipboard-image"
)
func WriteToClipboard(text string) {
- err := clipboard.Init() // clipboard doesn't work from ssh session
- if err == nil { // clipboard doesn't work from ssh session
- clipboard.Write(clipboard.FmtText, []byte(text))
+ err := clipboard.WriteAll(text)
+ if err != nil {
+ log.Error().Err(err).Msg("Failed to write to clipboard")
}
}
func WriteToClipboardImage(bytes []byte) {
- err := clipboard.Init()
- if err == nil {
- clipboard.Write(clipboard.FmtImage, bytes)
+ tempFilename := "/tmp/qr-image.png"
+ err := os.WriteFile(tempFilename, bytes, 0644)
+ if err != nil {
+ log.Fatal().Err(err).Msg("Failed to write temp image for clipboard")
}
-}
-func ReadFromClipboard() string {
- err := clipboard.Init()
- if err == nil {
+ f, err := os.Open(tempFilename)
+ if err != nil {
+ log.Fatal().Err(err).Msg("Failed to open temp image for clipboard")
+ }
+ defer f.Close()
- s := clipboard.Read(clipboard.FmtText)
- return string(s)
+ if err = clipboardImage.CopyToClipboard(f); err != nil {
+ log.Fatal().Err(err).Msg("Failed to copy to clipboard")
}
+}
- return ""
+func ReadFromClipboard() string {
+ text, _ := clipboard.ReadAll()
+ return text
}
.pre-commit-config.yaml
@@ -23,11 +23,11 @@ repos:
exclude: ^.github/dependabot.yaml
# exclude: (sops\.yaml)$
- repo: https://github.com/kahnwong/pre-commit
- rev: 0eb55ea
+ rev: 71489eb
hooks:
- id: go-fmt
- id: go-vet
- id: go-imports
-# - id: golangci-lint
+ - id: golangci-lint
- id: go-build
- id: go-mod-tidy
go.mod
@@ -3,6 +3,7 @@ module github.com/kahnwong/swissknife
go 1.23.2
require (
+ github.com/atotto/clipboard v0.1.4
github.com/carlmjohnson/requests v0.24.2
github.com/charmbracelet/bubbles v0.20.0
github.com/charmbracelet/bubbletea v1.1.2
@@ -14,9 +15,9 @@ require (
github.com/sethvargo/go-password v0.3.1
github.com/shirou/gopsutil/v4 v4.24.10
github.com/showwin/speedtest-go v1.7.9
+ github.com/skanehira/clipboard-image v1.0.0
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
github.com/spf13/cobra v1.8.1
- golang.design/x/clipboard v0.7.0
golang.org/x/crypto v0.28.0
)
@@ -45,9 +46,6 @@ require (
github.com/tklauser/go-sysconf v0.3.14 // indirect
github.com/tklauser/numcpus v0.8.0 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
- golang.org/x/exp/shiny v0.0.0-20240719175910-8a7402abbf56 // indirect
- golang.org/x/image v0.18.0 // indirect
- golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.26.0 // indirect
go.sum
@@ -1,3 +1,5 @@
+github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
+github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/carlmjohnson/requests v0.24.2 h1:JDakhAmTIKL/qL/1P7Kkc2INGBJIkIFP6xUeUmPzLso=
@@ -76,6 +78,8 @@ github.com/shirou/gopsutil/v4 v4.24.10 h1:7VOzPtfw/5YDU+jLEoBwXwxJbQetULywoSV4RY
github.com/shirou/gopsutil/v4 v4.24.10/go.mod h1:s4D/wg+ag4rG0WO7AiTj2BeYCRhym0vM7DHbZRxnIT8=
github.com/showwin/speedtest-go v1.7.9 h1:5b3T3U3WSppVXFqsIqF1zdHRYKKVuPNpzFU71HnYNEY=
github.com/showwin/speedtest-go v1.7.9/go.mod h1:uLgdWCNarXxlYsL2E5TOZpCIwpgSWnEANZp7gfHXHu0=
+github.com/skanehira/clipboard-image v1.0.0 h1:MJ5PeXxDMteS0HCsjvuoMscBi+AtoqCiPX7bZ2OAxDE=
+github.com/skanehira/clipboard-image v1.0.0/go.mod h1:WAxMgBkENpa206RHfrqV/5y8Kq7CitAozlvVxQxa9gs=
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
@@ -90,19 +94,11 @@ github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYg
github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
-golang.design/x/clipboard v0.7.0 h1:4Je8M/ys9AJumVnl8m+rZnIvstSnYj1fvzqYrU3TXvo=
-golang.design/x/clipboard v0.7.0/go.mod h1:PQIvqYO9GP29yINEfsEn5zSQKAz3UgXmZKzDA6dnq2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
-golang.org/x/exp/shiny v0.0.0-20240719175910-8a7402abbf56 h1:8jM66xzUJjNInw31Y8bic4AYSLVChztDRT93+kmofUY=
-golang.org/x/exp/shiny v0.0.0-20240719175910-8a7402abbf56/go.mod h1:3F+MieQB7dRYLTmnncoFbb1crS5lfQoTfDgQy6K4N0o=
-golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ=
-golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a h1:sYbmY3FwUWCBTodZL1S3JUuOvaW6kM2o+clDzzDNBWg=
-golang.org/x/mobile v0.0.0-20231127183840-76ac6878050a/go.mod h1:Ede7gF0KGoHlj822RtphAHK1jLdrcuRBZg0sF1Q+SPc=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=