(ctx context.Context, uri string)
| 73 | } |
| 74 | |
| 75 | func (r *Runner) fetch(ctx context.Context, uri string) ([]byte, string, error) { |
| 76 | var body io.ReadCloser |
| 77 | |
| 78 | switch { |
| 79 | |
| 80 | case strings.HasPrefix(uri, "file://"): |
| 81 | file, err := os.Open(strings.TrimPrefix(uri, "file://")) |
| 82 | if err != nil { |
| 83 | return nil, "", fmt.Errorf("os.Open: %s %w", uri, err) |
| 84 | } |
| 85 | body = file |
| 86 | |
| 87 | case strings.HasPrefix(uri, "https://"): |
| 88 | req, err := http.NewRequestWithContext(ctx, "GET", uri, nil) |
| 89 | if err != nil { |
| 90 | return nil, "", fmt.Errorf("http.Get: %s %w", uri, err) |
| 91 | } |
| 92 | req.Header.Set("User-Agent", fmt.Sprintf("sqlc/%s Go/%s (%s %s)", info.Version, runtime.Version(), runtime.GOOS, runtime.GOARCH)) |
| 93 | resp, err := http.DefaultClient.Do(req) |
| 94 | if err != nil { |
| 95 | return nil, "", fmt.Errorf("http.Get: %s %w", r.URL, err) |
| 96 | } |
| 97 | body = resp.Body |
| 98 | |
| 99 | default: |
| 100 | return nil, "", fmt.Errorf("unknown scheme: %s", r.URL) |
| 101 | } |
| 102 | |
| 103 | defer body.Close() |
| 104 | |
| 105 | wmod, err := io.ReadAll(body) |
| 106 | if err != nil { |
| 107 | return nil, "", fmt.Errorf("readall: %w", err) |
| 108 | } |
| 109 | |
| 110 | sum := sha256.Sum256(wmod) |
| 111 | actual := fmt.Sprintf("%x", sum) |
| 112 | |
| 113 | return wmod, actual, nil |
| 114 | } |
| 115 | |
| 116 | func (r *Runner) loadAndCompileWASM(ctx context.Context, cache string, expected string) (*runtimeAndCode, error) { |
| 117 | pluginDir := filepath.Join(cache, expected) |
no test coverage detected