func processCustomConnectors()

in internal/cmd/integrations/apply.go [402:448]


func processCustomConnectors(customConnectorsFolder 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(customConnectorsFolder); err == nil && stat.IsDir() {
		// create any custom connectors
		err = filepath.Walk(customConnectorsFolder, func(path string, info os.FileInfo, err error) error {
			if err != nil {
				return err
			}
			if !info.IsDir() {
				customConnectionFile := filepath.Base(path)
				if rJSONFiles.MatchString(customConnectionFile) {
					customConnectionDetails := strings.Split(strings.TrimSuffix(customConnectionFile, filepath.Ext(customConnectionFile)), fileSplitter)
					// the file format is name-version.json
					if len(customConnectionDetails) == 2 {
						clilog.Info.Printf("Found configuration for custom connection: %v\n", customConnectionFile)
						contents, err := utils.ReadFile(path)
						if err != nil {
							return err
						}
						clilog.Info.Printf("Creating custom connector: %s\n", customConnectionFile)
						if _, err := connections.GetCustomVersion(customConnectionDetails[0],
							customConnectionDetails[1], false); err != nil {
							// didn't find the custom connector, create it
							if err = connections.CreateCustomWithVersion(customConnectionDetails[0],
								customConnectionDetails[1], contents, serviceAccountName, serviceAccountProject); err != nil {
								return err
							}
						} else {
							clilog.Info.Printf("Custom Connector %s already exists\n", customConnectionFile)
						}
					}
				}
			}
			return nil
		})
	}
	return nil
}