-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathinstaller_examples_test.go
157 lines (134 loc) · 3.71 KB
/
installer_examples_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package install_test
import (
"context"
"log"
"github.com/hashicorp/go-version"
install "github.com/hashicorp/hc-install"
"github.com/hashicorp/hc-install/build"
"github.com/hashicorp/hc-install/fs"
"github.com/hashicorp/hc-install/product"
"github.com/hashicorp/hc-install/releases"
"github.com/hashicorp/hc-install/src"
)
// Installation of a single exact version
func ExampleInstaller() {
ctx := context.Background()
i := install.NewInstaller()
defer i.Remove(ctx)
v1_3 := version.Must(version.NewVersion("1.3.7"))
execPath, err := i.Install(ctx, []src.Installable{
&releases.ExactVersion{
Product: product.Terraform,
Version: v1_3,
},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Terraform %s installed to %s", v1_3, execPath)
// run any tests
}
// Locating or installing latest version per constraint
func ExampleInstaller_latestVersionConstrained() {
ctx := context.Background()
i := install.NewInstaller()
defer i.Remove(ctx)
v1 := version.MustConstraints(version.NewConstraint("~> 1.0"))
execPath, err := i.Ensure(context.Background(), []src.Source{
&fs.Version{
Product: product.Terraform,
Constraints: v1,
},
&releases.LatestVersion{
Product: product.Terraform,
Constraints: v1,
},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Terraform %s available at %s", v1, execPath)
// run any tests
}
// Installation of multiple versions
func ExampleInstaller_multipleVersions() {
ctx := context.Background()
i := install.NewInstaller()
defer i.Remove(ctx)
v1_1 := version.Must(version.NewVersion("1.1.0"))
execPath, err := i.Install(context.Background(), []src.Installable{
&releases.ExactVersion{
Product: product.Terraform,
Version: v1_1,
},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Terraform %s available at %s", v1_1, execPath)
// run any 1.1 tests
v1_3 := version.Must(version.NewVersion("1.3.0"))
execPath, err = i.Install(context.Background(), []src.Installable{
&releases.ExactVersion{
Product: product.Terraform,
Version: v1_3,
},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Terraform %s available at %s", v1_3, execPath)
// run any 1.3 tests
}
// Installation and building of multiple versions
func ExampleInstaller_installAndBuildMultipleVersions() {
ctx := context.Background()
i := install.NewInstaller()
defer i.Remove(ctx)
vc := version.MustConstraints(version.NewConstraint("~> 1.3"))
rv := &releases.Versions{
Product: product.Terraform,
Constraints: vc,
}
versions, err := rv.List(ctx)
if err != nil {
log.Fatal(err)
}
versions = append(versions, &build.GitRevision{
Product: product.Terraform,
Ref: "HEAD",
})
for _, installableVersion := range versions {
execPath, err := i.Ensure(context.Background(), []src.Source{
installableVersion,
})
if err != nil {
log.Fatal(err)
}
log.Printf("Terraform %s installed to %s", installableVersion, execPath)
// run any tests
}
}
// Installation of a single exact enterprise version
func ExampleInstaller_enterpriseVersion() {
ctx := context.Background()
i := install.NewInstaller()
defer i.Remove(ctx)
v1_9 := version.Must(version.NewVersion("1.9.8"))
licenseDir := "/some/path"
execPath, err := i.Install(ctx, []src.Installable{
&releases.ExactVersion{
Product: product.Vault,
Version: v1_9,
LicenseDir: licenseDir, // required for enterprise versions
Enterprise: &releases.EnterpriseOptions{}, // specify that we want the enterprise version
},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Vault %s Enterprise installed to %s; license information installed to %s", v1_9, execPath, licenseDir)
// run any tests
}