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. %s`, makeFormatHelpText()), Run: func(cmd *cobra.Command, args []string) { l := cmd.Flags().ArgsLenAtDash() if l == -1 { sourceTest(nil) } else { sourceTest(args[l:]) } }, } var testEnv []string var testFormat string func init() { sourceCmd.AddCommand(sourceTestCmd) sourceTestCmd.Flags().StringArrayVarP(&testEnv, "env", "e", nil, "Environment variables to set, in the form KEY=VAL") sourceTestCmd.Flags().StringVarP(&testFormat, "format", "f", "headlines", "Feed format for returned items.") } func sourceTest(cmd []string) { formatter := formatAs(testFormat) items, err := core.Execute("", cmd, testEnv, "", time.Minute) log.Printf("Returned %d items", len(items)) if err != nil { log.Fatal(err) } for _, item := range items { fmt.Println(formatter(item)) } }