feature/featuretags: make QR codes modular (#18358)
QR codes are used by `tailscale up --qr` to provide an easy way to open a web-page without transcribing a difficult URI. However, there’s no need for this feature if the client will never be called interactively. So this PR adds the `ts_omit_qrcodes` build tag. Updates #18182 Signed-off-by: Simon Law <sfllaw@tailscale.com>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package qrcodes
|
||||
|
||||
// Format selects the text representation used to print QR codes.
|
||||
type Format string
|
||||
|
||||
const (
|
||||
// FormatAuto will format QR codes to best fit the capabilities of the
|
||||
// [io.Writer].
|
||||
FormatAuto Format = "auto"
|
||||
|
||||
// FormatASCII will format QR codes with only ASCII characters.
|
||||
FormatASCII Format = "ascii"
|
||||
|
||||
// FormatLarge will format QR codes with full block characters.
|
||||
FormatLarge Format = "large"
|
||||
|
||||
// FormatSmall will format QR codes with full and half block characters.
|
||||
FormatSmall Format = "small"
|
||||
)
|
||||
+2
-18
@@ -1,6 +1,8 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !ts_omit_qrcodes
|
||||
|
||||
// Package qrcodes provides functions to render or format QR codes.
|
||||
package qrcodes
|
||||
|
||||
@@ -12,24 +14,6 @@ import (
|
||||
qrcode "github.com/skip2/go-qrcode"
|
||||
)
|
||||
|
||||
// Format selects the text representation used to print QR codes.
|
||||
type Format string
|
||||
|
||||
const (
|
||||
// FormatAuto will format QR codes to best fit the capabilities of the
|
||||
// [io.Writer].
|
||||
FormatAuto Format = "auto"
|
||||
|
||||
// FormatASCII will format QR codes with only ASCII characters.
|
||||
FormatASCII Format = "ascii"
|
||||
|
||||
// FormatLarge will format QR codes with full block characters.
|
||||
FormatLarge Format = "large"
|
||||
|
||||
// FormatSmall will format QR codes with full and half block characters.
|
||||
FormatSmall Format = "small"
|
||||
)
|
||||
|
||||
// Fprintln formats s according to [Format] and writes a QR code to w, along
|
||||
// with a newline. It returns the number of bytes written and any write error
|
||||
// encountered.
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build ts_omit_qrcodes
|
||||
|
||||
package qrcodes
|
||||
|
||||
import "io"
|
||||
|
||||
func Fprintln(w io.Writer, format Format, s string) (n int, err error) {
|
||||
panic("omitted")
|
||||
}
|
||||
|
||||
func EncodePNG(s string, size int) ([]byte, error) {
|
||||
panic("omitted")
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build linux
|
||||
//go:build linux && !ts_omit_qrcodes
|
||||
|
||||
package qrcodes
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !linux
|
||||
//go:build !linux && !ts_omit_qrcodes
|
||||
|
||||
package qrcodes
|
||||
|
||||
|
||||
Reference in New Issue
Block a user