diff --git a/cmd/lemcmd/lem.go b/cmd/lemcmd/lem.go index 74886f0..d8556a3 100644 --- a/cmd/lemcmd/lem.go +++ b/cmd/lemcmd/lem.go @@ -19,6 +19,7 @@ func AddLEMCommands(root *cli.Command) { addExportCommands(root) addMonCommands(root) addInfraCommands(root) + addSetupCommands(root) } // envOr returns the environment variable value, or the fallback if not set. diff --git a/cmd/lemcmd/setup.go b/cmd/lemcmd/setup.go new file mode 100644 index 0000000..8ae4709 --- /dev/null +++ b/cmd/lemcmd/setup.go @@ -0,0 +1,26 @@ +// setup.go — CLI registration for `lem setup` commands. +package lemcmd + +import ( + "forge.lthn.ai/core/cli/pkg/cli" + "forge.lthn.ai/lthn/lem/pkg/lem" +) + +func addSetupCommands(root *cli.Command) { + setupGroup := cli.NewGroup("setup", "Setup commands", "Initialise LEM data and environment.") + + var dataCfg lem.SetupOpts + dataCmd := cli.NewCommand("data", "Hydrate cold storage into DuckDB + InfluxDB", "", + func(cmd *cli.Command, args []string) error { + return lem.RunSetup(dataCfg) + }, + ) + cli.StringFlag(dataCmd, &dataCfg.Root, "root", "", ".", "LEM repo root directory") + cli.StringFlag(dataCmd, &dataCfg.DB, "db", "", "", "DuckDB path (defaults to LEM_DB env, then ./lem.duckdb)") + cli.StringFlag(dataCmd, &dataCfg.Influx, "influx", "", "", "InfluxDB URL (default http://10.69.69.165:8181)") + cli.StringFlag(dataCmd, &dataCfg.InfluxDB, "influx-db", "", "", "InfluxDB database (default training)") + cli.BoolFlag(dataCmd, &dataCfg.SkipInflux, "skip-influx", "", false, "Skip InfluxDB backfill") + setupGroup.AddCommand(dataCmd) + + root.AddCommand(setupGroup) +}