62 lines
1.1 KiB
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)
|
|
}
|