Skip to content

Commit 09d5009

Browse files
committed
make pkgs.Tools struct properties unexported and use "constructor"
1 parent 2cd8248 commit 09d5009

File tree

3 files changed

+32
-28
lines changed

3 files changed

+32
-28
lines changed

v2/http.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,8 @@ func Server(directory string, index *index.Resource) http.Handler {
4040
logAdapter := LogAdapter{Logger: logger}
4141

4242
// Mount tools
43-
toolsSvc := pkgs.Tools{
44-
Folder: directory,
45-
Index: index,
46-
}
47-
toolsEndpoints := toolssvc.NewEndpoints(&toolsSvc)
43+
toolsSvc := pkgs.New(index, directory)
44+
toolsEndpoints := toolssvc.NewEndpoints(toolsSvc)
4845
toolsServer := toolssvr.New(toolsEndpoints, mux, CustomRequestDecoder, goahttp.ResponseEncoder, errorHandler(logger), nil)
4946
toolssvr.Mount(mux, toolsServer)
5047

v2/pkgs/tools.go

+29-19
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,23 @@ import (
5050
//
5151
// It requires an Index Resource to search for tools
5252
type Tools struct {
53-
Index *index.Resource
54-
Folder string
53+
index *index.Resource
54+
folder string
55+
}
56+
57+
// New will return a Tool object, allowing the caller to execute operations on it.
58+
// The New function will accept an index as parameter (used to download the indexes)
59+
// and a folder used to download the indexes
60+
func New(index *index.Resource, folder string) *Tools {
61+
return &Tools{
62+
index: index,
63+
folder: folder,
64+
}
5565
}
5666

5767
// Available crawles the downloaded package index files and returns a list of tools that can be installed.
58-
func (c *Tools) Available(ctx context.Context) (res tools.ToolCollection, err error) {
59-
body, err := c.Index.Read()
68+
func (t *Tools) Available(ctx context.Context) (res tools.ToolCollection, err error) {
69+
body, err := t.index.Read()
6070
if err != nil {
6171
return nil, err
6272
}
@@ -78,16 +88,16 @@ func (c *Tools) Available(ctx context.Context) (res tools.ToolCollection, err er
7888
}
7989

8090
// Installed crawles the Tools Folder and finds the installed tools.
81-
func (c *Tools) Installed(ctx context.Context) (tools.ToolCollection, error) {
91+
func (t *Tools) Installed(ctx context.Context) (tools.ToolCollection, error) {
8292
res := tools.ToolCollection{}
8393

8494
// Find packagers
85-
packagers, err := os.ReadDir(c.Folder)
95+
packagers, err := os.ReadDir(t.folder)
8696
if err != nil {
8797
if !strings.Contains(err.Error(), "no such file") {
8898
return nil, err
8999
}
90-
err = os.MkdirAll(c.Folder, 0755)
100+
err = os.MkdirAll(t.folder, 0755)
91101
if err != nil {
92102
return nil, err
93103
}
@@ -99,14 +109,14 @@ func (c *Tools) Installed(ctx context.Context) (tools.ToolCollection, error) {
99109
}
100110

101111
// Find tools
102-
toolss, err := os.ReadDir(filepath.Join(c.Folder, packager.Name()))
112+
toolss, err := os.ReadDir(filepath.Join(t.folder, packager.Name()))
103113
if err != nil {
104114
return nil, err
105115
}
106116

107117
for _, tool := range toolss {
108118
// Find versions
109-
path := filepath.Join(c.Folder, packager.Name(), tool.Name())
119+
path := filepath.Join(t.folder, packager.Name(), tool.Name())
110120
versions, err := os.ReadDir(path)
111121
if err != nil {
112122
continue // we ignore errors because the folders could be dirty
@@ -127,7 +137,7 @@ func (c *Tools) Installed(ctx context.Context) (tools.ToolCollection, error) {
127137

128138
// Install crawles the Index folder, downloads the specified tool, extracts the archive in the Tools Folder.
129139
// It checks for the Signature specified in the package index.
130-
func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) (*tools.Operation, error) {
140+
func (t *Tools) Install(ctx context.Context, payload *tools.ToolPayload) (*tools.Operation, error) {
131141
path := filepath.Join(payload.Packager, payload.Name, payload.Version)
132142

133143
//if URL is defined and is signed we verify the signature and override the name, payload, version parameters
@@ -136,11 +146,11 @@ func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) (*tools
136146
if err != nil {
137147
return nil, err
138148
}
139-
return c.install(ctx, path, *payload.URL, *payload.Checksum)
149+
return t.install(ctx, path, *payload.URL, *payload.Checksum)
140150
}
141151

142152
// otherwise we install from the default index
143-
body, err := c.Index.Read()
153+
body, err := t.index.Read()
144154
if err != nil {
145155
return nil, err
146156
}
@@ -159,7 +169,7 @@ func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) (*tools
159169

160170
sys := tool.GetFlavourCompatibleWith(runtime.GOOS, runtime.GOARCH)
161171

162-
return c.install(ctx, path, sys.URL, sys.Checksum)
172+
return t.install(ctx, path, sys.URL, sys.Checksum)
163173
}
164174
}
165175
}
@@ -169,7 +179,7 @@ func (c *Tools) Install(ctx context.Context, payload *tools.ToolPayload) (*tools
169179
payload.Packager, payload.Name, payload.Version))
170180
}
171181

172-
func (c *Tools) install(ctx context.Context, path, url, checksum string) (*tools.Operation, error) {
182+
func (t *Tools) install(ctx context.Context, path, url, checksum string) (*tools.Operation, error) {
173183
// Download
174184
res, err := http.Get(url)
175185
if err != nil {
@@ -182,12 +192,12 @@ func (c *Tools) install(ctx context.Context, path, url, checksum string) (*tools
182192
reader := io.TeeReader(res.Body, &buffer)
183193

184194
// Cleanup
185-
err = os.RemoveAll(filepath.Join(c.Folder, path))
195+
err = os.RemoveAll(filepath.Join(t.folder, path))
186196
if err != nil {
187197
return nil, err
188198
}
189199

190-
err = extract.Archive(ctx, reader, c.Folder, rename(path))
200+
err = extract.Archive(ctx, reader, t.folder, rename(path))
191201
if err != nil {
192202
os.RemoveAll(path)
193203
return nil, err
@@ -202,7 +212,7 @@ func (c *Tools) install(ctx context.Context, path, url, checksum string) (*tools
202212
}
203213

204214
// Write installed.json for retrocompatibility with v1
205-
err = writeInstalled(c.Folder, path)
215+
err = writeInstalled(t.folder, path)
206216
if err != nil {
207217
return nil, err
208218
}
@@ -211,9 +221,9 @@ func (c *Tools) install(ctx context.Context, path, url, checksum string) (*tools
211221
}
212222

213223
// Remove deletes the tool folder from Tools Folder
214-
func (c *Tools) Remove(ctx context.Context, payload *tools.ToolPayload) (*tools.Operation, error) {
224+
func (t *Tools) Remove(ctx context.Context, payload *tools.ToolPayload) (*tools.Operation, error) {
215225
path := filepath.Join(payload.Packager, payload.Name, payload.Version)
216-
pathToRemove, err := utilities.SafeJoin(c.Folder, path)
226+
pathToRemove, err := utilities.SafeJoin(t.folder, path)
217227
if err != nil {
218228
return nil, err
219229
}

v2/pkgs/tools_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ func TestTools(t *testing.T) {
4343
// Instantiate Index
4444
Index := index.Init(indexURL, config.GetDataDir())
4545

46-
service := pkgs.Tools{
47-
Folder: tmp,
48-
Index: Index,
49-
}
46+
service := pkgs.New(Index, tmp)
5047

5148
ctx := context.Background()
5249

0 commit comments

Comments
 (0)