intake/cmd/root.go

68 lines
1.5 KiB
Go
Raw Normal View History

2025-01-16 15:55:38 +00:00
package cmd
import (
"fmt"
2025-01-23 16:36:25 +00:00
"log"
2025-01-16 15:55:38 +00:00
"os"
2025-01-23 16:36:25 +00:00
"github.com/Jaculabilis/intake/core"
2025-01-16 15:55:38 +00:00
"github.com/spf13/cobra"
)
var rootCmd = &cobra.Command{
Use: "intake",
Short: "Universal and extensible feed aggregator",
Long: `intake, the universal and extensible feed aggregator`,
}
func Execute() {
err := rootCmd.Execute()
if err != nil {
os.Exit(1)
}
}
var dbPath string
2025-01-16 15:55:38 +00:00
func init() {
// Disable the automatic help command
rootCmd.SetHelpCommand(&cobra.Command{Hidden: true})
// All commands need to operate on a database
2025-01-17 15:05:57 +00:00
rootCmd.PersistentFlags().StringVarP(&dbPath, "db", "d", "", "Path to the intake sqlite database (default: INTAKE_DB)")
}
func getDbPath() string {
if dbPath != "" {
return dbPath
}
env := os.Getenv("INTAKE_DB")
if env != "" {
return env
}
fmt.Println("error: No database specified. Either --db or INTAKE_DB must be set.")
os.Exit(1)
return ""
2025-01-16 15:55:38 +00:00
}
2025-01-23 16:36:25 +00:00
// Attempt to open the specified database and exit with an error if it fails.
func openDb() *core.DB {
db, err := core.OpenDb(getDbPath())
if err != nil {
log.Fatalf("error: Failed to open %s", dbPath)
}
return db
}
// Attempt to open and migrate the specified database and exit with an error if it fails.
func openAndMigrateDb() *core.DB {
db := openDb()
if err := core.InitDatabase(db); err != nil {
log.Fatalf("error: Failed to init database: %v", err)
}
if err := core.MigrateDatabase(db); err != nil {
log.Fatalf("error: Failed to migrate database: %v", err)
}
return db
}