- Remove `api_endpoint` from Settings model and settings UI - Add `--llm-endpoint` / `AETHERA_LLM_ENDPOINT` and `--llm-key` / `AETHERA_LLM_KEY` CLI flags (endpoint is required) - Update client constructor to accept API key parameter - Update tests and documentation to reflect new configuration approach BREAKING CHANGE: LLM endpoint and key must now be provided via `AETHERA_LLM_ENDPOINT` and `AETHERA_LLM_KEY` environment variables or CLI flags instead of the Settings page.
57 lines
2.0 KiB
Go
57 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/spf13/cobra"
|
|
|
|
"reichard.io/aethera/internal/server"
|
|
"reichard.io/aethera/internal/store"
|
|
)
|
|
|
|
var (
|
|
params = cliParams{
|
|
ListenAddr: getEnvOrDefault("LISTEN", "localhost"),
|
|
ListenPort: getEnvIntOrDefault("PORT", 8080),
|
|
DataDir: getEnvOrDefault("DATA_DIR", "./data"),
|
|
StaticDir: getEnvOrDefault("STATIC_DIR", ""),
|
|
LLMEndpoint: getEnvOrDefault("LLM_ENDPOINT", ""),
|
|
LLMKey: getEnvOrDefault("LLM_KEY", ""),
|
|
}
|
|
rootCmd = &cobra.Command{Use: "aethera"}
|
|
)
|
|
|
|
func init() {
|
|
rootCmd.PersistentFlags().StringVar(¶ms.DataDir, "data-dir", params.DataDir, "Directory to store generated images (env: AETHERA_DATA_DIR)")
|
|
rootCmd.PersistentFlags().StringVar(¶ms.StaticDir, "static-dir", params.StaticDir, "Directory to serve static frontend files from instead of embedded assets (env: AETHERA_STATIC_DIR)")
|
|
rootCmd.PersistentFlags().StringVar(¶ms.ListenAddr, "listen", params.ListenAddr, "Address to listen on (env: AETHERA_LISTEN)")
|
|
rootCmd.PersistentFlags().IntVar(¶ms.ListenPort, "port", params.ListenPort, "Port to listen on (env: AETHERA_PORT)")
|
|
rootCmd.PersistentFlags().StringVar(¶ms.LLMEndpoint, "llm-endpoint", params.LLMEndpoint, "LLM API endpoint URL (env: AETHERA_LLM_ENDPOINT)")
|
|
rootCmd.PersistentFlags().StringVar(¶ms.LLMKey, "llm-key", params.LLMKey, "LLM API key (env: AETHERA_LLM_KEY)")
|
|
}
|
|
|
|
func main() {
|
|
// Validate Params
|
|
if err := params.Validate(); err != nil {
|
|
logrus.Fatalf("failed to validate parameters: %v", err)
|
|
}
|
|
|
|
// Initialize Store
|
|
fileStore, err := store.NewFileStore(path.Join(params.DataDir, "settings.json"))
|
|
if err != nil {
|
|
logrus.Fatalf("failed to create store: %v", err)
|
|
}
|
|
|
|
// Start Server
|
|
rootCmd.Run = func(cmd *cobra.Command, args []string) {
|
|
server.StartServer(fileStore, params.DataDir, params.StaticDir, params.ListenAddr, params.ListenPort, params.LLMEndpoint, params.LLMKey)
|
|
}
|
|
|
|
if err := rootCmd.Execute(); err != nil {
|
|
logrus.Fatal(err)
|
|
os.Exit(1)
|
|
}
|
|
}
|