diff --git a/src/main/java/io/airlift/airline/Cli.java b/src/main/java/io/airlift/airline/Cli.java index 13f7533f1..5feed83fe 100644 --- a/src/main/java/io/airlift/airline/Cli.java +++ b/src/main/java/io/airlift/airline/Cli.java @@ -117,13 +117,20 @@ public C parse(Iterable args) CommandMetadata command = state.getCommand(); - return createInstance(command.getType(), + ImmutableMap.Builder, Object> bindings = ImmutableMap.builder(); + bindings.put(GlobalMetadata.class, metadata); + if (state.getGroup() != null) { + bindings.put(CommandGroupMetadata.class, state.getGroup()); + } + bindings.put(CommandMetadata.class, command); + + return createInstance(command.getType(), command.getAllOptions(), state.getParsedOptions(), command.getArguments(), state.getParsedArguments(), command.getMetadataInjections(), - ImmutableMap., Object>of(GlobalMetadata.class, metadata)); + bindings.build()); } private void validate(ParseState state)