// Run runs the command and returns the exit status. func (c *AliasUserAddCommand) Run(args []string) int { noCommit, err := noCommitFlag(&args) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } if len(args) < 2 { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } address := args[0] targets := args[1:] words := strings.Split(address, "@") if len(words) != 2 { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } aliasUserName := words[0] domainName := words[1] repo, err := mailfull.OpenRepository(".") if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } aliasUser, err := mailfull.NewAliasUser(aliasUserName, targets) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } if err := repo.AliasUserCreate(domainName, aliasUser); err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } if noCommit { return 0 } mailData, err := repo.MailData() if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } err = repo.GenerateDatabases(mailData) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } return 0 }
// Run runs the command and returns the exit status. func (c *AliasDomainAddCommand) Run(args []string) int { noCommit, err := noCommitFlag(&args) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } if len(args) != 2 { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } aliasDomainName := args[0] targetDomainName := args[1] repo, err := mailfull.OpenRepository(".") if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } aliasDomain, err := mailfull.NewAliasDomain(aliasDomainName, targetDomainName) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } if err := repo.AliasDomainCreate(aliasDomain); err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } if noCommit { return 0 } mailData, err := repo.MailData() if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } err = repo.GenerateDatabases(mailData) if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } return 0 }
// Run runs the command and returns the exit status. func (c *AliasDomainsCommand) Run(args []string) int { if len(args) > 1 { fmt.Fprintf(c.UI.ErrorWriter, "%v\n", c.Help()) return 1 } targetDomainName := "" if len(args) == 1 { targetDomainName = args[0] } repo, err := mailfull.OpenRepository(".") if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } aliasDomains, err := repo.AliasDomains() if err != nil { fmt.Fprintf(c.UI.ErrorWriter, "[ERR] %v\n", err) return 1 } sort.Sort(mailfull.AliasDomainSlice(aliasDomains)) for _, aliasDomain := range aliasDomains { if targetDomainName != "" { if aliasDomain.Target() == targetDomainName { fmt.Fprintf(c.UI.Writer, "%s\n", aliasDomain.Name()) } } else { fmt.Fprintf(c.UI.Writer, "%s\n", aliasDomain.Name()) } } return 0 }