Skip to content

Commit 781fb35

Browse files
authored
Merge pull request #8 from dreamteam-gg/modules-refector
Add go modules and refactor packages
2 parents b1f5e0f + 2358f2b commit 781fb35

File tree

14 files changed

+175
-71
lines changed

14 files changed

+175
-71
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
!.vscode/tasks.json
88
!.vscode/launch.json
99
!.vscode/extensions.json
10+
terraform-variables-generator

.travis.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
language: go
22
go:
3-
- 1.9
3+
- 1.12
4+
env:
5+
- GO111MODULE=on
46
# Don't email me the results of the test runs.
57
notifications:
68
email: false
79
before_script:
8-
- go get github.com/golang/lint/golint # Linter
10+
- go get -u golang.org/x/lint/golint # Linter
11+
- go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
912

1013
script:
1114
- go test -v -race ./... # Run all the tests with the race detector enabled
1215
- go vet ./... # go vet is the official Go static analyzer
13-
- golint -set_exit_status $(go list ./...) # one last linter
16+
- golint -set_exit_status $(go list ./...) # one last linter
17+
- golangci-lint run # some more linters

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## (Unreleased)
2+
3+
ENHANCEMENTS:
4+
* Optimize project structure, split to separate packages and add cobra for cli

cmd/cmd.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
"github.com/spf13/cobra"
8+
9+
log "github.com/sirupsen/logrus"
10+
11+
"github.com/alexandrst88/terraform-variables-generator/pkg/generator"
12+
"github.com/alexandrst88/terraform-variables-generator/pkg/utils"
13+
)
14+
15+
const (
16+
tfFileExt = "*.tf"
17+
)
18+
19+
var (
20+
generatorVersion string
21+
22+
vars bool
23+
varsFile string
24+
)
25+
26+
// Execute will run main logic
27+
func Execute(version string) {
28+
generatorVersion = version
29+
30+
cmd := &cobra.Command{
31+
Use: "generator",
32+
Short: "CLI for generating terraform variables",
33+
Example: " terraform-variable-generator",
34+
Version: generatorVersion,
35+
Run: runGenerator,
36+
}
37+
38+
cmd.PersistentFlags().BoolVar(&vars, "vars", true, "generate variables")
39+
cmd.PersistentFlags().StringVar(&varsFile, "vars-file", "./variables.tf", "path to generated variables file")
40+
41+
if err := cmd.Execute(); err != nil {
42+
fmt.Println(err)
43+
os.Exit(1)
44+
}
45+
os.Exit(0)
46+
}
47+
48+
func runGenerator(cmd *cobra.Command, args []string) {
49+
if vars {
50+
if utils.FileExists(varsFile) {
51+
utils.UserPromt(varsFile)
52+
}
53+
54+
tfFiles, err := utils.GetAllFiles(tfFileExt)
55+
utils.CheckError(err)
56+
if len(tfFiles) == 0 {
57+
log.Warn("No terraform files to proceed, exiting")
58+
return
59+
}
60+
61+
generator.GenerateVars(tfFiles, varsFile)
62+
}
63+
}

go.mod

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module github.com/alexandrst88/terraform-variables-generator
2+
3+
go 1.12
4+
5+
require (
6+
github.com/sirupsen/logrus v1.4.1
7+
github.com/spf13/cobra v0.0.3
8+
github.com/spf13/pflag v1.0.3 // indirect
9+
)

go.sum

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2+
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
3+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4+
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
5+
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
6+
github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=
7+
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
8+
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
9+
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
10+
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
11+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
12+
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8=
13+
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=

helpers.go

Lines changed: 0 additions & 37 deletions
This file was deleted.

main.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package main
2+
3+
import "github.com/alexandrst88/terraform-variables-generator/cmd"
4+
5+
// Version is updated by linker flags during build time
6+
var Version = "dev"
7+
8+
func main() {
9+
cmd.Execute(Version)
10+
}
File renamed without changes.

terraform.go renamed to pkg/generator/terraform.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package main
1+
package generator
22

33
import (
44
"regexp"
55
"sort"
66
"strings"
7+
8+
"github.com/alexandrst88/terraform-variables-generator/pkg/utils"
79
)
810

911
type terraformVars struct {
@@ -16,13 +18,13 @@ func (t *terraformVars) matchVarPref(row, varPrefix string) {
1618
match := pattern.FindAllStringSubmatch(row, -1)
1719
for _, m := range match {
1820
res := replacer.Replace(m[0])
19-
if !containsElement(t.Variables, res) {
21+
if !utils.ContainsElement(t.Variables, res) {
2022
t.Variables = append(t.Variables, res)
2123
}
2224
}
2325
}
2426
}
2527

2628
func (t *terraformVars) sortVars() {
27-
sort.Sort(sort.StringSlice(t.Variables))
29+
sort.Strings(t.Variables)
2830
}

0 commit comments

Comments
 (0)