Skip to content

Commit

Permalink
Merge pull request #23 from warrensbox/develop
Browse files Browse the repository at this point in the history
Cache recent versions -  for easier lookup
  • Loading branch information
warrensbox authored Jun 23, 2018
2 parents 1818222 + d6ffcad commit fd95e8b
Show file tree
Hide file tree
Showing 52 changed files with 5,182 additions and 105 deletions.
12 changes: 4 additions & 8 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,12 @@ jobs:
- checkout
- run:
command: |
git status
source version
export RELEASE_VERSION
git tag $RELEASE_VERSION.${CIRCLE_BUILD_NUM}
git config --global user.email "warren.veerasingam@gmail.com"
git config --global user.name "warrensbox"
git push origin $RELEASE_VERSION.${CIRCLE_BUILD_NUM}
make test
release:
docker:
- image: circleci/golang:1.10
- image: warrensbox/go-rb-py-aws

steps:
- checkout
Expand All @@ -69,6 +64,7 @@ jobs:
RELEASE_VERSION=$RELEASE_VERSION.${CIRCLE_BUILD_NUM}
export RELEASE_VERSION;
echo $RELEASE_VERSION
cd docs; bundle install --path vendor/bundler; bundle exec jekyll build -c _config.yml; cd ..
go get -v -t -d ./...
git config user.email "warren.veerasingam@gmail.com"
git config user.name "warrensbox"
Expand Down
11 changes: 10 additions & 1 deletion Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Gopkg.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,18 @@
# go-tests = true
# unused-packages = true

required = ["github.com/pborman/getopt/v2"]

[[constraint]]
name = "github.com/pborman/getopt"
branch = "master"

[[constraint]]
name = "github.com/manifoldco/promptui"
branch = "master"


[prune]
go-tests = true
unused-packages = true

5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,8 @@ clean:
test: $(EXE)
mv $(EXE) build
go test -v ./...


.PHONEY: dep
dep:
dep ensure
55 changes: 55 additions & 0 deletions lib/files.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@ package lib

import (
"archive/zip"
"bufio"
"bytes"
"fmt"
"io"
"log"
"os"
"path/filepath"
"strings"
)

// RenameFile : rename file name
Expand Down Expand Up @@ -107,3 +110,55 @@ func CreateDirIfNotExist(dir string) {
}
}
}

//WriteLines : writes into file
func WriteLines(lines []string, path string) (err error) {
var (
file *os.File
)

if file, err = os.Create(path); err != nil {
return err
}
defer file.Close()

for _, item := range lines {
_, err := file.WriteString(strings.TrimSpace(item) + "\n")
if err != nil {
fmt.Println(err)
break
}
}

return nil
}

// ReadLines : Read a whole file into the memory and store it as array of lines
func ReadLines(path string) (lines []string, err error) {
var (
file *os.File
part []byte
prefix bool
)
if file, err = os.Open(path); err != nil {
return
}
defer file.Close()

reader := bufio.NewReader(file)
buffer := bytes.NewBuffer(make([]byte, 0))
for {
if part, prefix, err = reader.ReadLine(); err != nil {
break
}
buffer.Write(part)
if !prefix {
lines = append(lines, buffer.String())
buffer.Reset()
}
}
if err == io.EOF {
err = nil
}
return
}
129 changes: 128 additions & 1 deletion lib/files_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package lib_test

import (
"bufio"
"bytes"
"fmt"
"io"
"log"
"os"
"os/user"
"path/filepath"
"regexp"
"strings"
"testing"

Expand Down Expand Up @@ -130,7 +134,7 @@ func TestUnzip(t *testing.T) {
cleanUp(installLocation)
}

// TestCreateDirIfNotExist : Create a directory, check directory exist,
// TestCreateDirIfNotExist : Create a directory, check directory exist
func TestCreateDirIfNotExist(t *testing.T) {

installPath := "/.terraform.versions_test/"
Expand Down Expand Up @@ -162,3 +166,126 @@ func TestCreateDirIfNotExist(t *testing.T) {

cleanUp(installLocation)
}

//TestWriteLines : write to file, check readline to verify
func TestWriteLines(t *testing.T) {

installPath := "/.terraform.versions_test/"
recentFile := "RECENT"
semverRegex := regexp.MustCompile(`\A\d+(\.\d+){2}\z`)

usr, errCurr := user.Current()
if errCurr != nil {
log.Fatal(errCurr)
}
installLocation := usr.HomeDir + installPath

createDirIfNotExist(installLocation)

test_array := []string{"0.0.1", "0.0.2", "0.0.3"}

errWrite := lib.WriteLines(test_array, installLocation+recentFile)

if errWrite != nil {
t.Logf("Write should work %v (unexpected)", errWrite)
log.Fatal(errWrite)
} else {

var (
file *os.File
part []byte
prefix bool
errOpen, errRead error
lines []string
)
if file, errOpen = os.Open(installLocation + recentFile); errOpen != nil {
log.Fatal(errOpen)
}
defer file.Close()

reader := bufio.NewReader(file)
buffer := bytes.NewBuffer(make([]byte, 0))
for {
if part, prefix, errRead = reader.ReadLine(); errRead != nil {
break
}
buffer.Write(part)
if !prefix {
lines = append(lines, buffer.String())
buffer.Reset()
}
}
if errRead == io.EOF {
errRead = nil
}

if errRead != nil {
log.Fatalf("Error: %s\n", errRead)
}

for _, line := range lines {
if !semverRegex.MatchString(line) {
log.Fatalf("Write to file is not invalid: %s\n", line)
break
}
}

t.Log("Write versions exist (expected)")
}

cleanUp(installLocation)

}

// TestReadLines : read from file, check write to verify
func TestReadLines(t *testing.T) {
installPath := "/.terraform.versions_test/"
recentFile := "RECENT"
semverRegex := regexp.MustCompile(`\A\d+(\.\d+){2}\z`)

usr, errCurr := user.Current()
if errCurr != nil {
log.Fatal(errCurr)
}
installLocation := usr.HomeDir + installPath

createDirIfNotExist(installLocation)

test_array := []string{"0.0.1", "0.0.2", "0.0.3"}

var (
file *os.File
errCreate error
)

if file, errCreate = os.Create(installLocation + recentFile); errCreate != nil {
log.Fatalf("Error: %s\n", errCreate)
}
defer file.Close()

for _, item := range test_array {
_, err := file.WriteString(strings.TrimSpace(item) + "\n")
if err != nil {
log.Fatalf("Error: %s\n", err)
break
}
}

lines, errRead := lib.ReadLines(installLocation + recentFile)

if errRead != nil {
log.Fatalf("Error: %s\n", errRead)
}

for _, line := range lines {
if !semverRegex.MatchString(line) {
log.Fatalf("Write to file is not invalid: %s\n", line)
break
}
}

t.Log("Read versions exist (expected)")

cleanUp(installLocation)

}
Loading

0 comments on commit fd95e8b

Please sign in to comment.