master
1package generate
2
3import (
4 "fmt"
5
6 "github.com/kahnwong/swissknife/internal/utils"
7 qrcode "github.com/skip2/go-qrcode"
8)
9
10func generateQRCode(url string) ([]byte, string, error) {
11 // init
12 var q *qrcode.QRCode
13 q, err := qrcode.New(url, qrcode.Medium)
14 if err != nil {
15 return nil, "", fmt.Errorf("failed to initialize QRCode object: %w", err)
16 }
17
18 // generate png
19 png, err := q.PNG(1024)
20 if err != nil {
21 return nil, "", fmt.Errorf("failed to generate QRCode PNG: %w", err)
22 }
23
24 // for stdout
25 //stdout := q.ToString(false)
26 stdout := q.ToSmallString(false)
27
28 return png, stdout, nil
29}
30
31func QRCode(args []string) error {
32 // set URL
33 url := utils.SetURL(args)
34 fmt.Println(url)
35
36 // main
37 png, stdout, err := generateQRCode(url)
38 if err != nil {
39 return err
40 }
41
42 if err = utils.WriteToClipboardImage(png); err != nil {
43 return fmt.Errorf("failed to write to clipboard: %w", err)
44 }
45
46 fmt.Println(stdout)
47 return nil
48}