51 lines
1.2 KiB
Go
51 lines
1.2 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: "localhost",
|
|
ListenPort: 8080,
|
|
DataDir: "./data",
|
|
}
|
|
rootCmd = &cobra.Command{Use: "aethera"}
|
|
)
|
|
|
|
func init() {
|
|
rootCmd.PersistentFlags().StringVar(¶ms.DataDir, "data-dir", "data", "Directory to store generated images")
|
|
rootCmd.PersistentFlags().StringVar(¶ms.ListenAddr, "listen", "localhost", "Address to listen on")
|
|
rootCmd.PersistentFlags().IntVar(¶ms.ListenPort, "port", 8080, "Port to listen on")
|
|
}
|
|
|
|
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.ListenAddr, params.ListenPort)
|
|
}
|
|
|
|
if err := rootCmd.Execute(); err != nil {
|
|
logrus.Fatal(err)
|
|
os.Exit(1)
|
|
}
|
|
}
|