func processSfdcChannels()

in internal/cmd/integrations/apply.go [490:539]


func processSfdcChannels(sfdcchannelsFolder string) (err error) {
	var stat fs.FileInfo
	var fileSplitter string
	rJSONFiles := regexp.MustCompile(`(\S*)\.json`)

	if useUnderscore {
		fileSplitter = utils.LegacyFileSplitter
	} else {
		fileSplitter = utils.DefaultFileSplitter
	}

	if stat, err = os.Stat(sfdcchannelsFolder); err == nil && stat.IsDir() {
		// create any sfdc channels
		err = filepath.Walk(sfdcchannelsFolder, func(path string, info os.FileInfo, err error) error {
			if err != nil {
				return err
			}
			if !info.IsDir() {
				channelFile := filepath.Base(path)
				if rJSONFiles.MatchString(channelFile) {
					clilog.Info.Printf("Found configuration for sfdc channel: %s\n", channelFile)
					//channelFile name could be instanceName_channelName.json or instanceName_channelName_e.json
					fileName := getFilenameWithoutExtension(channelFile) //instanceName_channelName or instanceName_channelName_e
					sfdcNames := strings.Split(fileName, fileSplitter)
					name := fileName[len(sfdcNames[0])+len(fileSplitter):] //channelName or channelName_e
					version, _, err := sfdc.FindChannel(name, sfdcNames[0])
					// create the instance only if the sfdc channel is not found
					if err != nil {
						channelBytes, err := utils.ReadFile(path)
						if err != nil {
							return err
						}
						clilog.Info.Printf("Creating sfdc channel: %s\n", channelFile)
						_, err = sfdc.CreateChannelFromContent(version, channelBytes)
						if err != nil {
							return nil
						}
					} else {
						clilog.Info.Printf("sfdc channel %s already exists\n", channelFile)
					}
				}
			}
			return nil
		})
		if err != nil {
			return err
		}
	}
	return nil
}