Skip to content

Handle command name/alias collision properly #371

Open
@daxian-dbw

Description

@daxian-dbw

Summary of the new feature / enhancement

Command names and aliases may collide. Today, we don't handle it, so an exception will be thrown when collision happens. We should handle the name/alias collision gracefully.

// The 'command.Name' is included in the 'command.Aliases' collection.
// TODO: need to think about how to handle command names/aliases collision.
// We don't handle collision today -- it will throw when collision happens.
foreach (string alias in command.Aliases)
{
_commands.Add(alias, command);
}

// The 'command.Name' is included in the 'command.Aliases' collection.
// TODO: need to update accordingly when we handle command names/aliases collision.
foreach (string alias in command.Aliases)
{
_commands.Remove(alias);
}

Proposed technical implementation details (optional)

We load commands from an agent when switching to the agent and unload its commands when switching away from it. So, at a given time, only commands from one agent will co-exist with the core commands. Therefore, we shouldn't allow a name/alias to overwrite an existing one and hence we should throw a good error when collision happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions