package game import ( "fmt" "sort" "strings" "thehouseoficarus/internal/net" ) func (g *Game) executeAlias(sess *net.Session, args []string, rawInput string) { g.doAlias(sess, args) } func (g *Game) executeUnalias(sess *net.Session, args []string, rawInput string) { g.doUnalias(sess, args) } func (g *Game) doAlias(sess *net.Session, args []string) { if sess.Account == nil { sess.WriteLine("No account loaded.") return } if len(args) == 0 { if len(sess.Account.Aliases) == 0 { sess.WriteLine("No aliases defined. Use ALIAS to create one.") return } sess.WriteLine("Aliases:") names := make([]string, 0, len(sess.Account.Aliases)) maxLen := 0 for name := range sess.Account.Aliases { names = append(names, name) if len(name) > maxLen { maxLen = len(name) } } sort.Strings(names) for _, name := range names { sess.WriteLine(fmt.Sprintf(" %-*s: %s", maxLen, name, sess.Account.Aliases[name])) } return } if len(args) < 2 { sess.WriteLine("Usage: ALIAS ") return } aliasName := strings.ToLower(args[0]) aliasCmd := strings.Join(args[1:], " ") if sess.Account.Aliases == nil { sess.Account.Aliases = make(map[string]string) } sess.Account.Aliases[aliasName] = aliasCmd acc, err := g.AccountStore.LoadAccount(sess.Account.Name) if err != nil { sess.WriteLine("Error saving alias.") return } acc.Aliases = sess.Account.Aliases if err := g.AccountStore.SaveAccount(acc); err != nil { sess.WriteLine("Error saving alias.") return } sess.WriteLine(fmt.Sprintf("Alias set: %s -> %s", aliasName, aliasCmd)) } func (g *Game) doUnalias(sess *net.Session, args []string) { if sess.Account == nil { sess.WriteLine("No account loaded.") return } if len(args) == 0 { sess.WriteLine("Usage: UNALIAS ") sess.WriteLine("Removes an alias. Use ALIAS with no arguments to see your aliases.") return } aliasName := strings.ToLower(args[0]) if sess.Account.Aliases == nil { sess.Account.Aliases = make(map[string]string) } if _, ok := sess.Account.Aliases[aliasName]; !ok { sess.WriteLine(fmt.Sprintf("No alias '%s' found.", aliasName)) return } delete(sess.Account.Aliases, aliasName) acc, err := g.AccountStore.LoadAccount(sess.Account.Name) if err != nil { sess.WriteLine("Error saving alias.") return } acc.Aliases = sess.Account.Aliases if err := g.AccountStore.SaveAccount(acc); err != nil { sess.WriteLine("Error saving alias.") return } sess.WriteLine(fmt.Sprintf("Alias '%s' removed.", aliasName)) }