From eb483bcb4f6af5825b18b33a44bda643a11e620b Mon Sep 17 00:00:00 2001 From: Alex Ottr Date: Mon, 16 Jun 2025 03:05:57 +0200 Subject: [PATCH] add cli --- .gitignore | 3 ++- cmd/nox/main.go | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 cmd/nox/main.go diff --git a/.gitignore b/.gitignore index b54af80..4590858 100644 --- a/.gitignore +++ b/.gitignore @@ -45,4 +45,5 @@ devenv.local.nix nox keys secrets -.nox-state.json \ No newline at end of file +.nox-state.json +!cmd/nox \ No newline at end of file diff --git a/cmd/nox/main.go b/cmd/nox/main.go new file mode 100644 index 0000000..ed301aa --- /dev/null +++ b/cmd/nox/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "log" + "os" + "context" + + "github.com/aottr/nox/internal/config" + "github.com/aottr/nox/internal/constants" + "github.com/aottr/nox/internal/process" + "github.com/urfave/cli/v3" +) + +func main() { + + var configPath string + + cmd := &cli.Command{ + Name: "nox", + Usage: "Manage and decrypt app secrets", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "config", + Value: constants.DefaultConfigPath, + Usage: "path to config file", + Destination: &configPath, + }, + }, + Commands: []*cli.Command{ + { + Name: "run", + Aliases: []string{"r"}, + Usage: "Fetch, decrypt, and process app secrets", + Action: func(ctx context.Context, cmd *cli.Command) error { + cfg, err := config.Load(configPath) + if err != nil { + log.Fatalf("failed to load config: %v", err) + } + return process.ProcessApps(cfg) + }, + }, + { + Name: "validate", + Aliases: []string{"v"}, + Usage: "Validate configuration and secret integrity", + Action: func(ctx context.Context, cmd *cli.Command) error { + cfg, err := config.Load(configPath) + if err != nil { + log.Fatalf("failed to load config: %v", err) + } + return process.Validate(cfg) + }, + }, + }, + } + + if err := cmd.Run(context.Background(), os.Args); err != nil { + log.Fatal(err) + } +} -- 2.51.2