qr-cli/main.go

62 lines
1.1 KiB
Go

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)
}