This commit is contained in:
Ash Leece 2021-03-04 22:04:50 +00:00
commit b98c13756f
3 changed files with 73 additions and 0 deletions

8
go.mod Normal file
View File

@ -0,0 +1,8 @@
module qr-cli
go 1.16
require (
github.com/mdp/qrterminal v1.0.1
rsc.io/qr v0.2.0
)

4
go.sum Normal file
View File

@ -0,0 +1,4 @@
github.com/mdp/qrterminal v1.0.1 h1:07+fzVDlPuBlXS8tB0ktTAyf+Lp1j2+2zK3fBOL5b7c=
github.com/mdp/qrterminal v1.0.1/go.mod h1:Z33WhxQe9B6CdW37HaVqcRKzP+kByF3q/qLxOGe12xQ=
rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY=
rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs=

61
main.go Normal file
View File

@ -0,0 +1,61 @@
package main
import (
"bufio"
"flag"
"log"
"os"
"strings"
"github.com/mdp/qrterminal"
"rsc.io/qr"
)
func main() {
var levelString string
var line string
flag.StringVar(&levelString, "l", "m", "Level of error checking (Low: \"l\", Med: \"m\", High: \"h\")")
flag.StringVar(&line, "i", "", "Input string to generate QR code from")
flag.Parse()
var level qr.Level
switch strings.ToLower(levelString) {
case "l":
level = 0
case "m":
level = 1
case "h":
level = 2
default:
log.Fatalln("Error: Invalid level")
}
stats, _ := os.Stdin.Stat()
if stats.Mode()&os.ModeNamedPipe != 0 && line == "" {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
line += scanner.Text()
}
if err := scanner.Err(); err != nil {
log.Fatalln("Error: Error reading stdin:", err)
}
} else if line == "" {
log.Printf("Error: nothing passed to stdin or input as a flag, please try again.\n\n")
flag.CommandLine.Usage()
os.Exit(1)
}
config := qrterminal.Config{
Level: level,
Writer: os.Stdout,
BlackChar: qrterminal.BLACK,
WhiteChar: qrterminal.WHITE,
QuietZone: 1,
}
qrterminal.GenerateWithConfig(line, config)
}