Skip to content

Commit

Permalink
Switched from YAML to TOML (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
moul committed Sep 10, 2015
1 parent d32dab9 commit 805a498
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 115 deletions.
10 changes: 5 additions & 5 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"sort"
"strings"

"github.com/moul/advanced-ssh-config/vendor/gopkg.in/yaml.v2"
"github.com/BurntSushi/toml"

. "github.com/moul/advanced-ssh-config/pkg/logger"
)
Expand All @@ -20,9 +20,9 @@ const defaultSshConfigPath string = "~/.ssh/config"

// Config contains a list of Hosts sections and a Defaults section representing a configuration file
type Config struct {
Hosts map[string]Host `json:"hosts"`
Defaults Host `json:"defaults",omitempty`
Includes []string `json:"includes",omitempty`
Hosts map[string]Host `toml:"Hosts" json:"hosts"`
Defaults Host `toml:"Defaults" json:"defaults",omitempty`
Includes []string `toml:"Includes" json:"includes",omitempty`

includedFiles map[string]bool
sshConfigPath string
Expand Down Expand Up @@ -148,7 +148,7 @@ func (c *Config) LoadConfig(source io.Reader) error {
if err != nil {
return err
}
err = yaml.Unmarshal(buf, &c)
err = toml.Unmarshal(buf, &c)
if err != nil {
return err
}
Expand Down
62 changes: 43 additions & 19 deletions pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,33 @@ import (

var (
configExample string = `
hosts:
aaa:
HostName: 1.2.3.4
bbb:
Port: 21
ccc:
HostName: 5.6.7.8
Port: 24
User: toor
"*.ddd":
HostName: 1.3.5.7
defaults:
Port: 22
User: root
Includes = [
"~/i/dont/exist/*.yml",
"/i/dont/exist.yml"
]
[Hosts]
[Hosts.aaa]
HostName = "1.2.3.4"
[Hosts.bbb]
Port = 21
[Hosts.ccc]
HostName = "5.6.7.8"
Port = 24
User = "toor"
[Hosts."*.ddd"]
HostName = "1.3.5.7"
[Hosts.eee]
Inherits = ["*.ddd", "aaa"]
[Defaults]
Port = 22
User = "root"
`
)

Expand Down Expand Up @@ -73,6 +86,7 @@ func dummyConfig() *Config {
Port: 22,
User: "root",
}
config.Includes = []string{"~/i/dont/exist/*.yml", "/i/dont/exist.yml"}
config.applyMissingNames()
return config
}
Expand Down Expand Up @@ -119,12 +133,12 @@ func TestConfig(t *testing.T) {
}

func TestConfig_LoadConfig(t *testing.T) {
Convey("Testing Config.LoadConfig", t, func() {
Convey("Testing Config.LoadConfig", t, FailureContinues, func() {

config := New()
err := config.LoadConfig(strings.NewReader(configExample))
So(err, ShouldBeNil)
So(len(config.Hosts), ShouldEqual, 4)
So(len(config.Hosts), ShouldEqual, 5)
So(config.Hosts["aaa"].HostName, ShouldEqual, "1.2.3.4")
So(config.Hosts["aaa"].Port, ShouldEqual, uint(0))
So(config.Hosts["aaa"].User, ShouldEqual, "")
Expand All @@ -137,8 +151,11 @@ func TestConfig_LoadConfig(t *testing.T) {
So(config.Hosts["*.ddd"].HostName, ShouldEqual, "1.3.5.7")
So(config.Hosts["*.ddd"].Port, ShouldEqual, uint(0))
So(config.Hosts["*.ddd"].User, ShouldEqual, "")
So(config.Hosts["eee"].HostName, ShouldEqual, "")
So(config.Hosts["eee"].Inherits, ShouldResemble, []string{"*.ddd", "aaa"})
So(config.Defaults.Port, ShouldEqual, uint(22))
So(config.Defaults.User, ShouldEqual, "root")
So(len(config.Includes), ShouldEqual, 2)
})
}

Expand Down Expand Up @@ -195,7 +212,10 @@ func TestConfig_JsonSring(t *testing.T) {
"Port": 22,
"User": "root"
},
"includes": null
"includes": [
"~/i/dont/exist/*.yml",
"/i/dont/exist.yml"
]
}`
json, err := config.JsonString()
So(err, ShouldBeNil)
Expand Down Expand Up @@ -318,7 +338,7 @@ func TestConfig_LoadFiles(t *testing.T) {
So(err, ShouldBeNil)
So(config.includedFiles[file.Name()], ShouldEqual, true)
So(len(config.includedFiles), ShouldEqual, 1)
So(len(config.Hosts), ShouldEqual, 4)
So(len(config.Hosts), ShouldEqual, 5)
So(config.Hosts["aaa"].HostName, ShouldEqual, "1.2.3.4")
So(config.Hosts["aaa"].Port, ShouldEqual, uint(0))
So(config.Hosts["aaa"].User, ShouldEqual, "")
Expand All @@ -331,6 +351,8 @@ func TestConfig_LoadFiles(t *testing.T) {
So(config.Hosts["*.ddd"].HostName, ShouldEqual, "1.3.5.7")
So(config.Hosts["*.ddd"].Port, ShouldEqual, uint(0))
So(config.Hosts["*.ddd"].User, ShouldEqual, "")
So(config.Hosts["eee"].HostName, ShouldEqual, "")
So(config.Hosts["eee"].Inherits, ShouldResemble, []string{"*.ddd", "aaa"})
So(config.Defaults.Port, ShouldEqual, uint(22))
So(config.Defaults.User, ShouldEqual, "root")
})
Expand All @@ -341,7 +363,7 @@ func TestConfig_LoadFiles(t *testing.T) {
So(err, ShouldBeNil)
So(config.includedFiles[file.Name()], ShouldEqual, true)
So(len(config.includedFiles), ShouldEqual, 1)
So(len(config.Hosts), ShouldEqual, 4)
So(len(config.Hosts), ShouldEqual, 5)
So(config.Hosts["aaa"].HostName, ShouldEqual, "1.2.3.4")
So(config.Hosts["aaa"].Port, ShouldEqual, uint(0))
So(config.Hosts["aaa"].User, ShouldEqual, "")
Expand All @@ -354,6 +376,8 @@ func TestConfig_LoadFiles(t *testing.T) {
So(config.Hosts["*.ddd"].HostName, ShouldEqual, "1.3.5.7")
So(config.Hosts["*.ddd"].Port, ShouldEqual, uint(0))
So(config.Hosts["*.ddd"].User, ShouldEqual, "")
So(config.Hosts["eee"].HostName, ShouldEqual, "")
So(config.Hosts["eee"].Inherits, ShouldResemble, []string{"*.ddd", "aaa"})
So(config.Defaults.Port, ShouldEqual, uint(22))
So(config.Defaults.User, ShouldEqual, "root")
})
Expand Down
Loading

0 comments on commit 805a498

Please sign in to comment.