Skip to content

Commit

Permalink
- remove deleting of cached files and only mark the first recent 3 ve…
Browse files Browse the repository at this point in the history
…rsions as *recent
  • Loading branch information
MatrixCrawler committed May 31, 2024
1 parent 9b21603 commit 2d6d604
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 48 deletions.
24 changes: 3 additions & 21 deletions lib/recent.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ func addRecent(requestedVersion string, installPath string, distribution string)
if CheckFileExist(recentFilePath) {
unmarshalRecentFileData(recentFilePath, &recentFileData)
}
prependRecentVersionToList(requestedVersion, installPath, distribution, &recentFileData)
prependRecentVersionToList(requestedVersion, distribution, &recentFileData)
saveRecentFile(recentFileData, recentFilePath)
}

func prependRecentVersionToList(version, installPath, distribution string, r *RecentFiles) {
func prependRecentVersionToList(version, distribution string, r *RecentFiles) {
var sliceToCheck []string
if distribution == distributionTerraform {
sliceToCheck = r.Terraform
Expand All @@ -41,31 +41,13 @@ func prependRecentVersionToList(version, installPath, distribution string, r *Re
}
sliceToCheck = append([]string{version}, sliceToCheck...)

if len(sliceToCheck) > 3 {
deleteDownloadedBinaries(installPath, distribution, sliceToCheck[3:])
sliceToCheck = sliceToCheck[0:2]
}

if distribution == distributionTerraform {
r.Terraform = sliceToCheck
} else if distribution == distributionOpenTofu {
r.OpenTofu = sliceToCheck
}
}

func deleteDownloadedBinaries(installPath, distribution string, versions []string) {
installLocation := GetInstallLocation(installPath)
for _, versionToDelete := range versions {
var fileToDelete string
if distribution == distributionTerraform {
fileToDelete = ConvertExecutableExt(TerraformPrefix + versionToDelete)
}
filePathToDelete := filepath.Join(installLocation, fileToDelete)
logger.Debugf("Deleting obsolete binary %v", filePathToDelete)
_ = os.Remove(filePathToDelete)
}
}

func getRecentVersions(installPath string, dist string) ([]string, error) {
installLocation := GetInstallLocation(installPath)
recentFilePath := filepath.Join(installLocation, recentFile)
Expand All @@ -77,7 +59,7 @@ func getRecentVersions(installPath string, dist string) ([]string, error) {
} else if dist == distributionOpenTofu {
listOfRecentVersions = recentFileData.OpenTofu
}
for index, versionString := range listOfRecentVersions {
for index, versionString := range listOfRecentVersions[:2] {
listOfRecentVersions[index] = versionString + " *recent"
}
return listOfRecentVersions, nil
Expand Down
30 changes: 3 additions & 27 deletions lib/recent_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package lib

import (
"errors"
"github.com/stretchr/testify/assert"
"os"
"path/filepath"
"strconv"
"testing"
)

Expand Down Expand Up @@ -102,13 +100,13 @@ func Test_prependExistingVersionIsMovingToTop(t *testing.T) {
Terraform: []string{"1.2.3", "4.5.6", "7.7.7"},
OpenTofu: []string{"6.6.6"},
}
prependRecentVersionToList("7.7.7", "", distributionTerraform, &recentFileData)
prependRecentVersionToList("7.7.7", distributionTerraform, &recentFileData)
assert.Equal(t, 3, len(recentFileData.Terraform))
assert.Equal(t, "7.7.7", recentFileData.Terraform[0])
assert.Equal(t, "1.2.3", recentFileData.Terraform[1])
assert.Equal(t, "4.5.6", recentFileData.Terraform[2])

prependRecentVersionToList("1.2.3", "", distributionTerraform, &recentFileData)
prependRecentVersionToList("1.2.3", distributionTerraform, &recentFileData)
assert.Equal(t, 3, len(recentFileData.Terraform))
assert.Equal(t, "1.2.3", recentFileData.Terraform[0])
assert.Equal(t, "7.7.7", recentFileData.Terraform[1])
Expand All @@ -120,31 +118,9 @@ func Test_prependNewVersion(t *testing.T) {
Terraform: []string{"1.2.3", "4.5.6"},
OpenTofu: []string{"6.6.6"},
}
prependRecentVersionToList("7.7.7", "", distributionTerraform, &recentFileData)
prependRecentVersionToList("7.7.7", distributionTerraform, &recentFileData)
assert.Equal(t, 3, len(recentFileData.Terraform))
assert.Equal(t, "7.7.7", recentFileData.Terraform[0])
assert.Equal(t, "1.2.3", recentFileData.Terraform[1])
assert.Equal(t, "4.5.6", recentFileData.Terraform[2])
}

func Test_deleteDownloadedBinaries(t *testing.T) {
logger = InitLogger("DEBUG")
temp, err := os.MkdirTemp("", "recent-test")
if err != nil {
t.Errorf("Could not create temporary directory")
}
defer func(path string) {
_ = os.RemoveAll(path)
}(temp)
// Create 4 file stubs
for i := 0; i < 4; i++ {
_, err = os.Create(filepath.Join(temp, ConvertExecutableExt(TerraformPrefix+strconv.Itoa(i)+".0.0")))
if err != nil {
t.Error("Could not create dummy file")
t.Error(err)
}
}
deleteDownloadedBinaries(temp, distributionTerraform, []string{"4.0.0"})
_, err = os.Stat(filepath.Join(temp, ConvertExecutableExt(TerraformPrefix+"4.0.0")))
assert.True(t, errors.Is(err, os.ErrNotExist))
}

0 comments on commit 2d6d604

Please sign in to comment.