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}