1
0
mirror of https://github.com/directorz/mailfull-go.git synced 2025-12-17 09:37:02 +00:00

Merge pull request #27 from directorz/feature/remove_types_for_sort

Remove types for sort.Interface #26
This commit is contained in:
teru
2017-07-25 12:31:39 +09:00
committed by GitHub
9 changed files with 10 additions and 38 deletions

View File

@@ -15,13 +15,6 @@ type AliasDomain struct {
target string target string
} }
// AliasDomainSlice attaches the methods of sort.Interface to []*AliasDomain.
type AliasDomainSlice []*AliasDomain
func (p AliasDomainSlice) Len() int { return len(p) }
func (p AliasDomainSlice) Less(i, j int) bool { return p[i].Name() < p[j].Name() }
func (p AliasDomainSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
// NewAliasDomain creates a new AliasDomain instance. // NewAliasDomain creates a new AliasDomain instance.
func NewAliasDomain(name, target string) (*AliasDomain, error) { func NewAliasDomain(name, target string) (*AliasDomain, error) {
ad := &AliasDomain{} ad := &AliasDomain{}
@@ -190,7 +183,7 @@ func (r *Repository) writeAliasDomainsFile(aliasDomains []*AliasDomain) error {
} }
defer file.Close() defer file.Close()
sort.Sort(AliasDomainSlice(aliasDomains)) sort.Slice(aliasDomains, func(i, j int) bool { return aliasDomains[i].Name() < aliasDomains[j].Name() })
for _, aliasDomain := range aliasDomains { for _, aliasDomain := range aliasDomains {
if _, err := fmt.Fprintf(file, "%s:%s\n", aliasDomain.Name(), aliasDomain.Target()); err != nil { if _, err := fmt.Fprintf(file, "%s:%s\n", aliasDomain.Name(), aliasDomain.Target()); err != nil {

View File

@@ -21,13 +21,6 @@ type AliasUser struct {
targets []string targets []string
} }
// AliasUserSlice attaches the methods of sort.Interface to []*AliasUser.
type AliasUserSlice []*AliasUser
func (p AliasUserSlice) Len() int { return len(p) }
func (p AliasUserSlice) Less(i, j int) bool { return p[i].Name() < p[j].Name() }
func (p AliasUserSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
// NewAliasUser creates a new AliasUser instance. // NewAliasUser creates a new AliasUser instance.
func NewAliasUser(name string, targets []string) (*AliasUser, error) { func NewAliasUser(name string, targets []string) (*AliasUser, error) {
au := &AliasUser{} au := &AliasUser{}
@@ -233,7 +226,7 @@ func (r *Repository) writeAliasUsersFile(domainName string, aliasUsers []*AliasU
} }
defer file.Close() defer file.Close()
sort.Sort(AliasUserSlice(aliasUsers)) sort.Slice(aliasUsers, func(i, j int) bool { return aliasUsers[i].Name() < aliasUsers[j].Name() })
for _, aliasUser := range aliasUsers { for _, aliasUser := range aliasUsers {
if _, err := fmt.Fprintf(file, "%s:%s\n", aliasUser.Name(), strings.Join(aliasUser.Targets(), ",")); err != nil { if _, err := fmt.Fprintf(file, "%s:%s\n", aliasUser.Name(), strings.Join(aliasUser.Targets(), ",")); err != nil {

View File

@@ -60,7 +60,7 @@ func (c *CmdAliasDomains) Run(args []string) int {
c.Meta.Errorf("%v\n", err) c.Meta.Errorf("%v\n", err)
return 1 return 1
} }
sort.Sort(mailfull.AliasDomainSlice(aliasDomains)) sort.Slice(aliasDomains, func(i, j int) bool { return aliasDomains[i].Name() < aliasDomains[j].Name() })
for _, aliasDomain := range aliasDomains { for _, aliasDomain := range aliasDomains {
if targetDomainName != "" { if targetDomainName != "" {

View File

@@ -57,7 +57,7 @@ func (c *CmdAliasUsers) Run(args []string) int {
c.Meta.Errorf("%v\n", err) c.Meta.Errorf("%v\n", err)
return 1 return 1
} }
sort.Sort(mailfull.AliasUserSlice(aliasUsers)) sort.Slice(aliasUsers, func(i, j int) bool { return aliasUsers[i].Name() < aliasUsers[j].Name() })
for _, aliasUser := range aliasUsers { for _, aliasUser := range aliasUsers {
fmt.Fprintf(c.UI.Writer, "%s\n", aliasUser.Name()) fmt.Fprintf(c.UI.Writer, "%s\n", aliasUser.Name())

View File

@@ -47,7 +47,7 @@ func (c *CmdDomains) Run(args []string) int {
c.Meta.Errorf("%v\n", err) c.Meta.Errorf("%v\n", err)
return 1 return 1
} }
sort.Sort(mailfull.DomainSlice(domains)) sort.Slice(domains, func(i, j int) bool { return domains[i].Name() < domains[j].Name() })
for _, domain := range domains { for _, domain := range domains {
disableStr := "" disableStr := ""

View File

@@ -57,7 +57,7 @@ func (c *CmdUsers) Run(args []string) int {
c.Meta.Errorf("%v\n", err) c.Meta.Errorf("%v\n", err)
return 1 return 1
} }
sort.Sort(mailfull.UserSlice(users)) sort.Slice(users, func(i, j int) bool { return users[i].Name() < users[j].Name() })
for _, user := range users { for _, user := range users {
fmt.Fprintf(c.UI.Writer, "%s\n", user.Name()) fmt.Fprintf(c.UI.Writer, "%s\n", user.Name())

View File

@@ -11,12 +11,12 @@ import (
// GenerateDatabases generates databases from the MailData directory. // GenerateDatabases generates databases from the MailData directory.
func (r *Repository) GenerateDatabases(md *MailData) error { func (r *Repository) GenerateDatabases(md *MailData) error {
sort.Sort(DomainSlice(md.Domains)) sort.Slice(md.Domains, func(i, j int) bool { return md.Domains[i].Name() < md.Domains[j].Name() })
sort.Sort(AliasDomainSlice(md.AliasDomains)) sort.Slice(md.AliasDomains, func(i, j int) bool { return md.AliasDomains[i].Name() < md.AliasDomains[j].Name() })
for _, domain := range md.Domains { for _, domain := range md.Domains {
sort.Sort(UserSlice(domain.Users)) sort.Slice(domain.Users, func(i, j int) bool { return domain.Users[i].Name() < domain.Users[j].Name() })
sort.Sort(AliasUserSlice(domain.AliasUsers)) sort.Slice(domain.AliasUsers, func(i, j int) bool { return domain.AliasUsers[i].Name() < domain.AliasUsers[j].Name() })
} }
// Generate files // Generate files

View File

@@ -17,13 +17,6 @@ type Domain struct {
CatchAllUser *CatchAllUser CatchAllUser *CatchAllUser
} }
// DomainSlice attaches the methods of sort.Interface to []*Domain.
type DomainSlice []*Domain
func (p DomainSlice) Len() int { return len(p) }
func (p DomainSlice) Less(i, j int) bool { return p[i].Name() < p[j].Name() }
func (p DomainSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
// NewDomain creates a new Domain instance. // NewDomain creates a new Domain instance.
func NewDomain(name string) (*Domain, error) { func NewDomain(name string) (*Domain, error) {
d := &Domain{} d := &Domain{}

View File

@@ -19,13 +19,6 @@ type User struct {
forwards []string forwards []string
} }
// UserSlice attaches the methods of sort.Interface to []*User.
type UserSlice []*User
func (p UserSlice) Len() int { return len(p) }
func (p UserSlice) Less(i, j int) bool { return p[i].Name() < p[j].Name() }
func (p UserSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
// NewUser creates a new User instance. // NewUser creates a new User instance.
func NewUser(name, hashedPassword string, forwards []string) (*User, error) { func NewUser(name, hashedPassword string, forwards []string) (*User, error) {
u := &User{} u := &User{}