Files
zeekay 579f53c3cc chore: remove local replace directives and update dependencies
- Update github.com/luxfi/netrunner v1.15.3 → v1.15.4
- Update github.com/luxfi/node v1.22.77 → v1.22.80
- Remove local replace directive for netrunner
- Use published package versions for reproducible builds
2026-01-03 07:09:01 -08:00

111 lines
2.4 KiB
Go

// Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package contract
import (
"fmt"
cmdflags "github.com/luxfi/cli/cmd/flags"
"github.com/luxfi/cli/pkg/application"
"github.com/luxfi/cli/pkg/key"
"github.com/luxfi/sdk/models"
"github.com/spf13/cobra"
)
type PrivateKeyFlags struct {
privateKeyFlagName string
keyFlagName string
genesisKeyFlagName string
PrivateKey string
KeyName string
GenesisKey bool
}
const (
defaultPrivateKeyFlagName = "private-key"
defaultKeyFlagName = "key"
defaultGenesisKeyFlagName = "genesis-key"
)
func (pkf *PrivateKeyFlags) fillDefaultFlagNames() {
if pkf.privateKeyFlagName == "" {
pkf.privateKeyFlagName = defaultPrivateKeyFlagName
}
if pkf.keyFlagName == "" {
pkf.keyFlagName = defaultKeyFlagName
}
if pkf.genesisKeyFlagName == "" {
pkf.genesisKeyFlagName = defaultGenesisKeyFlagName
}
}
func (pkf *PrivateKeyFlags) SetFlagNames(
privateKeyFlagName string,
keyFlagName string,
genesisKeyFlagName string,
) {
pkf.privateKeyFlagName = privateKeyFlagName
pkf.keyFlagName = keyFlagName
pkf.genesisKeyFlagName = genesisKeyFlagName
}
func (pkf *PrivateKeyFlags) AddToCmd(
cmd *cobra.Command,
goal string,
) {
pkf.fillDefaultFlagNames()
cmd.Flags().StringVar(
&pkf.PrivateKey,
pkf.privateKeyFlagName,
"",
fmt.Sprintf("private key to use %s", goal),
)
cmd.Flags().StringVar(
&pkf.KeyName,
pkf.keyFlagName,
"",
fmt.Sprintf("CLI stored key to use %s", goal),
)
cmd.Flags().BoolVar(
&pkf.GenesisKey,
pkf.genesisKeyFlagName,
false,
fmt.Sprintf("use genesis allocated key %s", goal),
)
}
func (pkf *PrivateKeyFlags) GetPrivateKey(
app *application.Lux,
genesisPrivateKey string,
) (string, error) {
pkf.fillDefaultFlagNames()
if !cmdflags.EnsureMutuallyExclusive([]bool{
pkf.PrivateKey != "",
pkf.KeyName != "",
pkf.GenesisKey,
}) {
return "", fmt.Errorf("%s, %s and %s are mutually exclusive flags",
pkf.privateKeyFlagName,
pkf.keyFlagName,
pkf.genesisKeyFlagName,
)
}
privateKey := pkf.PrivateKey
if pkf.KeyName != "" {
// Load the key to get the private key hex
network := models.NewLocalNetwork()
keyPath := app.GetKeyPath(pkf.KeyName)
k, err := key.LoadSoft(network.ID(), keyPath)
if err != nil {
return "", err
}
privateKey = k.PrivKeyHex()
}
if pkf.GenesisKey {
privateKey = genesisPrivateKey
}
return privateKey, nil
}