From ebe70023ecca7807b593fc0a345b3e450ffc869b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:40:03 -0300 Subject: [PATCH 1/4] feat!: rename --config-file flag to --file (-f) --- src/cmds/flags/flags.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cmds/flags/flags.go b/src/cmds/flags/flags.go index aafa5ce1..e620d82d 100644 --- a/src/cmds/flags/flags.go +++ b/src/cmds/flags/flags.go @@ -11,9 +11,11 @@ var DefaultKurtosisPackage string = "" //nolint:gochecknoglobals // these are constants var ( ConfigFilePathFlag = cli.StringFlag{ - Name: "config-file", - Usage: "Path to the devnet configuration file", - Value: "devnet.yaml", + Name: "file", + TakesFile: true, + Aliases: []string{"f"}, + Usage: "Path to the devnet configuration file", + Value: "devnet.yaml", } // NOTE: this flag is for internal use. From e625dbd771608032744ea815482592ead810ca36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:43:39 -0300 Subject: [PATCH 2/4] feat!: make all functions receive the --file flag --- cmd/devnet/main.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/devnet/main.go b/cmd/devnet/main.go index 4a90a16c..a80e66a4 100644 --- a/cmd/devnet/main.go +++ b/cmd/devnet/main.go @@ -18,12 +18,16 @@ func main() { app.Version = version app.Flags = append(app.Flags, &flags.KurtosisPackageFlag) + commonFlags := []cli.Flag{ + &flags.ConfigFilePathFlag, + } + app.Commands = append(app.Commands, &cli.Command{ Name: "init", Usage: "Initialize a devnet configuration file", Args: true, ArgsUsage: "[]", - Flags: []cli.Flag{}, + Flags: commonFlags, Action: cmds.InitCmd, }) @@ -32,7 +36,7 @@ func main() { Usage: "Start devnet from configuration file", Args: true, ArgsUsage: "[]", - Flags: []cli.Flag{}, + Flags: append(commonFlags, &flags.KurtosisPackageFlag), Action: cmds.StartCmd, }) @@ -41,7 +45,7 @@ func main() { Usage: "Stop devnet from configuration file", Args: true, ArgsUsage: "[]", - Flags: []cli.Flag{}, + Flags: commonFlags, Action: cmds.StopCmd, }) @@ -50,7 +54,7 @@ func main() { Usage: "Get a devnet contract or EOA address", Args: true, ArgsUsage: "...", - Flags: []cli.Flag{&flags.ConfigFilePathFlag}, + Flags: commonFlags, Action: cmds.GetAddress, }) @@ -59,7 +63,7 @@ func main() { Usage: "Get the published ports on the devnet", Args: true, ArgsUsage: "[]", - Flags: []cli.Flag{}, + Flags: commonFlags, Action: cmds.GetPorts, }) From ed8383d45c0937fba849db776286cf2be5a0144c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:51:31 -0300 Subject: [PATCH 3/4] feat!: remove positional arguments on subcommands --- cmd/devnet/main.go | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/cmd/devnet/main.go b/cmd/devnet/main.go index a80e66a4..99f8f4c5 100644 --- a/cmd/devnet/main.go +++ b/cmd/devnet/main.go @@ -16,37 +16,30 @@ func main() { app.Name = "devnet" app.Usage = "start an AVS devnet" app.Version = version - app.Flags = append(app.Flags, &flags.KurtosisPackageFlag) commonFlags := []cli.Flag{ &flags.ConfigFilePathFlag, } app.Commands = append(app.Commands, &cli.Command{ - Name: "init", - Usage: "Initialize a devnet configuration file", - Args: true, - ArgsUsage: "[]", - Flags: commonFlags, - Action: cmds.InitCmd, + Name: "init", + Usage: "Initialize a devnet configuration file", + Flags: commonFlags, + Action: cmds.InitCmd, }) app.Commands = append(app.Commands, &cli.Command{ - Name: "start", - Usage: "Start devnet from configuration file", - Args: true, - ArgsUsage: "[]", - Flags: append(commonFlags, &flags.KurtosisPackageFlag), - Action: cmds.StartCmd, + Name: "start", + Usage: "Start devnet from configuration file", + Flags: append(commonFlags, &flags.KurtosisPackageFlag), + Action: cmds.StartCmd, }) app.Commands = append(app.Commands, &cli.Command{ - Name: "stop", - Usage: "Stop devnet from configuration file", - Args: true, - ArgsUsage: "[]", - Flags: commonFlags, - Action: cmds.StopCmd, + Name: "stop", + Usage: "Stop devnet from configuration file", + Flags: commonFlags, + Action: cmds.StopCmd, }) app.Commands = append(app.Commands, &cli.Command{ @@ -59,12 +52,10 @@ func main() { }) app.Commands = append(app.Commands, &cli.Command{ - Name: "get-ports", - Usage: "Get the published ports on the devnet", - Args: true, - ArgsUsage: "[]", - Flags: commonFlags, - Action: cmds.GetPorts, + Name: "get-ports", + Usage: "Get the published ports on the devnet", + Flags: commonFlags, + Action: cmds.GetPorts, }) if err := app.Run(os.Args); err != nil { From 97ef154d9c92a03a9c58694cfda9d4cd2479f14a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Gr=C3=BCner?= <47506558+MegaRedHand@users.noreply.github.com> Date: Wed, 22 Jan 2025 10:28:09 -0300 Subject: [PATCH 4/4] feat!: have name flag only --- cmd/devnet/main.go | 30 ++++++++++++++++-------------- src/cmds/flags/flags.go | 13 +++++++------ src/cmds/get_address.go | 6 +----- src/cmds/get_ports.go | 6 ++---- src/cmds/init.go | 2 +- src/cmds/start.go | 3 ++- src/cmds/stop.go | 8 +++----- src/cmds/utils.go | 30 +++++++----------------------- 8 files changed, 39 insertions(+), 59 deletions(-) diff --git a/cmd/devnet/main.go b/cmd/devnet/main.go index 99f8f4c5..bb44e490 100644 --- a/cmd/devnet/main.go +++ b/cmd/devnet/main.go @@ -17,28 +17,30 @@ func main() { app.Usage = "start an AVS devnet" app.Version = version - commonFlags := []cli.Flag{ - &flags.ConfigFilePathFlag, - } - app.Commands = append(app.Commands, &cli.Command{ - Name: "init", - Usage: "Initialize a devnet configuration file", - Flags: commonFlags, - Action: cmds.InitCmd, + Name: "init", + Usage: "Initialize a devnet configuration file", + Args: true, + ArgsUsage: "[]", + Action: cmds.InitCmd, }) app.Commands = append(app.Commands, &cli.Command{ - Name: "start", - Usage: "Start devnet from configuration file", - Flags: append(commonFlags, &flags.KurtosisPackageFlag), + Name: "start", + Usage: "Start devnet from configuration file", + Args: true, + ArgsUsage: "[]", + Flags: []cli.Flag{ + &flags.DevnetNameFlag, + &flags.KurtosisPackageFlag, + }, Action: cmds.StartCmd, }) app.Commands = append(app.Commands, &cli.Command{ Name: "stop", Usage: "Stop devnet from configuration file", - Flags: commonFlags, + Flags: []cli.Flag{&flags.DevnetNameFlag}, Action: cmds.StopCmd, }) @@ -47,14 +49,14 @@ func main() { Usage: "Get a devnet contract or EOA address", Args: true, ArgsUsage: "...", - Flags: commonFlags, + Flags: []cli.Flag{&flags.DevnetNameFlag}, Action: cmds.GetAddress, }) app.Commands = append(app.Commands, &cli.Command{ Name: "get-ports", Usage: "Get the published ports on the devnet", - Flags: commonFlags, + Flags: []cli.Flag{&flags.DevnetNameFlag}, Action: cmds.GetPorts, }) diff --git a/src/cmds/flags/flags.go b/src/cmds/flags/flags.go index e620d82d..635cf401 100644 --- a/src/cmds/flags/flags.go +++ b/src/cmds/flags/flags.go @@ -10,12 +10,13 @@ var DefaultKurtosisPackage string = "" //nolint:gochecknoglobals // these are constants var ( - ConfigFilePathFlag = cli.StringFlag{ - Name: "file", - TakesFile: true, - Aliases: []string{"f"}, - Usage: "Path to the devnet configuration file", - Value: "devnet.yaml", + DevnetNameFlag = cli.StringFlag{ + Name: "name", + TakesFile: true, + Aliases: []string{"n"}, + Usage: "Assign a name to the devnet", + Value: "devnet", + DefaultText: "devnet", } // NOTE: this flag is for internal use. diff --git a/src/cmds/get_address.go b/src/cmds/get_address.go index cbf20e56..270c0563 100644 --- a/src/cmds/get_address.go +++ b/src/cmds/get_address.go @@ -14,11 +14,7 @@ import ( func GetAddress(ctx *cli.Context) error { args := ctx.Args() - configFileName := ctx.String(flags.ConfigFilePathFlag.Name) - devnetName, err := EnclaveNameFromFileName(configFileName) - if err != nil { - return cli.Exit(err, 1) - } + devnetName := flags.DevnetNameFlag.Get(ctx) kurtosisCtx, err := kurtosis.InitKurtosisContext() if err != nil { diff --git a/src/cmds/get_ports.go b/src/cmds/get_ports.go index 1731ce6f..3ffe5962 100644 --- a/src/cmds/get_ports.go +++ b/src/cmds/get_ports.go @@ -3,16 +3,14 @@ package cmds import ( "fmt" + "github.com/Layr-Labs/avs-devnet/src/cmds/flags" "github.com/Layr-Labs/avs-devnet/src/kurtosis" "github.com/urfave/cli/v2" "gopkg.in/yaml.v3" ) func GetPorts(ctx *cli.Context) error { - devnetName, _, err := parseArgs(ctx) - if err != nil { - return cli.Exit(err, 1) - } + devnetName := flags.DevnetNameFlag.Get(ctx) kurtosisCtx, err := kurtosis.InitKurtosisContext() if err != nil { diff --git a/src/cmds/init.go b/src/cmds/init.go index 89bca704..a490ab9b 100644 --- a/src/cmds/init.go +++ b/src/cmds/init.go @@ -11,7 +11,7 @@ import ( // Creates a new devnet configuration with the given context. func InitCmd(ctx *cli.Context) error { - _, configFileName, err := parseArgs(ctx) + configFileName, err := parseConfigFileName(ctx) if err != nil { return cli.Exit(err, 1) } diff --git a/src/cmds/start.go b/src/cmds/start.go index 990efe9b..b4f54b70 100644 --- a/src/cmds/start.go +++ b/src/cmds/start.go @@ -24,7 +24,8 @@ import ( // Starts the devnet with the given context. func StartCmd(ctx *cli.Context) error { pkgName := flags.KurtosisPackageFlag.Get(ctx) - devnetName, configPath, err := parseArgs(ctx) + devnetName := flags.DevnetNameFlag.Get(ctx) + configPath, err := parseConfigFileName(ctx) if err != nil { return cli.Exit(err, 1) } diff --git a/src/cmds/stop.go b/src/cmds/stop.go index 2710cd1e..03cd8554 100644 --- a/src/cmds/stop.go +++ b/src/cmds/stop.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" + "github.com/Layr-Labs/avs-devnet/src/cmds/flags" "github.com/Layr-Labs/avs-devnet/src/kurtosis" "github.com/urfave/cli/v2" ) @@ -13,12 +14,9 @@ var ErrEnclaveNotExists = errors.New("enclave doesn't exist") // Stops the devnet with the given context. func StopCmd(ctx *cli.Context) error { - devnetName, _, err := parseArgs(ctx) - if err != nil { - return cli.Exit(err, 1) - } + devnetName := flags.DevnetNameFlag.Get(ctx) fmt.Println("Stopping devnet...") - err = Stop(ctx.Context, devnetName) + err := Stop(ctx.Context, devnetName) if errors.Is(err, ErrEnclaveNotExists) { return cli.Exit("Failed to find '"+devnetName+"'. Maybe it's not running?", 1) } else if err != nil { diff --git a/src/cmds/utils.go b/src/cmds/utils.go index 6eac948e..7fc9364d 100644 --- a/src/cmds/utils.go +++ b/src/cmds/utils.go @@ -3,34 +3,25 @@ package cmds import ( "errors" "os" - "path/filepath" "regexp" "strings" "github.com/urfave/cli/v2" ) -// Parses the main arguments from the given context. -// Returns the devnet name and the configuration file name. -func parseArgs(ctx *cli.Context) (string, string, error) { +// Parses the configuration file path from the positional args. +// Fails if more than one positional arg is provided. +func parseConfigFileName(ctx *cli.Context) (string, error) { args := ctx.Args() if args.Len() > 1 { - return "", "", errors.New("expected exactly 1 argument: ") + return "", errors.New("expected none or 1 argument: []") } fileName := args.First() - var devnetName string - + // TODO: check file exists and support yml extension if fileName == "" { - fileName = "devnet.yaml" - devnetName = "devnet" - } else { - name, err := EnclaveNameFromFileName(fileName) - if err != nil { - return "", "", err - } - devnetName = name + return "devnet.yaml", nil } - return devnetName, fileName, nil + return fileName, nil } // Checks if a file exists at the given path. @@ -39,13 +30,6 @@ func fileExists(filePath string) bool { return !errors.Is(err, os.ErrNotExist) } -// Extracts the devnet name from the given configuration file name. -func EnclaveNameFromFileName(fileName string) (string, error) { - name := filepath.Base(fileName) - name = strings.Split(name, ".")[0] - return ToValidEnclaveName(name) -} - func ToValidEnclaveName(name string) (string, error) { for _, r := range []string{"_", "/", "."} { name = strings.ReplaceAll(name, r, "-")