Skip to content

Commit

Permalink
rearrange remaining interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
drlau committed Jan 31, 2021
1 parent 41f64a9 commit d1d2d46
Show file tree
Hide file tree
Showing 23 changed files with 392 additions and 385 deletions.
49 changes: 5 additions & 44 deletions cmd/akashi.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,15 @@ package cmd
import (
"fmt"
"io"
"io/ioutil"
"os"

"github.com/spf13/cobra"
yaml "gopkg.in/yaml.v2"

"github.com/drlau/akashi/internal/compare"
comparecmd "github.com/drlau/akashi/pkg/cmd/compare"
diffcmd "github.com/drlau/akashi/pkg/cmd/diff"
versioncmd "github.com/drlau/akashi/pkg/cmd/version"
"github.com/drlau/akashi/pkg/compare"
"github.com/drlau/akashi/pkg/plan"
"github.com/drlau/akashi/pkg/ruleset"
"github.com/drlau/akashi/pkg/utils"
)

Expand Down Expand Up @@ -69,52 +66,16 @@ func NewCommand() *cobra.Command {
}

func run(_ *cobra.Command, args []string) error {
rulesetFile, err := ioutil.ReadFile(args[0])
comparers, err := compare.Comparers(args[0])
if err != nil {
return err
}

var rs ruleset.Ruleset
err = yaml.Unmarshal(rulesetFile, &rs)
in, err := plan.NewResourcePlans(file, json)
if err != nil {
return err
}

var in []plan.ResourceChange
var data io.Reader

if file != "" {
data, err = os.Open(file)
if err != nil {
return err
}
} else {
data = os.Stdin
}

if json {
in, err = plan.NewResourcePlanFromJSON(data)
if err != nil {
return err
}
} else {
in, err = plan.NewResourcePlanFromPlanOutput(data)
if err != nil {
return err
}
}

comparers := make(map[string]compare.Comparer)
if rs.CreatedResources != nil {
comparers[createKey] = compare.NewCreateComparer(*rs.CreatedResources)
}
if rs.DestroyedResources != nil {
comparers[destroyKey] = compare.NewDestroyComparer(*rs.DestroyedResources)
}
if rs.UpdatedResources != nil {
comparers[updateKey] = compare.NewUpdateComparer(*rs.UpdatedResources)
}

if quiet {
fmt.Fprintln(os.Stderr, `[WARN] -q is deprecated. Please run "akashi compare" instead.`)
os.Exit(runCompare(in, comparers))
Expand All @@ -126,7 +87,7 @@ func run(_ *cobra.Command, args []string) error {
return nil
}

func runCompare(rc []plan.ResourceChange, comparers map[string]compare.Comparer) int {
func runCompare(rc []plan.ResourcePlan, comparers map[string]compare.Comparer) int {
createComparer, hasCreate := comparers[createKey]
destroyComparer, hasDestroy := comparers[destroyKey]
updateComparer, hasUpdate := comparers[updateKey]
Expand All @@ -152,7 +113,7 @@ func runCompare(rc []plan.ResourceChange, comparers map[string]compare.Comparer)
return 0
}

func runDiff(out io.Writer, rc []plan.ResourceChange, comparers map[string]compare.Comparer) int {
func runDiff(out io.Writer, rc []plan.ResourcePlan, comparers map[string]compare.Comparer) int {
exitCode := 0
createComparer, hasCreate := comparers[createKey]
destroyComparer, hasDestroy := comparers[destroyKey]
Expand Down
73 changes: 37 additions & 36 deletions cmd/akashi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ import (
"strings"
"testing"

"github.com/drlau/akashi/pkg/compare"
comparefakes "github.com/drlau/akashi/pkg/compare/fakes"
"github.com/drlau/akashi/internal/compare"
comparefakes "github.com/drlau/akashi/internal/compare/fakes"
"github.com/drlau/akashi/pkg/plan"
planfakes "github.com/drlau/akashi/pkg/plan/fakes"
)

func TestRunCompare(t *testing.T) {
cases := map[string]struct {
comparers map[string]compare.Comparer
resourceChange []plan.ResourceChange
resourceChange []plan.ResourcePlan
expected int
}{
"create returns false with create resource": {
Expand All @@ -22,8 +23,8 @@ func TestRunCompare(t *testing.T) {
CompareReturns: false,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -37,8 +38,8 @@ func TestRunCompare(t *testing.T) {
CompareReturns: true,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -52,8 +53,8 @@ func TestRunCompare(t *testing.T) {
CompareReturns: false,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
NameReturns: "name",
TypeReturns: "type",
},
Expand All @@ -66,13 +67,13 @@ func TestRunCompare(t *testing.T) {
CompareReturns: true,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
CreateReturns: true,
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -89,13 +90,13 @@ func TestRunCompare(t *testing.T) {
CompareReturns: true,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
DeleteReturns: true,
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -120,7 +121,7 @@ func TestRunCompare(t *testing.T) {
func TestRunDiff(t *testing.T) {
cases := map[string]struct {
comparers map[string]compare.Comparer
resourceChange []plan.ResourceChange
resourceChange []plan.ResourcePlan
preHook func()
expected int
expectedOutput []string
Expand All @@ -132,8 +133,8 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer fail",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address",
NameReturns: "name",
Expand All @@ -150,8 +151,8 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer ok",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address",
NameReturns: "name",
Expand All @@ -167,8 +168,8 @@ func TestRunDiff(t *testing.T) {
DiffReturns: false,
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
AddressReturns: "address",
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -184,8 +185,8 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer fail",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
AddressReturns: "address",
NameReturns: "name",
TypeReturns: "type",
Expand All @@ -204,14 +205,14 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer ok",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address1",
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address2",
NameReturns: "name",
Expand All @@ -232,14 +233,14 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer ok",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address1",
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
DeleteReturns: true,
AddressReturns: "address2",
NameReturns: "name",
Expand All @@ -260,14 +261,14 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer ok",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address1",
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
DeleteReturns: true,
AddressReturns: "address2",
NameReturns: "name",
Expand All @@ -291,14 +292,14 @@ func TestRunDiff(t *testing.T) {
DiffOutput: "comparer ok",
},
},
resourceChange: []plan.ResourceChange{
&comparefakes.FakeResourceChange{
resourceChange: []plan.ResourcePlan{
&planfakes.FakeResourcePlan{
CreateReturns: true,
AddressReturns: "address1",
NameReturns: "name",
TypeReturns: "type",
},
&comparefakes.FakeResourceChange{
&planfakes.FakeResourcePlan{
DeleteReturns: true,
AddressReturns: "address2",
NameReturns: "name",
Expand Down
12 changes: 9 additions & 3 deletions internal/factory/compare.go → internal/compare/compare.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package factory
package compare

import (
"io/ioutil"

"github.com/drlau/akashi/pkg/compare"
"github.com/drlau/akashi/pkg/plan"
"github.com/drlau/akashi/pkg/ruleset"
yaml "gopkg.in/yaml.v2"
)

type Comparer interface {
Compare(plan.ResourcePlan) bool
Diff(plan.ResourcePlan) (string, bool)
}

const (
CreateKey = "create"
DestroyKey = "destroy"
Expand All @@ -16,8 +22,8 @@ const (

// TODO: re-arrange to make interface here

func Comparers(path string) (map[string]compare.Comparer, error) {
comparers := make(map[string]compare.Comparer)
func Comparers(path string) (map[string]Comparer, error) {
comparers := make(map[string]Comparer)
rulesetFile, err := ioutil.ReadFile(path)
if err != nil {
return comparers, err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ type FakeComparer struct {
DiffOutput string
}

func (r *FakeComparer) Compare(rc plan.ResourceChange) bool {
func (r *FakeComparer) Compare(rc plan.ResourcePlan) bool {
return r.CompareReturns
}

func (r *FakeComparer) Diff(rc plan.ResourceChange) (string, bool) {
func (r *FakeComparer) Diff(rc plan.ResourcePlan) (string, bool) {
return r.DiffOutput, r.DiffReturns
}
31 changes: 0 additions & 31 deletions internal/factory/plan.go

This file was deleted.

Loading

0 comments on commit d1d2d46

Please sign in to comment.