func getCA()

in internal/app/http_client.go [75:109]


func getCA(ca string) ([]byte, error) {
	// If a new line is found it means that we were given a CA block rather than a path.
	if strings.ContainsRune(ca, '\n') {
		return []byte(ca), nil
	}

	baseDir, err := os.Getwd()
	if err != nil {
		return nil, err
	}

	filePath, err := securejoin.SecureJoin(baseDir, ca)
	if err != nil {
		return nil, err
	}

	if _, statErr := os.Stat(filePath); errors.Is(statErr, os.ErrNotExist) {
		buildsDir := os.Getenv("CI_BUILDS_DIR")
		if buildsDir == "" {
			return nil, statErr
		}

		rel, err := filepath.Rel(buildsDir, ca)
		if err != nil {
			return nil, err
		}

		filePath, err = securejoin.SecureJoin(buildsDir, rel)
		if err != nil {
			return nil, err
		}
	}

	return os.ReadFile(filepath.Clean(filePath))
}