Skip to content

Commit d72169f

Browse files
committed
Toolprovider: move types to a subpackage to prevent import cycles
1 parent 35384b6 commit d72169f

File tree

10 files changed

+91
-92
lines changed

10 files changed

+91
-92
lines changed

toolprovider/asdf/activate.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import (
44
"fmt"
55
"strings"
66

7-
"github.com/bitrise-io/bitrise/v2/toolprovider"
7+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
88
)
99

10-
func (a AsdfToolProvider) ActivateEnv(result toolprovider.ToolInstallResult) (toolprovider.EnvironmentActivation, error) {
10+
func (a AsdfToolProvider) ActivateEnv(result provider.ToolInstallResult) (provider.EnvironmentActivation, error) {
1111
envKey := fmt.Sprint("ASDF_", strings.ToUpper(string(result.ToolName)), "_VERSION")
12-
return toolprovider.EnvironmentActivation{
12+
return provider.EnvironmentActivation{
1313
ContributedEnvVars: map[string]string{
1414
envKey: result.ConcreteVersion,
1515
},

toolprovider/asdf/asdf.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"strings"
88

99
"github.com/bitrise-io/bitrise/v2/log"
10-
"github.com/bitrise-io/bitrise/v2/toolprovider"
10+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
1111
"github.com/bitrise-io/bitrise/v2/toolprovider/asdf/execenv"
1212
)
1313

@@ -31,22 +31,22 @@ func (a AsdfToolProvider) Bootstrap() error {
3131
return nil
3232
}
3333

34-
func (a AsdfToolProvider) InstallTool(tool toolprovider.ToolRequest) (toolprovider.ToolInstallResult, error) {
34+
func (a AsdfToolProvider) InstallTool(tool provider.ToolRequest) (provider.ToolInstallResult, error) {
3535
err := a.InstallPlugin(tool)
3636
if err != nil {
37-
return toolprovider.ToolInstallResult{}, fmt.Errorf("install tool plugin %s: %w", tool.ToolName, err)
37+
return provider.ToolInstallResult{}, fmt.Errorf("install tool plugin %s: %w", tool.ToolName, err)
3838
}
3939

4040
installedVersions, err := a.listInstalled(tool.ToolName)
4141
if err != nil {
42-
return toolprovider.ToolInstallResult{}, fmt.Errorf("list installed versions: %w", err)
42+
return provider.ToolInstallResult{}, fmt.Errorf("list installed versions: %w", err)
4343
}
4444

4545
// Short-circuit for exact version match among installed versions.
4646
// Fetching released versions is a slow operation that we want to avoid.
4747
v := strings.TrimSpace(tool.UnparsedVersion)
48-
if tool.ResolutionStrategy == toolprovider.ResolutionStrategyStrict && slices.Contains(installedVersions, v) {
49-
return toolprovider.ToolInstallResult{
48+
if tool.ResolutionStrategy == provider.ResolutionStrategyStrict && slices.Contains(installedVersions, v) {
49+
return provider.ToolInstallResult{
5050
ToolName: tool.ToolName,
5151
IsAlreadyInstalled: true,
5252
ConcreteVersion: v,
@@ -55,11 +55,11 @@ func (a AsdfToolProvider) InstallTool(tool toolprovider.ToolRequest) (toolprovid
5555

5656
releasedVersions, err := a.listReleased(tool.ToolName)
5757
if err != nil {
58-
return toolprovider.ToolInstallResult{}, fmt.Errorf("list released versions: %w", err)
58+
return provider.ToolInstallResult{}, fmt.Errorf("list released versions: %w", err)
5959
}
6060

6161
if len(releasedVersions) == 0 && len(installedVersions) == 0 {
62-
return toolprovider.ToolInstallResult{}, &ErrNoMatchingVersion{
62+
return provider.ToolInstallResult{}, &ErrNoMatchingVersion{
6363
RequestedVersion: tool.UnparsedVersion,
6464
AvailableVersions: releasedVersions,
6565
}
@@ -73,43 +73,43 @@ func (a AsdfToolProvider) InstallTool(tool toolprovider.ToolRequest) (toolprovid
7373
// Some asdf plugins hardcode the list of installable versions and need a new plugin release to support new versions.
7474
_, err = a.ExecEnv.RunAsdf("plugin", "update", string(tool.ToolName))
7575
if err != nil {
76-
return toolprovider.ToolInstallResult{}, fmt.Errorf("update plugin: %w", err)
76+
return provider.ToolInstallResult{}, fmt.Errorf("update plugin: %w", err)
7777
}
7878
releasedVersions, err = a.listReleased(tool.ToolName)
7979
if err != nil {
80-
return toolprovider.ToolInstallResult{}, fmt.Errorf("list released versions after plugin update: %w", err)
80+
return provider.ToolInstallResult{}, fmt.Errorf("list released versions after plugin update: %w", err)
8181
}
8282
resolution, err = ResolveVersion(tool, releasedVersions, installedVersions)
8383
if err != nil {
8484
if errors.As(err, &nomatchErr) {
85-
errorDetails := toolprovider.ToolInstallError{
85+
errorDetails := provider.ToolInstallError{
8686
ToolName: string(tool.ToolName),
8787
RequestedVersion: tool.UnparsedVersion,
8888
Cause: nomatchErr.Error(),
8989
Recommendation: fmt.Sprintf("You might want to use `%s:installed` or `%s:latest` to install the latest installed or latest released version of %s %s.", tool.UnparsedVersion, tool.UnparsedVersion, tool.ToolName, tool.UnparsedVersion),
9090
}
91-
return toolprovider.ToolInstallResult{}, errorDetails
91+
return provider.ToolInstallResult{}, errorDetails
9292
}
93-
return toolprovider.ToolInstallResult{}, fmt.Errorf("resolve version: %w", err)
93+
return provider.ToolInstallResult{}, fmt.Errorf("resolve version: %w", err)
9494
}
9595
}
9696

97-
return toolprovider.ToolInstallResult{}, fmt.Errorf("resolve version: %w", err)
97+
return provider.ToolInstallResult{}, fmt.Errorf("resolve version: %w", err)
9898
}
9999

100100
if resolution.IsInstalled {
101-
return toolprovider.ToolInstallResult{
101+
return provider.ToolInstallResult{
102102
ToolName: tool.ToolName,
103103
IsAlreadyInstalled: true,
104104
ConcreteVersion: resolution.VersionString,
105105
}, nil
106106
} else {
107107
err = a.installToolVersion(tool.ToolName, resolution.VersionString)
108108
if err != nil {
109-
return toolprovider.ToolInstallResult{}, err
109+
return provider.ToolInstallResult{}, err
110110
}
111111

112-
return toolprovider.ToolInstallResult{
112+
return provider.ToolInstallResult{
113113
ToolName: tool.ToolName,
114114
IsAlreadyInstalled: false,
115115
ConcreteVersion: resolution.VersionString,

toolprovider/asdf/install.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ package asdf
33
import (
44
"fmt"
55

6-
"github.com/bitrise-io/bitrise/v2/toolprovider"
6+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
77
"github.com/bitrise-io/bitrise/v2/toolprovider/asdf/workarounds"
88
)
99

1010
func (a *AsdfToolProvider) installToolVersion(
11-
toolName toolprovider.ToolID,
11+
toolName provider.ToolID,
1212
versionString string,
1313
) error {
1414
if toolName == "" || versionString == "" {
@@ -17,7 +17,7 @@ func (a *AsdfToolProvider) installToolVersion(
1717

1818
out, err := a.ExecEnv.RunAsdf("install", string(toolName), versionString)
1919
if err != nil {
20-
return toolprovider.ToolInstallError{
20+
return provider.ToolInstallError{
2121
ToolName: string(toolName),
2222
RequestedVersion: versionString,
2323
Cause: fmt.Sprintf("asdf install %s %s: %s", string(toolName), versionString, err),

toolprovider/asdf/install_plugin.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ import (
55
"strings"
66

77
"github.com/bitrise-io/bitrise/v2/log"
8-
"github.com/bitrise-io/bitrise/v2/toolprovider"
8+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
99
)
1010

1111
// Unlikely to conflict with any plugin name or URL, but clearly separates the plugin name and URL.
1212
const PluginSourceSeparator = "::"
1313

1414
type PluginSource struct {
15-
PluginName toolprovider.ToolID
15+
PluginName provider.ToolID
1616
GitCloneURL string
1717
}
1818

19-
var pluginSourceMap = map[toolprovider.ToolID]PluginSource{
19+
var pluginSourceMap = map[provider.ToolID]PluginSource{
2020
"flutter": {PluginName: "flutter", GitCloneURL: "https://github.com/asdf-community/asdf-flutter.git"},
2121
"golang": {PluginName: "golang", GitCloneURL: "https://github.com/asdf-community/asdf-golang.git"},
2222
"nodejs": {PluginName: "nodejs", GitCloneURL: "https://github.com/asdf-vm/asdf-nodejs.git"},
@@ -29,19 +29,19 @@ var pluginSourceMap = map[toolprovider.ToolID]PluginSource{
2929
//
3030
// It resolves the plugin source from the tool request or predefined map,
3131
// checks if the plugin is already installed, and if not, installs it using asdf.
32-
func (a AsdfToolProvider) InstallPlugin(tool toolprovider.ToolRequest) error {
32+
func (a AsdfToolProvider) InstallPlugin(tool provider.ToolRequest) error {
3333
plugin, err := fetchPluginSource(tool)
3434
if err != nil {
3535
// E.g. parse error while resolving plugin source.
36-
return toolprovider.ToolInstallError{
36+
return provider.ToolInstallError{
3737
ToolName: string(tool.ToolName),
3838
RequestedVersion: tool.UnparsedVersion,
3939
Cause: fmt.Sprintf("Couldn't resolve plugin source: %s", err),
4040
Recommendation: "Review the syntax of the `plugin` field",
4141
}
4242
}
4343
if plugin == nil {
44-
return toolprovider.ToolInstallError{
44+
return provider.ToolInstallError{
4545
ToolName: string(tool.ToolName),
4646
RequestedVersion: tool.UnparsedVersion,
4747
Cause: fmt.Sprintf("This tool integration (%s) is not tested or vetted by Bitrise.", tool.ToolName),
@@ -109,7 +109,7 @@ func (a *AsdfToolProvider) isPluginInstalled(plugin PluginSource) (bool, error)
109109
return false, nil
110110
}
111111

112-
func fetchPluginSource(toolRequest toolprovider.ToolRequest) (*PluginSource, error) {
112+
func fetchPluginSource(toolRequest provider.ToolRequest) (*PluginSource, error) {
113113
if toolRequest.PluginIdentifier != nil {
114114
pluginInput := strings.TrimSpace(*toolRequest.PluginIdentifier)
115115
if pluginInput != "" {
@@ -157,7 +157,7 @@ func parsePluginSourceFromInput(pluginIdentifier string) (*PluginSource, error)
157157
}
158158

159159
return &PluginSource{
160-
PluginName: toolprovider.ToolID(pluginName),
160+
PluginName: provider.ToolID(pluginName),
161161
GitCloneURL: pluginURL,
162162
}, nil
163163
}

toolprovider/asdf/install_plugin_test.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package asdf
33
import (
44
"testing"
55

6-
"github.com/bitrise-io/bitrise/v2/toolprovider"
6+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
77
"github.com/stretchr/testify/assert"
88
)
99

@@ -19,38 +19,38 @@ var (
1919
func TestResolvePluginSource(t *testing.T) {
2020
tests := []struct {
2121
name string
22-
input toolprovider.ToolRequest
22+
input provider.ToolRequest
2323
expected PluginSource
2424
wantErr bool
2525
}{
2626
{
2727
name: "pluginIdentifier set in correct format",
28-
input: toolprovider.ToolRequest{
29-
ToolName: toolprovider.ToolID(pluginName),
28+
input: provider.ToolRequest{
29+
ToolName: provider.ToolID(pluginName),
3030
UnparsedVersion: "18.16.0",
3131
PluginIdentifier: &fullPluginId,
3232
},
3333
expected: PluginSource{
34-
toolprovider.ToolID(pluginName),
34+
provider.ToolID(pluginName),
3535
pluginGitCloneURL,
3636
},
3737
},
3838
{
3939
name: "pluginIdentifier set with name only",
40-
input: toolprovider.ToolRequest{
41-
ToolName: toolprovider.ToolID(pluginName),
40+
input: provider.ToolRequest{
41+
ToolName: provider.ToolID(pluginName),
4242
UnparsedVersion: "18.16.0",
4343
PluginIdentifier: &pluginName,
4444
},
4545
expected: PluginSource{
46-
PluginName: toolprovider.ToolID(pluginName),
46+
PluginName: provider.ToolID(pluginName),
4747
GitCloneURL: "",
4848
},
4949
},
5050
{
5151
name: "pluginIdentifier set with url only",
52-
input: toolprovider.ToolRequest{
53-
ToolName: toolprovider.ToolID(pluginName),
52+
input: provider.ToolRequest{
53+
ToolName: provider.ToolID(pluginName),
5454
UnparsedVersion: "18.16.0",
5555
PluginIdentifier: &pluginGitCloneURL,
5656
},
@@ -59,20 +59,20 @@ func TestResolvePluginSource(t *testing.T) {
5959
},
6060
{
6161
name: "pluginIdentifier set with empty url",
62-
input: toolprovider.ToolRequest{
63-
ToolName: toolprovider.ToolID(pluginName),
62+
input: provider.ToolRequest{
63+
ToolName: provider.ToolID(pluginName),
6464
UnparsedVersion: "18.16.0",
6565
PluginIdentifier: &nameOnlySeparatorPluginId,
6666
},
6767
expected: PluginSource{
68-
PluginName: toolprovider.ToolID(pluginName),
68+
PluginName: provider.ToolID(pluginName),
6969
GitCloneURL: "",
7070
},
7171
},
7272
{
7373
name: "pluginIdentifier set with empty name",
74-
input: toolprovider.ToolRequest{
75-
ToolName: toolprovider.ToolID(pluginName),
74+
input: provider.ToolRequest{
75+
ToolName: provider.ToolID(pluginName),
7676
UnparsedVersion: "18.16.0",
7777
PluginIdentifier: &urlOnlySeparatorPluginId,
7878
},
@@ -81,8 +81,8 @@ func TestResolvePluginSource(t *testing.T) {
8181
},
8282
{
8383
name: "pluginIdentifier set with multiple separators",
84-
input: toolprovider.ToolRequest{
85-
ToolName: toolprovider.ToolID(pluginName),
84+
input: provider.ToolRequest{
85+
ToolName: provider.ToolID(pluginName),
8686
UnparsedVersion: "18.16.0",
8787
PluginIdentifier: &multipleSeparatorPluginId,
8888
},

toolprovider/asdf/parse.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"regexp"
88
"strings"
99

10-
"github.com/bitrise-io/bitrise/v2/toolprovider"
10+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
1111
"github.com/hashicorp/go-version"
1212
)
1313

@@ -31,7 +31,7 @@ func (a *AsdfToolProvider) asdfVersion() (*version.Version, error) {
3131
}
3232

3333
// TODO: check if tool-plugin is installed
34-
func (a *AsdfToolProvider) listInstalled(toolName toolprovider.ToolID) ([]string, error) {
34+
func (a *AsdfToolProvider) listInstalled(toolName provider.ToolID) ([]string, error) {
3535
output, err := a.ExecEnv.RunAsdf("list", string(toolName))
3636
if err != nil {
3737
// asdf 0.16.0+ returns exit code 1 if no versions are installed
@@ -50,7 +50,7 @@ func (a *AsdfToolProvider) listInstalled(toolName toolprovider.ToolID) ([]string
5050
}
5151

5252
// TODO: check if tool-plugin is installed
53-
func (a *AsdfToolProvider) listReleased(toolName toolprovider.ToolID) ([]string, error) {
53+
func (a *AsdfToolProvider) listReleased(toolName provider.ToolID) ([]string, error) {
5454
asdfVer, err := a.asdfVersion()
5555
if err != nil {
5656
return nil, err

0 commit comments

Comments
 (0)