Rename module to sneak.berlin/go/x and rework bip39wordlist

Move to Go 1.26, embed the wordlist from english.txt, add
ValidateWordlist, NormalizeWordlist, and GenerateMnemonic with tests,
and remove the old root-level CLI that used the previous module path.
This commit is contained in:
2026-10-31 10:03:06 -07:00
parent 4d27e30ea8
commit 02386a6ff1
15 changed files with 2435 additions and 2530 deletions
-14
View File
@@ -1,14 +0,0 @@
package cmd
import (
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(generateCommand)
}
var generateCommand = &cobra.Command{
Use: "generate",
Short: "Generate things",
}
-21
View File
@@ -1,21 +0,0 @@
package cmd
import (
"fmt"
"runtime/debug"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(infoCmd)
}
var infoCmd = &cobra.Command{
Use: "info",
Short: "Print tool info",
Run: func(cmd *cobra.Command, args []string) {
info, _ := debug.ReadBuildInfo()
fmt.Printf("%#v\n", info)
},
}
-29
View File
@@ -1,29 +0,0 @@
package cmd
import (
"crypto/rand"
"fmt"
"math/big"
"github.com/spf13/cobra"
"sneak.berlin/x/pkg/bip39wordlist"
)
func init() {
generateCommand.AddCommand(passwordCmd)
}
var passwordCmd = &cobra.Command{
Use: "password",
Short: "Print a randomly generated password",
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("%s\n", randomPassword())
},
}
func randomPassword() string {
wl := bip39wordlist.WordListEnglish
count := len(wl)
r, err := rand.Int(rand.Reader, big.Int(count))
return wl[r]
}
-52
View File
@@ -1,52 +0,0 @@
package cmd
import (
"fmt"
"os"
"github.com/mitchellh/go-homedir"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var (
// Used for flags.
cfgFile string
userLicense string
rootCmd = &cobra.Command{
Use: "sn",
Short: "A shell utility program",
}
)
// Execute executes the root command.
func Execute() error {
return rootCmd.Execute()
}
func er(msg interface{}) {
fmt.Println("Error:", msg)
os.Exit(1)
}
func init() {
cobra.OnInitialize(initConfig)
}
func initConfig() {
home, err := homedir.Dir()
if err != nil {
er(err)
}
// Search config in home directory with name ".cobra" (without extension).
viper.AddConfigPath(home)
viper.SetConfigName(".sneak")
viper.AutomaticEnv()
if err := viper.ReadInConfig(); err == nil {
fmt.Println("Using config file:", viper.ConfigFileUsed())
}
}
-20
View File
@@ -1,20 +0,0 @@
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
func init() {
rootCmd.AddCommand(versionCmd)
}
var versionCmd = &cobra.Command{
Use: "version",
Short: "Print the version number of Hugo",
Long: `All software has versions. This is Hugo's`,
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("sn version")
},
}