package imp import ( "fmt" "net/url" "git.cryptic.systems/volker.raschek/flucky/pkg/config" "git.cryptic.systems/volker.raschek/flucky/pkg/repository" "git.cryptic.systems/volker.raschek/go-logger" "github.com/spf13/cobra" ) var ( importSensors bool importHumidities bool importPressures bool importTemperatures bool ) func InitCmd(cmd *cobra.Command) error { importCmd := &cobra.Command{ Use: "import", Short: "Import data from passed URL", RunE: importSources, } importCmd.Flags().BoolVar(&importSensors, "sensors", true, "Import sensors") importCmd.Flags().BoolVar(&importHumidities, "humidities", true, "Import humidities") importCmd.Flags().BoolVar(&importPressures, "pressures", true, "Import pressures") importCmd.Flags().BoolVar(&importTemperatures, "temperatures", true, "Import temperatures") cmd.AddCommand(importCmd) return nil } func importSources(cmd *cobra.Command, args []string) error { configFile, err := cmd.Flags().GetString("config") if err != nil { return fmt.Errorf("No config file defined") } cnf, err := config.Read(configFile) if err != nil { return err } destURL, err := url.Parse(cnf.DSN) if err != nil { return err } logLevelString, err := cmd.Flags().GetString("loglevel") if err != nil { return err } logLevel, err := logger.ParseLogLevel(logLevelString) if err != nil { return err } flogger := logger.NewLogger(logLevel) sourceURL, err := url.Parse(args[0]) if err != nil { return fmt.Errorf("Failed to parse source url: %w", err) } err = repository.Import(sourceURL, destURL, flogger, repository.OptImport{ Sensors: importSensors, Humidities: importHumidities, Pressures: importPressures, Temperatures: importTemperatures, }) if err != nil { return fmt.Errorf("Failed to import: %w", err) } return nil }