Commit 57f6d89

Karn Wong <[email protected]>
2025-07-28 04:05:51
refactor(generateQrcode): move to internal
1 parent 8a801f0
Changed files (2)
cmd
internal
generate
cmd/generate/generate_qrcode.go
@@ -1,72 +1,16 @@
 package generate
 
 import (
-	"fmt"
-	"os"
-	"strings"
-
-	"github.com/kahnwong/swissknife/utils"
-	"github.com/rs/zerolog/log"
-	qrcode "github.com/skip2/go-qrcode"
+	"github.com/kahnwong/swissknife/internal/generate"
 	"github.com/spf13/cobra"
 )
 
-func setURL(args []string) string {
-	var url string
-	if len(args) == 0 {
-		urlFromClipboard := utils.ReadFromClipboard()
-		if urlFromClipboard != "" {
-			if strings.HasPrefix(urlFromClipboard, "https://") {
-				url = urlFromClipboard
-			}
-		}
-	}
-	if url == "" {
-		if len(args) == 0 {
-			fmt.Println("Please specify URL")
-			os.Exit(1)
-		} else if len(args) == 1 {
-			url = args[0]
-		}
-	}
-
-	return url
-}
-
-func generateQRCode(url string) ([]byte, string) {
-	// init
-	var q *qrcode.QRCode
-	q, err := qrcode.New(url, qrcode.Medium)
-	if err != nil {
-		log.Fatal().Msg("Failed to initialize QRCode object")
-	}
-
-	// generate png
-	png, err := q.PNG(1024)
-	if err != nil {
-		log.Fatal().Msg("Failed to generate QRCode PNG")
-	}
-
-	// for stdout
-	//stdout := q.ToString(false)
-	stdout := q.ToSmallString(false)
-
-	return png, stdout
-}
-
 var generateQRCodeCmd = &cobra.Command{
 	Use:   "qrcode",
 	Short: "Generate QR code",
 	Long:  `Generate QR code from URL (either as an arg or from clipboard) and copy resulting image to clipboard.`,
 	Run: func(cmd *cobra.Command, args []string) {
-		// set URL
-		url := setURL(args)
-		fmt.Println(url)
-
-		// main
-		png, stdout := generateQRCode(url)
-		utils.WriteToClipboardImage(png)
-		fmt.Println(stdout)
+		generate.QRCode(args)
 	},
 }
 
internal/generate/qrcode.go
@@ -0,0 +1,65 @@
+package generate
+
+import (
+	"fmt"
+	"os"
+	"strings"
+
+	"github.com/kahnwong/swissknife/internal/utils"
+	"github.com/rs/zerolog/log"
+	qrcode "github.com/skip2/go-qrcode"
+)
+
+func setURL(args []string) string {
+	var url string
+	if len(args) == 0 {
+		urlFromClipboard := utils.ReadFromClipboard()
+		if urlFromClipboard != "" {
+			if strings.HasPrefix(urlFromClipboard, "https://") {
+				url = urlFromClipboard
+			}
+		}
+	}
+	if url == "" {
+		if len(args) == 0 {
+			fmt.Println("Please specify URL")
+			os.Exit(1)
+		} else if len(args) == 1 {
+			url = args[0]
+		}
+	}
+
+	return url
+}
+
+func generateQRCode(url string) ([]byte, string) {
+	// init
+	var q *qrcode.QRCode
+	q, err := qrcode.New(url, qrcode.Medium)
+	if err != nil {
+		log.Fatal().Msg("Failed to initialize QRCode object")
+	}
+
+	// generate png
+	png, err := q.PNG(1024)
+	if err != nil {
+		log.Fatal().Msg("Failed to generate QRCode PNG")
+	}
+
+	// for stdout
+	//stdout := q.ToString(false)
+	stdout := q.ToSmallString(false)
+
+	return png, stdout
+}
+
+func QRCode(args []string) {
+	// set URL
+	url := setURL(args)
+	fmt.Println(url)
+
+	// main
+	png, stdout := generateQRCode(url)
+	utils.WriteToClipboardImage(png)
+	fmt.Println(stdout)
+}