(ctx context.Context, plugin Plugin, plan InstallPlan, options InstallOptions)
| 144 | } |
| 145 | |
| 146 | func (c Client) InstallDirect(ctx context.Context, plugin Plugin, plan InstallPlan, options InstallOptions) (InstallResult, error) { |
| 147 | plugin.ID = strings.TrimSpace(plugin.ID) |
| 148 | plugin.Version = normalizeVersion(plugin.Version) |
| 149 | if !validPluginID(plugin.ID) { |
| 150 | return InstallResult{}, fmt.Errorf("invalid plugin id %q", plugin.ID) |
| 151 | } |
| 152 | if !validPluginVersion(plugin.Version) { |
| 153 | return InstallResult{}, fmt.Errorf("invalid plugin version %q", plugin.Version) |
| 154 | } |
| 155 | plan = NormalizeInstallPlan(plan) |
| 156 | plan.Type = InstallTypeDirect |
| 157 | if errValidate := ValidateInstallPlan(plan); errValidate != nil { |
| 158 | return InstallResult{}, errValidate |
| 159 | } |
| 160 | options = normalizeInstallOptions(options) |
| 161 | artifact, errSelect := SelectArtifact(plan, options.GOOS, options.GOARCH) |
| 162 | if errSelect != nil { |
| 163 | return InstallResult{}, errSelect |
| 164 | } |
| 165 | archiveData, errDownload := c.DownloadArtifact(ctx, artifact) |
| 166 | if errDownload != nil { |
| 167 | return InstallResult{}, fmt.Errorf("download artifact: %w", errDownload) |
| 168 | } |
| 169 | if errVerify := VerifyArtifactChecksum(artifact, archiveData); errVerify != nil { |
| 170 | return InstallResult{}, errVerify |
| 171 | } |
| 172 | result, errInstall := InstallArchive(archiveData, plugin, options) |
| 173 | if errInstall != nil { |
| 174 | return InstallResult{}, errInstall |
| 175 | } |
| 176 | result.InstallType = InstallTypeDirect |
| 177 | return result, nil |
| 178 | } |
| 179 | |
| 180 | func (c Client) directPluginFromManifest(ctx context.Context, manifest Manifest) (Plugin, error) { |
| 181 | plugin := manifest.Plugin() |
no test coverage detected