feat(ego-mgr): add lookup subcommand
ego-mgr lookup <username> - Finds agent whose default-username == username - Echoes the agent-id (map key in agent-scope) - Exits 7 if not found or column missing
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user