feat(ego-mgr): add lookup subcommand #15

Merged
hzhang merged 1 commits from feat/ego-mgr-lookup into main 2026-04-14 21:35:37 +00:00

View File

@@ -17,13 +17,14 @@ const (
// Exit codes per spec // Exit codes per spec
const ( const (
ExitSuccess = 0 ExitSuccess = 0
ExitUsageError = 1 ExitUsageError = 1
ExitColumnNotFound = 2 ExitColumnNotFound = 2
ExitColumnExists = 3 ExitColumnExists = 3
ExitPermission = 4 ExitPermission = 4
ExitLockFailed = 5 ExitLockFailed = 5
ExitJSONError = 6 ExitJSONError = 6
ExitNotFound = 7
) )
// EgoData is the on-disk JSON structure // EgoData is the on-disk JSON structure
@@ -185,7 +186,7 @@ Examples:
ego-mgr delete name`, ego-mgr delete name`,
} }
rootCmd.AddCommand(addCmd(), deleteCmd(), setCmd(), getCmd(), showCmd(), listCmd()) rootCmd.AddCommand(addCmd(), deleteCmd(), setCmd(), getCmd(), showCmd(), listCmd(), lookupCmd())
if err := rootCmd.Execute(); err != nil { if err := rootCmd.Execute(); err != nil {
os.Exit(ExitUsageError) os.Exit(ExitUsageError)
@@ -480,3 +481,37 @@ func listColumnsCmd() *cobra.Command {
} }
return cmd return cmd
} }
func lookupCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "lookup <username>",
Short: "Look up an agent ID by default-username",
Args: cobra.ExactArgs(1),
Run: func(cmd *cobra.Command, args []string) {
username := args[0]
data, err := readEgoData()
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(ExitJSONError)
}
// Verify default-username column exists
if !isAgentColumn(data, "default-username") {
fmt.Fprintf(os.Stderr, "Error: column 'default-username' does not exist\n")
os.Exit(ExitColumnNotFound)
}
for agentID, agentData := range data.AgentScope {
if agentData["default-username"] == username {
fmt.Print(agentID)
return
}
}
fmt.Fprintf(os.Stderr, "Error: no agent found with default-username '%s'\n", username)
os.Exit(ExitNotFound)
},
}
return cmd
}