diff --git a/main.go b/main.go index bac37b4..79d3b50 100644 --- a/main.go +++ b/main.go @@ -192,11 +192,11 @@ func main() { } // Properties - for propertyName, propertyValue := range definition.Properties { + for _, property := range definition.SortedProperties() { instantiation = append(instantiation, &ast.AssignStmt{ Tok: token.ASSIGN, - Lhs: []ast.Expr{&ast.Ident{Name: serviceTempVariable + "." + propertyName}}, - Rhs: []ast.Expr{&ast.Ident{Name: resolveStatement(propertyValue)}}, + Lhs: []ast.Expr{&ast.Ident{Name: serviceTempVariable + "." + property.Name}}, + Rhs: []ast.Expr{&ast.Ident{Name: resolveStatement(property.Value)}}, }) } diff --git a/property.go b/property.go new file mode 100644 index 0000000..d2d4a1d --- /dev/null +++ b/property.go @@ -0,0 +1,5 @@ +package main + +type Property struct { + Name, Value string +} diff --git a/service.go b/service.go index f135571..df48864 100644 --- a/service.go +++ b/service.go @@ -1,5 +1,7 @@ package main +import "sort" + type Service struct { Type Type Interface Type @@ -42,3 +44,21 @@ func (service *Service) Imports() map[string]string { return imports } + +func (service *Service) SortedProperties() (sortedProperties []*Property) { + var propertyNames []string + for propertyName := range service.Properties { + propertyNames = append(propertyNames, propertyName) + } + + sort.Strings(propertyNames) + + for _, propertyName := range propertyNames { + sortedProperties = append(sortedProperties, &Property{ + Name: propertyName, + Value: service.Properties[propertyName], + }) + } + + return +}