[PATCH] CLI: warn if grapheme clusters are detected
Export this patch
The uniseg package was used to detect grapheme clusters, because it is
the only one which supports it at the moment.
[Ticket: 19]
---
cmd/moac-pwgen/main.go | 9 +++++++++
cmd/moac/main.go | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/cmd/moac-pwgen/main.go b/cmd/moac-pwgen/main.go
index 8405af2..60d3a43 100644
--- a/cmd/moac-pwgen/main.go
+++ b/cmd/moac-pwgen/main.go
@@ -12,6 +12,7 @@ import (
"git.sr.ht/~seirdy/moac/v2/internal/sanitize"
"git.sr.ht/~seirdy/moac/v2/pwgen"
"git.sr.ht/~sircmpwn/getopt"
+ "github.com/rivo/uniseg"
)
const (
@@ -152,6 +153,14 @@ func main1() int {
return 1
}
+ graphemes := uniseg.NewGraphemes(strings.Join(args, ""))
+ for graphemes.Next() {
+ if len(graphemes.Runes()) > 1 {
+ fmt.Fprintf(os.Stderr, "warning: charsets contain grapheme clusters, will be treated as distinct codepoints\n")
+ break
+ }
+ }
+
pwr.CharsetsWanted = charsets.ParseCharsets(setCharsetNames(args))
pw, err := pwgen.GenPW(pwr)
diff --git a/cmd/moac/main.go b/cmd/moac/main.go
index adef3fe..52a336d 100644
--- a/cmd/moac/main.go
+++ b/cmd/moac/main.go
@@ -12,6 +12,7 @@ import (
"git.sr.ht/~seirdy/moac/v2/internal/cli"
"git.sr.ht/~sircmpwn/getopt"
"golang.org/x/term"
+ "github.com/rivo/uniseg"
)
const (
@@ -159,6 +160,14 @@ func getOutput() (output float64, exitEarly bool, err error) {
return output, exitEarly, fmt.Errorf("moac: %w", err)
}
+ graphemes := uniseg.NewGraphemes(givens.Password)
+ for graphemes.Next() {
+ if len(graphemes.Runes()) > 1 {
+ fmt.Fprintf(os.Stderr, "warning: charsets contain grapheme clusters, will be treated as distinct codepoints\n")
+ break
+ }
+ }
+
cmd := strengthCmd
if len(os.Args) > optind {
--
2.33.1
Thanks; I'll apply this and also add it to go.mod/go.sum.