func Export()

in calnex/export/export.go [33:86]


func Export(source string, insecureTLS bool, channels []api.Channel, output io.WriteCloser) (err error) {
	var success bool
	calnexAPI := api.NewAPI(source, insecureTLS)

	if len(channels) == 0 {
		channels, err = calnexAPI.FetchUsedChannels()
		if err != nil {
			return errNoUsedChannels
		}
	}

	for _, channel := range channels {
		printSuccess := true

		probe, err := calnexAPI.FetchChannelProbe(channel)
		if err != nil {
			log.Errorf("Failed to fetch protocol from the channel %s: %v", channel, err)
			success = success || false
			continue
		}
		target, err := calnexAPI.FetchChannelTarget(channel, *probe)
		if err != nil {
			log.Errorf("Failed to fetch target from the channel %s: %v", channel, err)
			success = success || false
			continue
		}
		csvLines, err := calnexAPI.FetchCsv(channel)
		if err != nil {
			log.Errorf("Failed to fetch data from channel %s: %v", channel, err)
			success = success || false
			continue
		}

		for _, csvLine := range csvLines {
			entry, err := entryFromCSV(csvLine, channel.String(), target, probe.String(), source)
			if err != nil {
				printSuccess = false
				success = success || printSuccess
				log.Errorf("Failed to generate scribe line for data channel %s: %v", channel, err)
				break
			}

			entryj, _ := json.Marshal(entry)
			fmt.Fprintln(output, string(entryj))
		}
		success = success || printSuccess
	}

	if !success {
		return errNoTarget
	}

	return nil
}