Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion cmd/account/link_key/link_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
return h.Execute(inputs)
},
}
settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)
settings.AddSkipConfirmation(cmd)
cmd.Flags().StringP("owner-label", "l", "", "Label for the workflow owner")

Expand Down Expand Up @@ -327,6 +327,11 @@ func (h *handler) linkOwner(resp initiateLinkingResponse) error {
fmt.Println("")
fmt.Printf(" %x\n", txOut.RawTx.Data)
fmt.Println("")

case client.Changeset:
// TODO: implement changeset handling
fmt.Println("Changeset output type is not yet implemented")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
7 changes: 6 additions & 1 deletion cmd/account/unlink_key/unlink_key.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
return h.Execute(in)
},
}
settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)
settings.AddSkipConfirmation(cmd)
return cmd
}
Expand Down Expand Up @@ -285,6 +285,11 @@ func (h *handler) unlinkOwner(owner string, resp initiateUnlinkingResponse) erro
fmt.Println("")
fmt.Printf(" %s\n", resp.TransactionData)
fmt.Println("")

case client.Changeset:
// TODO: implement changeset handling
fmt.Println("Changeset output type is not yet implemented")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
2 changes: 2 additions & 0 deletions cmd/client/client_factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ func (f *factoryImpl) GetTxType() TxType {
return Raw
} else if f.viper.GetBool(settings.Flags.Ledger.Name) {
return Ledger
} else if f.viper.GetBool(settings.Flags.Changeset.Name) {
return Changeset
}
return Regular
}
Expand Down
15 changes: 15 additions & 0 deletions cmd/client/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ const (
Regular TxType = iota
Raw
Ledger
Changeset
)

type TxClientConfig struct {
Expand Down Expand Up @@ -223,6 +224,20 @@ func (c *TxClient) executeTransactionByTxType(txFn func(opts *bind.TransactOpts)
Args: cmdCommon.ToStringSlice(args),
},
}, nil
case Changeset:
tx, err := txFn(cmdCommon.SimTransactOpts())
if err != nil {
return TxOutput{Type: Changeset}, err
}
return TxOutput{
Type: Changeset,
RawTx: RawTx{
To: tx.To().Hex(),
Data: []byte{},
Function: funName,
Args: cmdCommon.ToStringSlice(args),
},
}, nil
//case Ledger:
// txOpts, err := c.ledgerOpts(c.ledgerConfig)
// if err != nil {
Expand Down
1 change: 1 addition & 0 deletions cmd/secrets/common/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ func (h *Handler) ValidateInputs(inputs UpsertSecretsInputs) error {
}

// TODO: use TxType interface
// TODO: implement changeset handling
func (h *Handler) PackAllowlistRequestTxData(reqDigest [32]byte, duration time.Duration) (string, error) {
contractABI, err := abi.JSON(strings.NewReader(workflow_registry_wrapper_v2.WorkflowRegistryMetaData.ABI))
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion cmd/secrets/create/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ func New(ctx *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)
return cmd
}
2 changes: 1 addition & 1 deletion cmd/secrets/delete/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func New(ctx *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)
return cmd
}

Expand Down
2 changes: 1 addition & 1 deletion cmd/secrets/execute/execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ func New(ctx *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)

return cmd
}
2 changes: 1 addition & 1 deletion cmd/secrets/list/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func New(ctx *runtime.Context) *cobra.Command {
}

cmd.Flags().StringVar(&namespace, "namespace", "main", "Namespace to list (default: main)")
settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)

return cmd
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/secrets/update/update.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func New(ctx *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(cmd)
settings.AddTxnTypeFlags(cmd)

return cmd
}
7 changes: 6 additions & 1 deletion cmd/workflow/activate/activate.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(activateCmd)
settings.AddTxnTypeFlags(activateCmd)
settings.AddSkipConfirmation(activateCmd)

return activateCmd
Expand Down Expand Up @@ -196,6 +196,11 @@ func (h *handler) Execute() error {
fmt.Println("")
fmt.Printf(" %x\n", txOut.RawTx.Data)
fmt.Println("")

case client.Changeset:
// TODO: implement changeset handling
fmt.Println("Changeset output type is not yet implemented")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
7 changes: 6 additions & 1 deletion cmd/workflow/delete/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(deleteCmd)
settings.AddTxnTypeFlags(deleteCmd)
settings.AddSkipConfirmation(deleteCmd)

return deleteCmd
Expand Down Expand Up @@ -208,6 +208,11 @@ func (h *handler) Execute() error {
fmt.Println("")
fmt.Printf(" %x\n", txOut.RawTx.Data)
fmt.Println("")

case client.Changeset:
// TODO: implement changeset handling
fmt.Println("Changeset output type is not yet implemented")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/workflow/deploy/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(deployCmd)
settings.AddTxnTypeFlags(deployCmd)
settings.AddSkipConfirmation(deployCmd)
deployCmd.Flags().StringP("output", "o", defaultOutputPath, "The output file for the compiled WASM binary encoded in base64")
deployCmd.Flags().StringP("owner-label", "l", "", "Label for the workflow owner (used during auto-link if owner is not already linked)")
Expand Down
68 changes: 68 additions & 0 deletions cmd/workflow/deploy/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,39 @@ package deploy
import (
"encoding/hex"
"fmt"
"os"
"path/filepath"

"github.com/ethereum/go-ethereum/common"
"gopkg.in/yaml.v2"

"github.com/smartcontractkit/cre-cli/cmd/client"
)

type ChangesetFile struct {
Changesets []Changeset `yaml:"changesets"`
}

type Changeset struct {
WorkflowUpsert WorkflowUpsert `yaml:"workflow_upsert"`
}

type WorkflowUpsert struct {
Payload Payload `yaml:"payload"`
}

type Payload struct {
WorkflowID string `yaml:"workflowID"`
WorkflowName string `yaml:"workflowName"`
WorkflowTag string `yaml:"workflowTag"`
WorkflowStatus uint8 `yaml:"workflowStatus"`
DonFamily string `yaml:"donFamily"`
BinaryURL string `yaml:"binaryURL"`
ConfigURL string `yaml:"configURL"`
Attributes string `yaml:"attributes"`
KeepAlive bool `yaml:"keepAlive"`
}

func (h *handler) upsert() error {
if !h.validated {
return fmt.Errorf("handler inputs not validated")
Expand Down Expand Up @@ -84,6 +111,47 @@ func (h *handler) handleUpsert(params client.RegisterWorkflowV2Parameters) error
fmt.Println("")
fmt.Printf(" %x\n", txOut.RawTx.Data)
fmt.Println("")

case client.Changeset:
csFile := ChangesetFile{
Changesets: []Changeset{
{
WorkflowUpsert: WorkflowUpsert{
Payload: Payload{
WorkflowID: hex.EncodeToString(params.WorkflowID[:]),
WorkflowName: params.WorkflowName,
WorkflowTag: params.Tag,
WorkflowStatus: params.Status,
DonFamily: params.DonFamily,
BinaryURL: params.BinaryURL,
ConfigURL: params.ConfigURL,
Attributes: string(params.Attributes),
KeepAlive: params.KeepAlive,
},
},
},
},
}

yamlData, err := yaml.Marshal(&csFile)
if err != nil {
return fmt.Errorf("failed to marshal changeset to yaml: %w", err)
}

fileName := fmt.Sprintf("UpsertWorkflow_%s_%s.yaml", workflowName, h.workflowArtifact.WorkflowID)
workingDir, err := os.Getwd()
if err != nil {
return fmt.Errorf("failed to get working directory: %w", err)
}
if err := os.WriteFile(fileName, yamlData, 0600); err != nil {
return fmt.Errorf("failed to write changeset yaml file: %w", err)
}

fmt.Println("")
fmt.Println("Changeset YAML file generated!")
fmt.Printf("File: %s\n", filepath.Join(workingDir, fileName))
fmt.Println("")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
7 changes: 6 additions & 1 deletion cmd/workflow/pause/pause.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func New(runtimeContext *runtime.Context) *cobra.Command {
},
}

settings.AddRawTxFlag(pauseCmd)
settings.AddTxnTypeFlags(pauseCmd)
settings.AddSkipConfirmation(pauseCmd)
return pauseCmd
}
Expand Down Expand Up @@ -197,6 +197,11 @@ func (h *handler) Execute() error {
fmt.Println("")
fmt.Printf(" %x\n", txOut.RawTx.Data)
fmt.Println("")

case client.Changeset:
// TODO: implement changeset handling
fmt.Println("Changeset output type is not yet implemented")

default:
h.log.Warn().Msgf("Unsupported transaction type: %s", txOut.Type)
}
Expand Down
15 changes: 9 additions & 6 deletions internal/settings/settings_load.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ type flagNames struct {
OverridePreviousRoot Flag
Description Flag
RawTxFlag Flag
Changeset Flag
Ledger Flag
LedgerDerivationPath Flag
NonInteractive Flag
Expand All @@ -52,20 +53,22 @@ var Flags = flagNames{
Target: Flag{"target", "T"},
OverridePreviousRoot: Flag{"override-previous-root", "O"},
RawTxFlag: Flag{"unsigned", ""},
Changeset: Flag{"changeset", ""},
Ledger: Flag{"ledger", ""},
LedgerDerivationPath: Flag{"ledger-derivation-path", ""},
NonInteractive: Flag{"non-interactive", ""},
SkipConfirmation: Flag{"yes", "y"},
}

func AddTxnTypeFlags(cmd *cobra.Command) {
AddRawTxFlag(cmd)
cmd.Flags().Bool(Flags.Ledger.Name, false, "Sign the workflow with a Ledger device [EXPERIMENTAL]")
cmd.Flags().String(Flags.LedgerDerivationPath.Name, "m/44'/60'/0'/0/0", "Derivation path for the Ledger device")
}
//func AddTxnTypeFlags(cmd *cobra.Command) {
// AddTxnTypeFlags(cmd)
// cmd.Flags().Bool(Flags.Ledger.Name, false, "Sign the workflow with a Ledger device [EXPERIMENTAL]")
// cmd.Flags().String(Flags.LedgerDerivationPath.Name, "m/44'/60'/0'/0/0", "Derivation path for the Ledger device")
//}

func AddRawTxFlag(cmd *cobra.Command) {
func AddTxnTypeFlags(cmd *cobra.Command) {
cmd.Flags().Bool(Flags.RawTxFlag.Name, false, "If set, the command will either return the raw transaction instead of sending it to the network or execute the second step of secrets operations using a previously generated raw transaction")
cmd.Flags().Bool(Flags.Changeset.Name, false, "If set, the command will output a changeset YAML for use with CLD instead of sending the transaction to the network")
}

func AddSkipConfirmation(cmd *cobra.Command) {
Expand Down
Loading