package cmd import ( "fmt" "log" "time" "github.com/Jaculabilis/intake/core" "github.com/spf13/cobra" ) var sourceTestCmd = &cobra.Command{ Use: "test [flags] -- argv", Short: "Test a fetch action", Long: fmt.Sprintf(`Execute a command as if it were a feed source's fetch action. Source-level configuration that is normally set via environment variable, such as INTAKE_TTL, will not be applied by --env. %s`, makeFormatHelpText()), Run: func(cmd *cobra.Command, args []string) { sourceTest(stringArrayArg(cmd, "env"), stringArg(cmd, "format"), getArgv(cmd, args)) }, } func init() { sourceCmd.AddCommand(sourceTestCmd) sourceTestCmd.Flags().StringArrayP("env", "e", nil, "Environment variables to set, in the form KEY=VAL") sourceTestCmd.Flags().StringP("format", "f", "headlines", "Feed format for returned items.") } func sourceTest(env []string, format string, cmd []string) { formatter := formatAs(format) items, state, _, err := core.Execute("test", cmd, env, nil, "", time.Minute, nil) log.Printf("returned %d items", len(items)) log.Printf("wrote %d bytes of state", len(state)) if err != nil { log.Fatal(err) } for _, item := range items { fmt.Println(formatter(item)) } }