@@ -19,8 +19,11 @@ var CmdGenerate = &cobra.Command{
1919 if hrp == "" {
2020 return fmt .Errorf ("--hrp is required" )
2121 }
22- hdPath := strings .TrimSpace (cmd .Flag ("hd-path" ).Value .String ())
23- if hdPath == "" {
22+ hdPaths , err := cmd .PersistentFlags ().GetStringArray ("hd-path" )
23+ if err != nil {
24+ return err
25+ }
26+ if len (hdPaths ) == 0 {
2427 return fmt .Errorf ("--hd-path is required" )
2528 }
2629 var seed string
@@ -32,15 +35,15 @@ var CmdGenerate = &cobra.Command{
3235 if err != nil {
3336 return err
3437 }
35- return generate (hrp , hdPath , seed , formatter , os .Stdout )
38+ return generate (hrp , seed , hdPaths , formatter , os .Stdout )
3639 },
3740}
3841
3942func init () {
4043 addFlags (CmdGenerate , flagHRP , flagFormat , flagHDPath , flagSeed )
4144}
4245
43- func generate (hrp , hdPath , seed string , formatter Formatter , w io.Writer ) error {
46+ func generate (hrp , seed string , paths [] string , formatter Formatter , w io.Writer ) error {
4447 var seedBz []byte
4548 var err error
4649 if seed != "" {
@@ -49,7 +52,7 @@ func generate(hrp, hdPath, seed string, formatter Formatter, w io.Writer) error
4952 return err
5053 }
5154 }
52- key , err := GenerateExtKey (hrp , hdPath , seedBz )
55+ key , err := GenerateExtKey (hrp , paths , seedBz )
5356 if err != nil {
5457 return err
5558 }
@@ -61,9 +64,10 @@ func generate(hrp, hdPath, seed string, formatter Formatter, w io.Writer) error
6164 return nil
6265}
6366
64- func GenerateExtKey (hrp , hdPath string , seedBz []byte ) (SomeKey , error ) {
67+ func GenerateExtKey (hrp string , paths [] string , seedBz []byte ) (SomeKey , error ) {
6568 var seed []byte
6669 var err error
70+ var mnemonic string
6771 if seedBz == nil {
6872 var entropy []byte
6973 entropy , err = bip39 .NewEntropy (256 )
@@ -87,14 +91,14 @@ func GenerateExtKey(hrp, hdPath string, seedBz []byte) (SomeKey, error) {
8791 Hrp : hrp ,
8892 Seed : base64 .URLEncoding .EncodeToString (seed ),
8993 Mnemonic : mnemonic ,
90- RootKey : NewExtKeyData (rootKey , hrp ),
94+ RootKey : NewExtKeyData (rootKey , hrp , "" ),
9195 }
92- if hdPath != "" {
93- childKey , err := DeriveChildKey (rootKey , hdPath )
96+ for _ , path := range paths {
97+ childKey , err := DeriveChildKey (rootKey , path )
9498 if err != nil {
9599 return SomeKey {}, err
96100 }
97- key .ChildKey = NewExtKeyData (childKey , hrp )
101+ key .ChildKeys = append ( key . ChildKeys , NewExtKeyData (childKey , hrp , path ) )
98102 }
99103 return key , nil
100104}
0 commit comments