From d9b1e47d5dfb8014cc17510dcaf32b7083dcac14 Mon Sep 17 00:00:00 2001 From: Remko Popma Date: Mon, 31 Oct 2022 15:55:26 -0400 Subject: [PATCH] Release picocli version 4.7.0 --- README.md | 22 +- RELEASE-NOTES.md | 8 +- dependencies.gradle | 6 +- docs/A-Whirlwind-Tour-of-Picocli.html | 41 +- docs/announcing-picocli-1.0.html | 45 +- docs/apidocs-all/allclasses-frame.html | 3 +- docs/apidocs-all/allclasses-index.html | 130 +-- docs/apidocs-all/allclasses-noframe.html | 3 +- docs/apidocs-all/allpackages-index.html | 4 +- docs/apidocs-all/constant-values.html | 6 +- docs/apidocs-all/deprecated-list.html | 4 +- docs/apidocs-all/help-doc.html | 4 +- docs/apidocs-all/index-files/index-1.html | 4 +- docs/apidocs-all/index-files/index-10.html | 4 +- docs/apidocs-all/index-files/index-11.html | 4 +- docs/apidocs-all/index-files/index-12.html | 4 +- docs/apidocs-all/index-files/index-13.html | 4 +- docs/apidocs-all/index-files/index-14.html | 4 +- docs/apidocs-all/index-files/index-15.html | 4 +- docs/apidocs-all/index-files/index-16.html | 6 +- docs/apidocs-all/index-files/index-17.html | 4 +- docs/apidocs-all/index-files/index-18.html | 4 +- docs/apidocs-all/index-files/index-19.html | 4 +- docs/apidocs-all/index-files/index-2.html | 4 +- docs/apidocs-all/index-files/index-20.html | 4 +- docs/apidocs-all/index-files/index-21.html | 4 +- docs/apidocs-all/index-files/index-22.html | 6 +- docs/apidocs-all/index-files/index-23.html | 4 +- docs/apidocs-all/index-files/index-3.html | 8 +- docs/apidocs-all/index-files/index-4.html | 4 +- docs/apidocs-all/index-files/index-5.html | 6 +- docs/apidocs-all/index-files/index-6.html | 4 +- docs/apidocs-all/index-files/index-7.html | 8 +- docs/apidocs-all/index-files/index-8.html | 4 +- docs/apidocs-all/index-files/index-9.html | 12 +- docs/apidocs-all/index.html | 2 +- .../info.picocli.codegen/module-frame.html | 2 +- .../info.picocli.codegen/module-summary.html | 4 +- .../module-type-frame.html | 2 +- .../AbstractCommandSpecProcessor.html | 4 +- .../processing/AnnotatedElementHolder.html | 4 +- .../annotation/processing/ITypeMetaData.html | 4 +- .../AbstractCommandSpecProcessor.html | 4 +- .../class-use/AnnotatedElementHolder.html | 4 +- .../processing/class-use/ITypeMetaData.html | 4 +- .../annotation/processing/package-frame.html | 2 +- .../processing/package-summary.html | 4 +- .../annotation/processing/package-tree.html | 4 +- .../annotation/processing/package-use.html | 4 +- .../graalvm/DynamicProxyConfigGenerator.html | 12 +- .../aot/graalvm/JniConfigGenerator.html | 4 +- .../graalvm/ReflectionConfigGenerator.html | 12 +- .../aot/graalvm/ResourceConfigGenerator.html | 12 +- .../DynamicProxyConfigGenerator.html | 4 +- .../graalvm/class-use/JniConfigGenerator.html | 4 +- .../class-use/ReflectionConfigGenerator.html | 4 +- .../class-use/ResourceConfigGenerator.html | 4 +- .../codegen/aot/graalvm/package-frame.html | 2 +- .../codegen/aot/graalvm/package-summary.html | 4 +- .../codegen/aot/graalvm/package-tree.html | 4 +- .../codegen/aot/graalvm/package-use.html | 4 +- .../NativeImageConfigGeneratorProcessor.html | 4 +- .../NativeImageConfigGeneratorProcessor.html | 4 +- .../aot/graalvm/processor/package-frame.html | 2 +- .../graalvm/processor/package-summary.html | 4 +- .../aot/graalvm/processor/package-tree.html | 4 +- .../aot/graalvm/processor/package-use.html | 4 +- .../docgen/manpage/ManPageGenerator.html | 4 +- .../manpage/class-use/ManPageGenerator.html | 4 +- .../codegen/docgen/manpage/package-frame.html | 2 +- .../docgen/manpage/package-summary.html | 4 +- .../codegen/docgen/manpage/package-tree.html | 4 +- .../codegen/docgen/manpage/package-use.html | 4 +- .../picocli/codegen/util/Assert.html | 4 +- .../picocli/codegen/util/JulLogFormatter.html | 4 +- .../picocli/codegen/util/Util.html | 4 +- .../codegen/util/class-use/Assert.html | 4 +- .../util/class-use/JulLogFormatter.html | 4 +- .../picocli/codegen/util/class-use/Util.html | 4 +- .../picocli/codegen/util/package-frame.html | 2 +- .../picocli/codegen/util/package-summary.html | 4 +- .../picocli/codegen/util/package-tree.html | 4 +- .../picocli/codegen/util/package-use.html | 4 +- .../info.picocli.groovy/module-frame.html | 2 +- .../info.picocli.groovy/module-summary.html | 4 +- .../module-type-frame.html | 2 +- .../picocli/groovy/PicocliBaseScript.html | 4 +- .../picocli/groovy/PicocliBaseScript2.html | 4 +- .../picocli/groovy/PicocliScript.html | 4 +- .../picocli/groovy/PicocliScript2.html | 4 +- .../PicocliScriptASTTransformation.html | 4 +- .../groovy/class-use/PicocliBaseScript.html | 4 +- .../groovy/class-use/PicocliBaseScript2.html | 4 +- .../groovy/class-use/PicocliScript.html | 4 +- .../groovy/class-use/PicocliScript2.html | 4 +- .../PicocliScriptASTTransformation.html | 4 +- .../picocli/groovy/package-frame.html | 2 +- .../picocli/groovy/package-summary.html | 4 +- .../picocli/groovy/package-tree.html | 4 +- .../picocli/groovy/package-use.html | 4 +- .../module-frame.html | 2 +- .../module-summary.html | 4 +- .../module-type-frame.html | 2 +- .../shell/jline2/PicocliJLineCompleter.html | 4 +- .../class-use/PicocliJLineCompleter.html | 4 +- .../picocli/shell/jline2/package-frame.html | 2 +- .../picocli/shell/jline2/package-summary.html | 4 +- .../picocli/shell/jline2/package-tree.html | 4 +- .../picocli/shell/jline2/package-use.html | 4 +- .../module-frame.html | 2 +- .../module-summary.html | 4 +- .../module-type-frame.html | 2 +- .../jline3/PicocliCommands.ClearScreen.html | 4 +- ...icocliCommands.PicocliCommandsFactory.html | 4 +- .../picocli/shell/jline3/PicocliCommands.html | 4 +- .../shell/jline3/PicocliJLineCompleter.html | 4 +- .../PicocliCommands.ClearScreen.html | 4 +- ...icocliCommands.PicocliCommandsFactory.html | 4 +- .../jline3/class-use/PicocliCommands.html | 4 +- .../class-use/PicocliJLineCompleter.html | 4 +- .../picocli/shell/jline3/package-frame.html | 2 +- .../picocli/shell/jline3/package-summary.html | 4 +- .../picocli/shell/jline3/package-tree.html | 4 +- .../picocli/shell/jline3/package-use.html | 4 +- .../module-frame.html | 2 +- .../module-summary.html | 4 +- .../module-type-frame.html | 2 +- .../picocli/spring/PicocliSpringFactory.html | 4 +- .../PicocliAutoConfiguration.html | 6 +- .../class-use/PicocliAutoConfiguration.html | 4 +- .../boot/autoconfigure/package-frame.html | 2 +- .../boot/autoconfigure/package-summary.html | 4 +- .../boot/autoconfigure/package-tree.html | 4 +- .../boot/autoconfigure/package-use.html | 4 +- .../class-use/PicocliSpringFactory.html | 4 +- .../picocli/spring/package-frame.html | 2 +- .../picocli/spring/package-summary.html | 4 +- .../picocli/spring/package-tree.html | 4 +- .../picocli/spring/package-use.html | 4 +- .../info.picocli/module-frame.html | 2 +- .../info.picocli/module-summary.html | 4 +- .../info.picocli/module-type-frame.html | 3 +- .../AutoComplete.GenerateCompletion.html | 4 +- .../info.picocli/picocli/AutoComplete.html | 4 +- .../picocli/CommandLine.AbstractHandler.html | 4 +- ...ommandLine.AbstractParseResultHandler.html | 4 +- .../picocli/CommandLine.ArgGroup.html | 4 +- .../picocli/CommandLine.Command.html | 4 +- .../CommandLine.DefaultExceptionHandler.html | 4 +- .../CommandLine.DuplicateNameException.html | 4 +- ...e.DuplicateOptionAnnotationsException.html | 4 +- .../CommandLine.ExecutionException.html | 4 +- .../picocli/CommandLine.ExitCode.html | 4 +- .../picocli/CommandLine.Help.Ansi.IStyle.html | 4 +- .../picocli/CommandLine.Help.Ansi.Style.html | 4 +- .../picocli/CommandLine.Help.Ansi.Text.html | 4 +- .../picocli/CommandLine.Help.Ansi.html | 4 +- .../CommandLine.Help.ColorScheme.Builder.html | 4 +- .../picocli/CommandLine.Help.ColorScheme.html | 4 +- .../CommandLine.Help.Column.Overflow.html | 4 +- .../picocli/CommandLine.Help.Column.html | 4 +- .../CommandLine.Help.IOptionRenderer.html | 4 +- .../CommandLine.Help.IParamLabelRenderer.html | 4 +- .../CommandLine.Help.IParameterRenderer.html | 4 +- .../picocli/CommandLine.Help.Layout.html | 4 +- .../CommandLine.Help.TextTable.Cell.html | 4 +- .../picocli/CommandLine.Help.TextTable.html | 4 +- .../picocli/CommandLine.Help.Visibility.html | 4 +- .../picocli/CommandLine.Help.html | 4 +- .../picocli/CommandLine.HelpCommand.html | 4 +- .../CommandLine.IDefaultValueProvider.html | 4 +- .../CommandLine.IExceptionHandler.html | 4 +- .../CommandLine.IExceptionHandler2.html | 4 +- ...ommandLine.IExecutionExceptionHandler.html | 4 +- .../CommandLine.IExecutionStrategy.html | 4 +- .../CommandLine.IExitCodeExceptionMapper.html | 4 +- .../CommandLine.IExitCodeGenerator.html | 4 +- .../picocli/CommandLine.IFactory.html | 4 +- ...CommandLine.IHelpCommandInitializable.html | 4 +- ...ommandLine.IHelpCommandInitializable2.html | 4 +- .../picocli/CommandLine.IHelpFactory.html | 4 +- .../CommandLine.IHelpSectionRenderer.html | 4 +- .../CommandLine.IModelTransformer.html | 4 +- ...mmandLine.INegatableOptionTransformer.html | 4 +- .../CommandLine.IParameterConsumer.html | 4 +- ...ommandLine.IParameterExceptionHandler.html | 4 +- .../CommandLine.IParameterPreprocessor.html | 4 +- .../CommandLine.IParseResultHandler.html | 4 +- .../CommandLine.IParseResultHandler2.html | 4 +- .../picocli/CommandLine.ITypeConverter.html | 4 +- .../picocli/CommandLine.IVersionProvider.html | 4 +- .../CommandLine.InitializationException.html | 4 +- ...ommandLine.MaxValuesExceededException.html | 4 +- ...CommandLine.MissingParameterException.html | 4 +- ...andLine.MissingTypeConverterException.html | 4 +- .../picocli/CommandLine.Mixin.html | 4 +- ...ommandLine.Model.ArgGroupSpec.Builder.html | 4 +- .../CommandLine.Model.ArgGroupSpec.html | 4 +- .../picocli/CommandLine.Model.ArgSpec.html | 81 +- .../CommandLine.Model.CommandSpec.html | 4 +- .../CommandLine.Model.IAnnotatedElement.html | 4 +- .../CommandLine.Model.IExtensible.html | 4 +- .../picocli/CommandLine.Model.IGetter.html | 4 +- .../picocli/CommandLine.Model.IOrdered.html | 4 +- .../picocli/CommandLine.Model.IScope.html | 4 +- .../picocli/CommandLine.Model.IScoped.html | 277 +++++ .../picocli/CommandLine.Model.ISetter.html | 4 +- .../picocli/CommandLine.Model.ITypeInfo.html | 13 +- .../picocli/CommandLine.Model.Messages.html | 30 +- .../CommandLine.Model.MethodParam.html | 4 +- .../CommandLine.Model.OptionSpec.Builder.html | 4 +- .../picocli/CommandLine.Model.OptionSpec.html | 6 +- .../picocli/CommandLine.Model.ParserSpec.html | 4 +- ...ine.Model.PositionalParamSpec.Builder.html | 4 +- ...CommandLine.Model.PositionalParamSpec.html | 6 +- ...ommandLine.Model.UnmatchedArgsBinding.html | 4 +- .../CommandLine.Model.UsageMessageSpec.html | 8 +- .../picocli/CommandLine.Model.html | 27 +- ...ndLine.MutuallyExclusiveArgsException.html | 4 +- .../picocli/CommandLine.Option.html | 8 +- ...ommandLine.OverwrittenOptionException.html | 4 +- .../CommandLine.ParameterException.html | 4 +- ...ommandLine.ParameterIndexGapException.html | 4 +- .../picocli/CommandLine.Parameters.html | 4 +- .../picocli/CommandLine.ParentCommand.html | 4 +- .../CommandLine.ParseResult.Builder.html | 4 +- .../CommandLine.ParseResult.GroupMatch.html | 4 +- ...dLine.ParseResult.GroupMatchContainer.html | 4 +- .../picocli/CommandLine.ParseResult.html | 4 +- .../picocli/CommandLine.PicocliException.html | 4 +- ...CommandLine.PropertiesDefaultProvider.html | 4 +- .../picocli/CommandLine.Range.html | 4 +- .../CommandLine.RegexTransformer.Builder.html | 4 +- .../picocli/CommandLine.RegexTransformer.html | 4 +- .../picocli/CommandLine.RunAll.html | 4 +- .../picocli/CommandLine.RunFirst.html | 4 +- .../picocli/CommandLine.RunLast.html | 4 +- .../picocli/CommandLine.ScopeType.html | 4 +- .../picocli/CommandLine.Spec.Target.html | 4 +- .../picocli/CommandLine.Spec.html | 4 +- .../picocli/CommandLine.TraceLevel.html | 4 +- .../picocli/CommandLine.Tracer.html | 4 +- .../CommandLine.TypeConversionException.html | 4 +- .../picocli/CommandLine.Unmatched.html | 4 +- ...ommandLine.UnmatchedArgumentException.html | 4 +- .../CommandLine.UseDefaultConverter.html | 4 +- .../info.picocli/picocli/CommandLine.html | 18 +- .../AutoComplete.GenerateCompletion.html | 4 +- .../picocli/class-use/AutoComplete.html | 4 +- .../CommandLine.AbstractHandler.html | 4 +- ...ommandLine.AbstractParseResultHandler.html | 4 +- .../class-use/CommandLine.ArgGroup.html | 4 +- .../class-use/CommandLine.Command.html | 4 +- .../CommandLine.DefaultExceptionHandler.html | 4 +- .../CommandLine.DuplicateNameException.html | 4 +- ...e.DuplicateOptionAnnotationsException.html | 4 +- .../CommandLine.ExecutionException.html | 4 +- .../class-use/CommandLine.ExitCode.html | 4 +- .../CommandLine.Help.Ansi.IStyle.html | 4 +- .../CommandLine.Help.Ansi.Style.html | 4 +- .../class-use/CommandLine.Help.Ansi.Text.html | 4 +- .../class-use/CommandLine.Help.Ansi.html | 4 +- .../CommandLine.Help.ColorScheme.Builder.html | 4 +- .../CommandLine.Help.ColorScheme.html | 4 +- .../CommandLine.Help.Column.Overflow.html | 4 +- .../class-use/CommandLine.Help.Column.html | 4 +- .../CommandLine.Help.IOptionRenderer.html | 4 +- .../CommandLine.Help.IParamLabelRenderer.html | 4 +- .../CommandLine.Help.IParameterRenderer.html | 4 +- .../class-use/CommandLine.Help.Layout.html | 4 +- .../CommandLine.Help.TextTable.Cell.html | 4 +- .../class-use/CommandLine.Help.TextTable.html | 4 +- .../CommandLine.Help.Visibility.html | 4 +- .../picocli/class-use/CommandLine.Help.html | 4 +- .../class-use/CommandLine.HelpCommand.html | 4 +- .../CommandLine.IDefaultValueProvider.html | 4 +- .../CommandLine.IExceptionHandler.html | 4 +- .../CommandLine.IExceptionHandler2.html | 4 +- ...ommandLine.IExecutionExceptionHandler.html | 4 +- .../CommandLine.IExecutionStrategy.html | 4 +- .../CommandLine.IExitCodeExceptionMapper.html | 4 +- .../CommandLine.IExitCodeGenerator.html | 4 +- .../class-use/CommandLine.IFactory.html | 4 +- ...CommandLine.IHelpCommandInitializable.html | 4 +- ...ommandLine.IHelpCommandInitializable2.html | 4 +- .../class-use/CommandLine.IHelpFactory.html | 4 +- .../CommandLine.IHelpSectionRenderer.html | 4 +- .../CommandLine.IModelTransformer.html | 4 +- ...mmandLine.INegatableOptionTransformer.html | 4 +- .../CommandLine.IParameterConsumer.html | 4 +- ...ommandLine.IParameterExceptionHandler.html | 4 +- .../CommandLine.IParameterPreprocessor.html | 4 +- .../CommandLine.IParseResultHandler.html | 4 +- .../CommandLine.IParseResultHandler2.html | 4 +- .../class-use/CommandLine.ITypeConverter.html | 4 +- .../CommandLine.IVersionProvider.html | 4 +- .../CommandLine.InitializationException.html | 4 +- ...ommandLine.MaxValuesExceededException.html | 4 +- ...CommandLine.MissingParameterException.html | 4 +- ...andLine.MissingTypeConverterException.html | 4 +- .../picocli/class-use/CommandLine.Mixin.html | 4 +- ...ommandLine.Model.ArgGroupSpec.Builder.html | 4 +- .../CommandLine.Model.ArgGroupSpec.html | 4 +- .../class-use/CommandLine.Model.ArgSpec.html | 4 +- .../CommandLine.Model.CommandSpec.html | 4 +- .../CommandLine.Model.IAnnotatedElement.html | 4 +- .../CommandLine.Model.IExtensible.html | 4 +- .../class-use/CommandLine.Model.IGetter.html | 4 +- .../class-use/CommandLine.Model.IOrdered.html | 4 +- .../class-use/CommandLine.Model.IScope.html | 17 +- .../class-use/CommandLine.Model.IScoped.html | 158 +++ .../class-use/CommandLine.Model.ISetter.html | 4 +- .../CommandLine.Model.ITypeInfo.html | 4 +- .../class-use/CommandLine.Model.Messages.html | 11 +- .../CommandLine.Model.MethodParam.html | 4 +- .../CommandLine.Model.OptionSpec.Builder.html | 4 +- .../CommandLine.Model.OptionSpec.html | 4 +- .../CommandLine.Model.ParserSpec.html | 4 +- ...ine.Model.PositionalParamSpec.Builder.html | 4 +- ...CommandLine.Model.PositionalParamSpec.html | 4 +- ...ommandLine.Model.UnmatchedArgsBinding.html | 4 +- .../CommandLine.Model.UsageMessageSpec.html | 4 +- .../picocli/class-use/CommandLine.Model.html | 4 +- ...ndLine.MutuallyExclusiveArgsException.html | 4 +- .../picocli/class-use/CommandLine.Option.html | 4 +- ...ommandLine.OverwrittenOptionException.html | 4 +- .../CommandLine.ParameterException.html | 4 +- ...ommandLine.ParameterIndexGapException.html | 4 +- .../class-use/CommandLine.Parameters.html | 4 +- .../class-use/CommandLine.ParentCommand.html | 4 +- .../CommandLine.ParseResult.Builder.html | 4 +- .../CommandLine.ParseResult.GroupMatch.html | 4 +- ...dLine.ParseResult.GroupMatchContainer.html | 4 +- .../class-use/CommandLine.ParseResult.html | 4 +- .../CommandLine.PicocliException.html | 4 +- ...CommandLine.PropertiesDefaultProvider.html | 4 +- .../picocli/class-use/CommandLine.Range.html | 4 +- .../CommandLine.RegexTransformer.Builder.html | 4 +- .../CommandLine.RegexTransformer.html | 4 +- .../picocli/class-use/CommandLine.RunAll.html | 4 +- .../class-use/CommandLine.RunFirst.html | 4 +- .../class-use/CommandLine.RunLast.html | 4 +- .../class-use/CommandLine.ScopeType.html | 4 +- .../class-use/CommandLine.Spec.Target.html | 4 +- .../picocli/class-use/CommandLine.Spec.html | 4 +- .../class-use/CommandLine.TraceLevel.html | 4 +- .../picocli/class-use/CommandLine.Tracer.html | 4 +- .../CommandLine.TypeConversionException.html | 4 +- .../class-use/CommandLine.Unmatched.html | 4 +- ...ommandLine.UnmatchedArgumentException.html | 4 +- .../CommandLine.UseDefaultConverter.html | 4 +- .../picocli/class-use/CommandLine.html | 4 +- .../info.picocli/picocli/package-frame.html | 3 +- .../info.picocli/picocli/package-summary.html | 12 +- .../info.picocli/picocli/package-tree.html | 5 +- .../info.picocli/picocli/package-use.html | 4 +- docs/apidocs-all/member-search-index.js | 2 +- docs/apidocs-all/member-search-index.zip | Bin 13854 -> 13880 bytes docs/apidocs-all/module-overview-frame.html | 2 +- docs/apidocs-all/module-search-index.zip | Bin 236 -> 236 bytes docs/apidocs-all/overview-frame.html | 2 +- docs/apidocs-all/overview-summary.html | 8 +- docs/apidocs-all/overview-tree.html | 5 +- docs/apidocs-all/package-search-index.zip | Bin 359 -> 359 bytes docs/apidocs-all/serialized-form.html | 4 +- docs/apidocs-all/type-search-index.js | 2 +- docs/apidocs-all/type-search-index.zip | Bin 1315 -> 1316 bytes docs/apidocs/allclasses-frame.html | 6 +- docs/apidocs/allclasses-noframe.html | 6 +- docs/apidocs/constant-values.html | 6 +- docs/apidocs/deprecated-list.html | 4 +- docs/apidocs/help-doc.html | 4 +- docs/apidocs/index-all.html | 139 ++- docs/apidocs/index.html | 2 +- docs/apidocs/overview-summary.html | 106 +- docs/apidocs/overview-tree.html | 8 +- .../AutoComplete.GenerateCompletion.html | 4 +- docs/apidocs/picocli/AutoComplete.html | 4 +- .../picocli/CommandLine.AbstractHandler.html | 4 +- ...ommandLine.AbstractParseResultHandler.html | 4 +- .../apidocs/picocli/CommandLine.ArgGroup.html | 4 +- docs/apidocs/picocli/CommandLine.Command.html | 55 +- .../CommandLine.DefaultExceptionHandler.html | 4 +- .../CommandLine.DuplicateNameException.html | 4 +- ...e.DuplicateOptionAnnotationsException.html | 4 +- .../CommandLine.ExecutionException.html | 4 +- .../apidocs/picocli/CommandLine.ExitCode.html | 4 +- .../picocli/CommandLine.Help.Ansi.IStyle.html | 4 +- .../picocli/CommandLine.Help.Ansi.Style.html | 6 +- .../picocli/CommandLine.Help.Ansi.Text.html | 4 +- .../picocli/CommandLine.Help.Ansi.html | 4 +- .../CommandLine.Help.ColorScheme.Builder.html | 8 +- .../picocli/CommandLine.Help.ColorScheme.html | 4 +- .../CommandLine.Help.Column.Overflow.html | 4 +- .../picocli/CommandLine.Help.Column.html | 4 +- .../CommandLine.Help.IOptionRenderer.html | 4 +- .../CommandLine.Help.IParamLabelRenderer.html | 4 +- .../CommandLine.Help.IParameterRenderer.html | 4 +- .../picocli/CommandLine.Help.Layout.html | 4 +- .../CommandLine.Help.TextTable.Cell.html | 4 +- .../picocli/CommandLine.Help.TextTable.html | 4 +- .../picocli/CommandLine.Help.Visibility.html | 4 +- docs/apidocs/picocli/CommandLine.Help.html | 4 +- .../picocli/CommandLine.HelpCommand.html | 4 +- .../CommandLine.IDefaultValueProvider.html | 4 +- .../CommandLine.IExceptionHandler.html | 4 +- .../CommandLine.IExceptionHandler2.html | 4 +- ...ommandLine.IExecutionExceptionHandler.html | 4 +- .../CommandLine.IExecutionStrategy.html | 4 +- .../CommandLine.IExitCodeExceptionMapper.html | 4 +- .../CommandLine.IExitCodeGenerator.html | 4 +- .../apidocs/picocli/CommandLine.IFactory.html | 4 +- ...CommandLine.IHelpCommandInitializable.html | 4 +- ...ommandLine.IHelpCommandInitializable2.html | 4 +- .../picocli/CommandLine.IHelpFactory.html | 4 +- .../CommandLine.IHelpSectionRenderer.html | 4 +- .../CommandLine.IModelTransformer.html | 4 +- ...mmandLine.INegatableOptionTransformer.html | 4 +- .../CommandLine.IParameterConsumer.html | 4 +- ...ommandLine.IParameterExceptionHandler.html | 4 +- .../CommandLine.IParameterPreprocessor.html | 9 +- .../CommandLine.IParseResultHandler.html | 4 +- .../CommandLine.IParseResultHandler2.html | 4 +- .../picocli/CommandLine.ITypeConverter.html | 8 +- .../picocli/CommandLine.IVersionProvider.html | 4 +- .../CommandLine.InitializationException.html | 4 +- ...ommandLine.MaxValuesExceededException.html | 4 +- ...CommandLine.MissingParameterException.html | 4 +- ...andLine.MissingTypeConverterException.html | 4 +- docs/apidocs/picocli/CommandLine.Mixin.html | 4 +- ...ommandLine.Model.ArgGroupSpec.Builder.html | 4 +- .../CommandLine.Model.ArgGroupSpec.html | 4 +- .../picocli/CommandLine.Model.ArgSpec.html | 100 +- .../CommandLine.Model.CommandSpec.html | 4 +- .../CommandLine.Model.IAnnotatedElement.html | 4 +- .../CommandLine.Model.IExtensible.html | 4 +- .../picocli/CommandLine.Model.IGetter.html | 4 +- .../picocli/CommandLine.Model.IOrdered.html | 4 +- .../picocli/CommandLine.Model.IScope.html | 8 +- .../picocli/CommandLine.Model.IScoped.html | 234 +++++ .../picocli/CommandLine.Model.ISetter.html | 8 +- .../picocli/CommandLine.Model.ITypeInfo.html | 13 +- .../picocli/CommandLine.Model.Messages.html | 29 +- .../CommandLine.Model.MethodParam.html | 4 +- .../CommandLine.Model.OptionSpec.Builder.html | 4 +- .../picocli/CommandLine.Model.OptionSpec.html | 6 +- .../picocli/CommandLine.Model.ParserSpec.html | 158 ++- ...ine.Model.PositionalParamSpec.Builder.html | 4 +- ...CommandLine.Model.PositionalParamSpec.html | 6 +- ...ommandLine.Model.UnmatchedArgsBinding.html | 4 +- .../CommandLine.Model.UsageMessageSpec.html | 70 +- docs/apidocs/picocli/CommandLine.Model.html | 26 +- ...ndLine.MutuallyExclusiveArgsException.html | 4 +- docs/apidocs/picocli/CommandLine.Option.html | 11 +- ...ommandLine.OverwrittenOptionException.html | 4 +- .../CommandLine.ParameterException.html | 4 +- ...ommandLine.ParameterIndexGapException.html | 4 +- .../picocli/CommandLine.Parameters.html | 4 +- .../picocli/CommandLine.ParentCommand.html | 4 +- .../CommandLine.ParseResult.Builder.html | 4 +- .../CommandLine.ParseResult.GroupMatch.html | 4 +- ...dLine.ParseResult.GroupMatchContainer.html | 4 +- .../picocli/CommandLine.ParseResult.html | 4 +- .../picocli/CommandLine.PicocliException.html | 4 +- ...CommandLine.PropertiesDefaultProvider.html | 4 +- docs/apidocs/picocli/CommandLine.Range.html | 4 +- .../CommandLine.RegexTransformer.Builder.html | 4 +- .../picocli/CommandLine.RegexTransformer.html | 4 +- docs/apidocs/picocli/CommandLine.RunAll.html | 4 +- .../apidocs/picocli/CommandLine.RunFirst.html | 4 +- docs/apidocs/picocli/CommandLine.RunLast.html | 4 +- .../picocli/CommandLine.ScopeType.html | 4 +- .../picocli/CommandLine.Spec.Target.html | 8 +- docs/apidocs/picocli/CommandLine.Spec.html | 4 +- .../picocli/CommandLine.TraceLevel.html | 387 +++++++ docs/apidocs/picocli/CommandLine.Tracer.html | 430 ++++++++ .../CommandLine.TypeConversionException.html | 8 +- .../picocli/CommandLine.Unmatched.html | 4 +- ...ommandLine.UnmatchedArgumentException.html | 8 +- .../CommandLine.UseDefaultConverter.html | 313 ++++++ docs/apidocs/picocli/CommandLine.html | 405 +++++-- docs/apidocs/picocli/package-frame.html | 6 +- docs/apidocs/picocli/package-summary.html | 30 +- docs/apidocs/picocli/package-tree.html | 22 +- docs/apidocs/serialized-form.html | 4 +- docs/autocomplete.adoc | 4 +- docs/autocomplete.html | 51 +- ...apps-in-java-with-graalvm-and-picocli.html | 47 +- docs/feedback.html | 25 +- docs/groovy-2.5-clibuilder-renewal-part1.html | 45 +- docs/groovy-2.5-clibuilder-renewal-part2.html | 41 +- docs/groovy-2.5-clibuilder-renewal.html | 45 +- docs/index.adoc | 64 +- docs/index.html | 993 ++++++++++++------ docs/man/gen-manpage.html | 6 +- docs/man/gen-proxy-config.html | 8 +- docs/man/gen-reflect-config.html | 8 +- docs/man/gen-resource-config.html | 8 +- docs/man/generate-completion.html | 4 +- docs/man/index.html | 23 +- docs/man/picocli.AutoComplete.html | 6 +- docs/migrating-from-commons-cli.html | 47 +- docs/picocli-2.0-do-more-with-less.html | 41 +- ...icocli-2.0-groovy-scripts-on-steroids.html | 45 +- docs/picocli-on-graalvm.html | 27 +- docs/picocli-programmatic-api.adoc | 4 +- docs/picocli-programmatic-api.html | 29 +- docs/quick-guide.adoc | 10 +- docs/quick-guide.html | 45 +- docs/zh/picocli-2.0-do-more-with-less.html | 41 +- ...icocli-2.0-groovy-scripts-on-steroids.html | 45 +- gradle/release-tasks.gradle | 2 +- picocli-codegen/README.adoc | 46 +- .../graalvm/DynamicProxyConfigGenerator.java | 2 +- .../aot/graalvm/JniConfigGenerator.java | 2 +- .../graalvm/ReflectionConfigGenerator.java | 2 +- .../aot/graalvm/ResourceConfigGenerator.java | 2 +- .../docgen/manpage/ManPageGenerator.java | 2 +- .../build.gradle | 4 +- .../example-gradle-project/build.gradle | 6 +- .../example-maven-project-shading/pom.xml | 4 +- .../example-maven-project-simple/pom.xml | 4 +- .../example-gradle-project/build.gradle | 4 +- .../example-maven-project/pom.xml | 6 +- picocli-groovy/README.md | 2 +- picocli-shell-jline2/README.md | 2 +- picocli-shell-jline3/README.md | 2 +- picocli-spring-boot-starter/README.md | 6 +- src/main/java/picocli/AutoComplete.java | 2 +- src/main/java/picocli/CommandLine.java | 2 +- src/test/java/picocli/AutoCompleteTest.java | 2 +- src/test/java/picocli/CommandLineTest.java | 2 +- 532 files changed, 4935 insertions(+), 2160 deletions(-) create mode 100644 docs/apidocs-all/info.picocli/picocli/CommandLine.Model.IScoped.html create mode 100644 docs/apidocs-all/info.picocli/picocli/class-use/CommandLine.Model.IScoped.html create mode 100644 docs/apidocs/picocli/CommandLine.Model.IScoped.html create mode 100644 docs/apidocs/picocli/CommandLine.TraceLevel.html create mode 100644 docs/apidocs/picocli/CommandLine.Tracer.html create mode 100644 docs/apidocs/picocli/CommandLine.UseDefaultConverter.html diff --git a/README.md b/README.md index 12523edb3..020c83a41 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ The user manual has examples of integrating with [Guice](https://picocli.info/#_ ### Releases * [All Releases](https://github.com/remkop/picocli/releases) -* Latest: 4.6.3 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.6.3) +* Latest: 4.7.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.7.0) * Older: Picocli 4.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v4.0.0) * Older: Picocli 3.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v3.0.0) * Older: Picocli 2.0 [Release Notes](https://github.com/remkop/picocli/releases/tag/v2.0.0) @@ -270,9 +270,9 @@ If you like picocli, help others discover picocli: #### Spread the joy! :tada: * Tweet about picocli! What do you like about it? How has it helped you? How is it different from the alternatives? * Mention that your project uses picocli in the documentation of your project. -* Show that your GitHub project uses picocli, with this badge in your README.md: [![picocli](https://img.shields.io/badge/picocli-4.6.3-green.svg)](https://github.com/remkop/picocli) +* Show that your GitHub project uses picocli, with this badge in your README.md: [![picocli](https://img.shields.io/badge/picocli-4.7.0-green.svg)](https://github.com/remkop/picocli) ``` -[![picocli](https://img.shields.io/badge/picocli-4.6.3-green.svg)](https://github.com/remkop/picocli) +[![picocli](https://img.shields.io/badge/picocli-4.7.0-green.svg)](https://github.com/remkop/picocli) ``` #### Preach it! :muscle: @@ -363,41 +363,41 @@ See the [source code](https://github.com/remkop/picocli/blob/main/src/main/java/ ### Gradle ``` -implementation 'info.picocli:picocli:4.6.3' +implementation 'info.picocli:picocli:4.7.0' ``` ### Maven ``` info.picocli picocli - 4.6.3 + 4.7.0 ``` ### Scala SBT ``` -libraryDependencies += "info.picocli" % "picocli" % "4.6.3" +libraryDependencies += "info.picocli" % "picocli" % "4.7.0" ``` ### Ivy ``` - + ``` ### Grape ```groovy @Grapes( - @Grab(group='info.picocli', module='picocli', version='4.6.3') + @Grab(group='info.picocli', module='picocli', version='4.7.0') ) ``` ### Leiningen ``` -[info.picocli/picocli "4.6.3"] +[info.picocli/picocli "4.7.0"] ``` ### Buildr ``` -'info.picocli:picocli:jar:4.6.3' +'info.picocli:picocli:jar:4.7.0' ``` ### JBang ``` -//DEPS info.picocli:picocli:4.6.3 +//DEPS info.picocli:picocli:4.7.0 ``` diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index cc324b0c5..50d901d49 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,6 +1,6 @@ # picocli Release Notes -# Picocli 4.7.0 (UNRELEASED) +# Picocli 4.7.0 The picocli community is pleased to announce picocli 4.7.0. This release includes bugfixes and enhancements. @@ -11,7 +11,7 @@ From this release, applications can programmatically set the trace level, and us Applications can improve startup time by setting system property `picocli.disable.closures` to `true` to disable support for [closures in annotations](https://picocli.info/#_closures_in_annotations). -Also, this release has various fixes and enhancements related to the synopsis of the usage help message. +Many more fixes and enhancements, see the sections below for more details. This is the seventy-ninth public release. @@ -70,7 +70,7 @@ If an option is defined as `arity = "*"`, this option will consume _all_ remaini ### Unsorted Synopsis By default, the synopsis displays options in alphabetical order. -Picocli 4.7.0 introduced a `sortSynopsis = false` attribute to let the synopsis display options in the order they are declared in your class, or sorted by their `order` attribute. +Picocli 4.7.0 introduces a `sortSynopsis = false` attribute to let the synopsis display options in the order they are declared in your class, or sorted by their `order` attribute. ```java @Command(sortSynopsis = false) @@ -98,9 +98,9 @@ Applications that want to preserve the previous behaviour will need to change th * [#1563] API: Add constructor to `PicocliSpringFactory` to allow custom fallback `IFactory`. Thanks to [Andrew Holland](https://github.com/a1dutch) for raising this. * [#1767][#1802] API: avoid NPE on `OptionSpec.getValue()` and add `IScoped` internal API. Thanks to [Ruud Senden](https://github.com/rsenden) for the discussion and the pull request. * [#1574] API: Add annotation API to control whether synopsis should be sorted alphabetically or by explicit `order`. +* [#1708][#1712][#1723] API: The `setUsageHelpLongOptionsMaxWidth` method no longer throws an exception when an invalid value is specified; instead, the value is ignored and an INFO-level trace message is logged. Thanks to [Fabio](https://github.com/fabio-franco) for the pull request. * [#648][#1846] Enhancement: Treat `char[]` as single-value types (Potentially breaking change). Thanks to [Lukáš Petrovický](https://github.com/triceo) for the pull request with the test to verify the solution. * [#1571] Enhancement: Variables in values from the default value provider should be interpolated. Thanks to [Bas Passon](https://github.com/bpasson) for raising this. -* [#1708][#1712][#1723] API: The `setUsageHelpLongOptionsMaxWidth` method no longer throws an exception when an invalid value is specified; instead, the value is ignored and an INFO-level trace message is logged. Thanks to [Fabio](https://github.com/fabio-franco) for the pull request. * [#1773] Enhancement: Applications can improve startup time by setting system property `picocli.disable.closures` to `true` to disable support for [closures in annotations](https://picocli.info/#_closures_in_annotations). Thanks to [patric-r](https://github.com/patric-r) for raising this. * [#1408] Enhancement: Synopsis should respect `order` if specified. Thanks to [Simon](https://github.com/sbernard31) for raising this. * [#964][#1080] Enhancement: ArgGroup synopsis should respect `order` (if specified). Thanks to [Enderaoe](https://github.com/Lyther) for the pull request with unit tests. diff --git a/dependencies.gradle b/dependencies.gradle index d0f669e3b..9ac171e17 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,9 +7,9 @@ ext { // projectPreviousPublishedVersion is non-SNAPSHOT, only published releases projectPreviousPublishedVersion = "4\\.6\\.3" // for task bumpReadmeVersion // projectPreviousVersionRegex may be a SNAPSHOT - projectPreviousVersionRegex = "4\\.6\\.3" // for task bumpVersion - projectVersion = "4.7.0-SNAPSHOT" // for all build tasks - releaseDate = "2022-02-09" // for task bumpVersion + projectPreviousVersionRegex = "4\\.7\\.0-SNAPSHOT" // for task bumpVersion + projectVersion = "4.7.0" // for all build tasks + releaseDate = "2022-10-31" // for task bumpVersion releaseDatePreviousRegex = "2022\\-02\\-09" // for task bumpVersion // DEPENDENCIES diff --git a/docs/A-Whirlwind-Tour-of-Picocli.html b/docs/A-Whirlwind-Tour-of-Picocli.html index 314fee6e4..dcd0ce8fd 100644 --- a/docs/A-Whirlwind-Tour-of-Picocli.html +++ b/docs/A-Whirlwind-Tour-of-Picocli.html @@ -4,7 +4,7 @@ - + A Whirlwind Tour of Picocli @@ -194,7 +194,8 @@ #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} details{margin-left:1.25rem} -details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;-webkit-tap-highlight-color:transparent} +details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent} +details>summary::-webkit-details-marker{display:none} details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)} details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)} details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem} @@ -236,9 +237,8 @@ table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none} table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal} table.linenotable td.code{padding-left:.75em} -table.linenotable td.linenos{border-right:1px solid;opacity:.35;padding-right:.5em} -pre.pygments .lineno{border-right:1px solid;opacity:.35;display:inline-block;margin-right:.75em} -pre.pygments .lineno::before{content:"";margin-right:-.125em} +table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +pre.pygments span.linenos{display:inline-block;margin-right:.75em} .quoteblock{margin:0 1em 1.25em 1.5em;display:table} .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em} .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} @@ -275,7 +275,7 @@ table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0} table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0} table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0} -table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7} +table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7} th.halign-left,td.halign-left{text-align:left} th.halign-right,td.halign-right{text-align:right} th.halign-center,td.halign-center{text-align:center} @@ -291,10 +291,11 @@ ul li ol{margin-left:1.5em} dl dd{margin-left:1.125em} dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} -ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} +li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} ul.unstyled,ol.unstyled{margin-left:0} +li>p:empty:only-child::before{content:"";display:inline-block} ul.checklist>li>p:first-child{margin-left:-1em} ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em} @@ -337,8 +338,6 @@ #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} #footnotes .footnote:last-of-type{margin-bottom:0} #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} -.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} -.gist .file-data>table td.line-data{width:99%} div.unbreakable{page-break-inside:avoid} .big{font-size:larger} .small{font-size:smaller} @@ -439,18 +438,18 @@ - - - - - + + + @@ -2298,7 +2228,7 @@

Groovy
-
@Grab('info.picocli:picocli-groovy:4.6.3')
+
@Grab('info.picocli:picocli-groovy:4.7.0')
 import picocli.CommandLine
 import static picocli.CommandLine.*
 
@@ -2329,7 +2259,7 @@ 

Groovy script
-
@Grab('info.picocli:picocli-groovy:4.6.3')
+
@Grab('info.picocli:picocli-groovy:4.7.0')
 import static picocli.CommandLine.*
 import groovy.transform.Field
 import java.security.MessageDigest
@@ -2456,6 +2386,20 @@ 

+
+ + + + + +
+ + +
+

The picocli-examples module in the picocli git repository has many more examples.

+
+
+

@@ -2474,7 +2418,7 @@

Gradle
dependencies {
-    implementation 'info.picocli:picocli:4.6.3'
+    implementation 'info.picocli:picocli:4.7.0'
 }
@@ -2484,7 +2428,7 @@

<dependency> <groupId>info.picocli</groupId> <artifactId>picocli</artifactId> - <version>4.6.3</version> + <version>4.7.0</version> </dependency> @@ -2492,7 +2436,7 @@

2.2. Add as Source

-

To include as source, get the source code from the GitHub file. Copy and paste it into a file called CommandLine.java, add it to your project, and enjoy!

+

To include as source, get the source code from the GitHub file. Copy and paste it into a file called CommandLine.java, add it to your project, and enjoy!

@@ -2509,9 +2453,9 @@

<

Compile time error checking. The annotation processor shows errors for invalid annotations and attributes immediately when you compile, instead of during testing at runtime, resulting in shorter feedback cycles.

  • -

    GraalVM native images. The annotation processor generates and updates GraalVM configuration files under +

    GraalVM native images. The annotation processor generates and updates GraalVM configuration files under META-INF/native-image/picocli-generated/$project during compilation, to be included in the application jar. -This includes configuration files for reflection, resources and dynamic proxies. +This includes configuration files for reflection, resources and dynamic proxies. By embedding these configuration files, your jar is instantly Graal-enabled. In most cases no further configuration is needed when generating a native image.

  • @@ -2520,7 +2464,7 @@

    <

    2.3.1. Processor option: project

    -

    The picocli annotation processor supports a number of options, most important of which is the project option to control the output subdirectory: the generated files are written to META-INF/native-image/picocli-generated/${project}. A good convention is to use the Maven ${project.groupId}/${project.artifactId} as the value; a unique subdirectory ensures your jar can be shaded with other jars that may also contain generated configuration files.

    +

    The picocli annotation processor supports a number of options, most important of which is the project option to control the output subdirectory: the generated files are written to META-INF/native-image/picocli-generated/${project}. A good convention is to use the Maven ${project.groupId}/${project.artifactId} as the value; a unique subdirectory ensures your jar can be shaded with other jars that may also contain generated configuration files.

    To configure this option, pass the -Aproject=<some value> to the javac compiler. The examples below show how to do this for Maven and Gradle.

    @@ -2540,8 +2484,8 @@
    Usi
    Gradle
    dependencies {
    -    implementation 'info.picocli:picocli:4.6.3'
    -    annotationProcessor 'info.picocli:picocli-codegen:4.6.3'
    +    implementation 'info.picocli:picocli:4.7.0'
    +    annotationProcessor 'info.picocli:picocli-codegen:4.7.0'
     }
     
     
    @@ -2563,7 +2507,7 @@ 
    Usi <path> <groupId>info.picocli</groupId> <artifactId>picocli-codegen</artifactId> - <version>4.6.3</version> + <version>4.7.0</version> </path> </annotationProcessorPaths> <compilerArgs> @@ -2574,7 +2518,7 @@
    Usi
    -

    See the picocli-codegen README for more details.

    +

    See the picocli-codegen README for more details.

    @@ -2605,7 +2549,7 @@
    -

    See the picocli-codegen README for more details.

    +

    See the picocli-codegen README for more details.

    @@ -2631,7 +2575,7 @@

    -
    java -cp "picocli-4.6.3.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt
    +
    java -cp "picocli-4.7.0.jar:checksum.jar" CheckSum --algorithm SHA-1 hello.txt
    -

    The picocli-examples module has an example, coded both in Java and Kotlin.

    +

    The picocli-examples module has an example, coded both in Java and Kotlin.

    @@ -2954,18 +2898,82 @@

    Interactive options and shell applications with JLine 2
    -

    Interactive options do not work in conjunction with JLine 2’s ConsoleReader. Either implement a IParameterConsumer which uses JLine2’s ConsoleReader directly or use picocli-shell-jline3.

    +

    Interactive options do not work in conjunction with JLine 2’s ConsoleReader. Either implement a IParameterConsumer which uses JLine2’s ConsoleReader directly or use picocli-shell-jline3.

    +
    +

    3.2.3. Forcing Interactive Input

    +
    +

    Be aware that picocli only prompts the user when the interactive option is specified without parameter:

    +
    +
    +
    +
    $ myprogram                             # option not specified: no prompting
    +You provided value 'null'
    +
    +$ myprogram --interactive-option=abc    # option specified with parameter: no prompting
    +You provided value 'abc'
    +
    +$ myprogram --interactive-option        # option specified WITHOUT parameter: prompt for input
    +Enter value for --interactive-option (...):    #  <--- type xxx and hit Enter
    +You provided value 'xxx'
    +
    +
    +
    +

    Applications that also need the user to be prompted when the option is not specified, need to do this in the business logic. +For example:

    +
    +
    +
    Java
    +
    +
    @Command
    +public class Main implements Runnable {
    +    @Option(names = "--interactive", interactive = true)
    +    String value;
    +
    +    public void run() {
    +        if (value == null && System.console() != null) {
    +            // alternatively, use Console::readPassword
    +            value = System.console().readLine("Enter value for --interactive: ");
    +        }
    +        System.out.println("You provided value '" + value + "'");
    +    }
    +
    +    public static void main(String[] args) {
    +        new CommandLine(new Main()).execute(args);
    +    }
    +}
    +
    +
    +
    +
    Kotlin
    +
    +
    @Command
    +class Main : Runnable {
    +    @Option(names = ["--interactive"], description = ["unattended run"], interactive = true)
    +    var value: String? = null
    +    override fun run() {
    +        if (value == null && System.console() != null) {
    +            // alternatively, use console::readPassword
    +            value = System.console().readLine("Enter value for --interactive: ")
    +        }
    +        println("You provided value '$value'")
    +    }
    +}
    +
    +fun main(args: Array<String>) : Unit = exitProcess(CommandLine(Main()).execute(*args))
    +
    +
    +

    3.3. Short (POSIX) Options

    -

    Picocli supports POSIX clustered short options: +

    Picocli supports POSIX clustered short options: one or more single-character options without option-arguments, followed by at most one option with an option-argument, can be grouped behind one '-' delimiter.

    +
    + + + + + +
    + + +In Java 18 the default encoding was changed from a system dependent value to +always be UTF-8. If you require the old behavior, you need to +set the file.encoding system property to the value COMPAT. +
    +

    @-file expansion can be switched off by calling CommandLine::setExpandAtFiles with false. -If turned on, you can still pass a real parameter with an initial '@' character by escaping it -with an additional '@' symbol, e.g. '@@somearg' will become '@somearg' and not be subject to expansion.

    +If turned on, you can still pass a real parameter with an initial @ character by escaping it +with an additional @ symbol, e.g. @@somearg will become @somearg and not be subject to expansion.

    This feature is similar to the 'Command Line Argument File' processing supported by gcc, javadoc and javac. @@ -3525,7 +3549,7 @@

    @@ -3545,7 +3569,7 @@

    3.9

    From picocli 3.8.1, a simpler argument file format is also supported where every line (except empty lines and comment lines) is interpreted as a single argument. Arguments containing whitespace do not need to be quoted, but it is not possible to have arguments with embedded newlines or to have empty string arguments without quotes. -From picocli 3.9, this simpler argument format is fully compatible with JCommander's @-file argument file format.

    +From picocli 3.9, this simpler argument format is fully compatible with JCommander's @-file argument file format.

    You can tell picocli to use the simplified argument file format programmatically with CommandLine.setUseSimplifiedAtFiles(true), @@ -3619,7 +3643,7 @@

    4.1. Buil

    java.net.NetworkInterface (from picocli 2.2, for the InetAddress or name of the network interface)

  • -

    java.util.TimeZoneConverter (from picocli 2.2, for the ID for a TimeZone)

    +

    java.util.TimeZone (from picocli 2.2, for the ID for a TimeZone)

  • @@ -3981,7 +4005,24 @@

    -

    The picocli-examples module on GitHub has a minimal working example which you can run in our online-editor.

    +

    The picocli-examples module on GitHub has a minimal working example which you can run in our online-editor.

    +

    +
    + + + + + +
    + + +
    +

    Note that when an option has variable arity, the picocli parser cannot tell whether each next argument belongs to that option or to a positional parameter. It will try to assign to the option first, but it will take the type conversion exception to mean that it has reached the end of the parameters for that option, and this argument must be assigned to a positional parameter instead.

    +
    +
    +

    If it then cannot find a positional parameter, an unmatched argument error is shown to the end user instead.

    +
    +
    @@ -4169,7 +4210,7 @@

    4.5.2. Maps

    -

    Picocli 1.0 introduced support for Map fields similar to Java’s system properties -Dkey=value or Gradle’s project properties -Pmyprop=myvalue.

    +

    Picocli 1.0 introduced support for Map fields similar to Java’s system properties -Dkey=value or Gradle properties -P myprop=myvalue.

    Map fields may have any type for their key and value @@ -4203,7 +4244,7 @@

    4.5.2. Maps

    class MapDemo { @Option(names = ["-p", "--proxyHost"]) - lateinit var proxies: Map<Proxy.Type, InetAddress> + lateinit var proxies: Map<Proxy.Type, InetAddress> @Option(names = ["-u", "--timeUnit"]) lateinit var timeout: Map<TimeUnit, Long> @@ -4230,7 +4271,7 @@

    4.5.2. Maps

    -On the command line, the key and the value must be separated by a = character. +On the command line, the key and the value must be separated by an = character. @@ -4244,12 +4285,12 @@

    4.5.2. Maps

    4.5.3. Key-only map parameters

    By default, picocli expects Map options and positional parameters to look like key=value, -that is, the option parameter or positional parameter is expected to have a key part and a value part, separated by a = character. +that is, the option parameter or positional parameter is expected to have a key part and a value part, separated by an = character. If this is not the case, picocli shows a user-facing error message: Value for …​ should be in KEY=VALUE format but was …​.

    From picocli 4.6, applications can specify a mapFallbackValue to allow end users to specify only the key part. -The specified mapFallbackValue is put into the map when end users to specify only a key. +The specified mapFallbackValue is put into the map when end users do specify only a key. The value type can be wrapped in a java.util.Optional. For example:

    @@ -4270,7 +4311,7 @@

    lateinit var properties: Map<String, Optional<Int>> @Parameters(mapFallbackValue = "INFO", description = "... ${MAP-FALLBACK-VALUE} ...") -lateinit var logLevels: Map<Class<?>, LogLevel> +lateinit var logLevels: Map<Class<?>, LogLevel>

    @@ -4465,7 +4506,7 @@

    5. Defaul

    It is possible to define a default value for an option or positional parameter, that is assigned when the user did not specify this option or positional parameter on the command line.

    -

    Configuring a default value guarantees that the @Option or @Parameters-annotated field will get set, annotated method will get called, and, when using the programmatic API, that the ArgSpec.setValue method will get invoked, even when the option or positional parameter was not specified on the command line.

    +

    Configuring a default value guarantees that the @Option or @Parameters-annotated field will get set, annotated method will get called, and, when using the programmatic API, that the ArgSpec.setValue method will get invoked, even when the option or positional parameter was not specified on the command line.

    5.1. defaultValue Annotation

    @@ -4633,7 +4674,7 @@

    5.4.

    See the -default provider examples +default provider examples for example implementations.

    @@ -4708,12 +4749,12 @@

    format.

    -

    For options, the key is either the descriptionKey, -or the option’s longest name, without the prefix. So, for an option --verbose, the key would be verbose, and for an option /F, the key would be F.

    +

    For options, the key is either the descriptionKey, +or the option’s longest name, without the prefix. So, for an option --verbose, the key would be verbose, and for an option /F, the key would be F.

    -

    For positional parameters, the key is either the descriptionKey, -or the positional parameter’s param label.

    +

    For positional parameters, the key is either the descriptionKey, +or the positional parameter’s param label.

    End users may not know what the descriptionKey of your options and positional parameters are, so be sure to document that with your application.

    @@ -4895,6 +4936,44 @@

    +
    +

    5.8. Null Default Values

    +
    +

    To assign null as default value, applications can use the value Option.NULL_VALUE in the annotations for defaultValue and fallbackValue.

    +
    +
    +

    If the type of the option or positional parameter is Optional<T>, then picocli assigns the default value Optional.empty() instead of null.

    +
    +
    +

    For example:

    +
    +
    +
    Java
    +
    +
    @Option(names = "-x", defaultValue = Option.NULL_VALUE)
    +Integer x; // default value is null
    +
    +@Option(names = "-y", defaultValue = Option.NULL_VALUE)
    +Optional<Integer> y; // default value is Optional.empty()
    +
    +@Option(names = "-D", mapFallbackValue = Option.NULL_VALUE)
    +Map<String, Optional<Integer>> map; // "-Dkey" results in ["key" : Optional.empty()]
    +
    +
    +
    +
    Kotlin
    +
    +
    @Option(names = ["-x"], defaultValue = Option.NULL_VALUE)
    +lateinit var x: Int // default value is null
    +
    +@Option(names = ["-y"], defaultValue = Option.NULL_VALUE)
    +lateinit var y: Optional<Int> // default value is Optional.empty()
    +
    +@Option(names = ["-D"], mapFallbackValue = Option.NULL_VALUE)
    +lateinit var map: Map<String, Optional<Int>> // "-Dkey" results in ["key" : Optional.empty()]
    +
    +
    +
    @@ -6831,10 +6910,10 @@

    <

    -

    When the end user specified invalid input, the execute method prints an error message followed by the usage help message of the command, and returns an exit code. This can be customized by configuring a IParameterExceptionHandler.

    +

    When the end user specified invalid input, the execute method prints an error message followed by the usage help message of the command, and returns an exit code. This can be customized by configuring an IParameterExceptionHandler.

    -

    If the business logic of the command throws an exception, the execute method prints the stack trace of the exception and returns an exit code. This can be customized by configuring a IExecutionExceptionHandler.

    +

    If the business logic of the command throws an exception, the execute method prints the stack trace of the exception and returns an exit code. This can be customized by configuring an IExecutionExceptionHandler.

    @@ -6895,7 +6974,7 @@

    9.6. Migration

    -

    Older versions of picocli supported run, call, invoke and parseWithHandlers convenience methods that were similar to execute but had limited support for parser configuration and and limited support for exit codes. +

    Older versions of picocli supported run, call, invoke and parseWithHandlers convenience methods that were similar to execute but had limited support for parser configuration and limited support for exit codes. These methods are deprecated from picocli 4.0. The sections below show some common usages and how the same can be achieved with the execute API.

    @@ -7281,7 +7360,7 @@

    9

    The default parameter exception handler prints an error message describing the problem, -followed by either suggested alternatives +followed by either suggested alternatives for mistyped options, or the full usage help message of the problematic command. Finally, the handler returns an exit code. This is sufficient for most applications.

    @@ -7676,10 +7755,10 @@

    import picocli.CommandLine.Model.CommandSpec; import picocli.CommandLine.*; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.constraints.*; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import jakarta.validation.constraints.*; import java.util.Set; // Example inspired by https://www.baeldung.com/javax-validation @@ -7740,10 +7819,10 @@

    import picocli.CommandLine.Model.CommandSpec import picocli.CommandLine.* -import javax.validation.ConstraintViolation -import javax.validation.Validation -import javax.validation.Validator -import javax.validation.constraints.* +import jakarta.validation.ConstraintViolation +import jakarta.validation.Validation +import jakarta.validation.Validator +import jakarta.validation.constraints.* // Example inspired by https://www.baeldung.com/javax-validation class User : Runnable { @@ -7792,6 +7871,86 @@

    +

    10.2.4. Using a Custom Execution Strategy for Validation

    +
    +

    The above JSR-380 BeanValidation can also be accomplished with a custom IExecutionStrategy that does the validation before executing the command. +This moves the validation logic into a separate class. +Picocli invokes this logic, removing the need to call a validate method from the business logic.

    +
    +
    +

    Such a custom execution strategy could look like this:

    +
    +
    +
    Java
    +
    +
    class ValidatingExecutionStrategy implements IExecutionStrategy {
    +    public int execute(ParseResult parseResult) {
    +        validate(parseResult.commandSpec());
    +        return new CommandLine.RunLast().execute(parseResult); // default execution strategy
    +    }
    +
    +    void validate(CommandSpec spec) {
    +        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
    +        Set<ConstraintViolation<Object>> violations = validator.validate(spec.userObject());
    +        if (!violations.isEmpty()) {
    +            String errorMsg = "";
    +            for (ConstraintViolation<?> violation : violations) {
    +                errorMsg += "ERROR: " + violation.getMessage() + "\n";
    +            }
    +            throw new ParameterException(spec.commandLine(), errorMsg);
    +        }
    +    }
    +}
    +
    +
    +
    +
    Kotlin
    +
    +
    class ValidatingExecutionStrategy : IExecutionStrategy {
    +    override fun execute(parseResult : ParseResult) : Int {
    +        validate(parseResult.commandSpec())
    +        return CommandLine.RunLast().execute(parseResult) // default execution strategy
    +    }
    +
    +    private fun validate(spec : CommandSpec) {
    +        val validator: Validator = Validation.buildDefaultValidatorFactory().validator
    +        val violations: Set<ConstraintViolation<Any>> = validator.validate(spec.userObject())
    +        if (violations.isNotEmpty()) {
    +            var errorMsg = ""
    +            for (violation in violations) {
    +                errorMsg += "ERROR: ${violation.message}\n"
    +            }
    +            throw CommandLine.ParameterException(spec.commandLine(), errorMsg)
    +        }
    +    }
    +}
    +
    +
    +
    +

    The application can wire in this custom execution strategy as follows:

    +
    +
    +
    Java
    +
    +
        public static void main(String... args) {
    +        new CommandLine(new MyApp())
    +                .setExecutionStrategy(new ValidatingExecutionStrategy())
    +                .execute(args);
    +    }
    +
    +
    +
    +
    Kotlin
    +
    +
        public static void main(String... args) {
    +        CommandLine(MyApp())
    +                .setExecutionStrategy(ValidatingExecutionStrategy())
    +                .execute(*args)
    +    }
    +
    +
    +

    @@ -7834,7 +7993,7 @@

    11.1.
    -

    See the casesensitivity package in picocli-examples for some examples.

    +

    See the casesensitivity package in picocli-examples for some examples.

    @@ -8220,6 +8379,8 @@

    11.9. Option Names or Subcommands as Option Values

    +
    +

    11.9.1. By Default Options Do Not Consume Option Names or Subcommands

    Since picocli 4.4, the parser will no longer assign values that match a subcommand name or an option name to options that take a parameter, unless the value is in quotes. For example:

    @@ -8264,7 +8425,7 @@

    -
    java App -x="-y"
    +
    java App -x=\"-y\"

    +

    +
    +

    11.9.2. Enable Consuming Option Names or Subcommands

    +
    +

    Picocli 4.7.0 introduces two parser configuration options to change this behaviour:

    +
    +
    +
      +
    • +

      CommandLine::setAllowOptionsAsOptionParameters allows options to consume option names

      +
    • +
    • +

      CommandLine::setAllowSubcommandsAsOptionParameters allows options to consume subcommand names

      +
    • +
    +
    +
    +

    When set to true, all options in the command (options that take a parameter) can consume values that match option names or subcommand names.

    +
    +
    +

    This means that any option will consume the maximum number of arguments possible for its arity.

    +
    +
    + + + + + +
    + + +
    +

    USE WITH CAUTION!

    +
    +
    +

    If an option is defined as arity = "*", this option will consume all remaining command line arguments following this option (until the End-of-options delimiter) as parameters of this option.

    +
    +
    +
    +
    +
    +

    11.9.3. Custom Parsing for Option-Specific Behaviour

    +
    +

    The parser configuration options in the previous section apply to all options in the command.

    +
    -

    Another idea is to replace or augment picocli’s parser by doing custom parameter processing for such options. For example:

    +

    Some applications may want to enable options consuming option names or subcommands for some options, but not for all options in the command. +Such applications can replace or augment picocli’s parser by doing custom parameter processing for such options. +For example:

    Java
    @@ -8364,6 +8572,7 @@

    11.10. Toggle Boolean Flags

    @@ -8664,9 +8873,9 @@

    -

    By default, a set of regular expressions is used to control the above. -Use CommandLine::setNegatableOptionTransformer to replace the INegatableOptionTransformer with a custom version. -See the javadoc for details.

    +

    By default, a set of regular expressions is used to control the above. +Use CommandLine::setNegatableOptionTransformer to replace the INegatableOptionTransformer with a custom version. +See the JavaDoc for details.

    @@ -8677,7 +8886,7 @@

    11.15.1. IParameterConsumer Parser Plugin

    -

    Options or positional parameters can be assigned a IParameterConsumer that implements +

    Options or positional parameters can be assigned an IParameterConsumer that implements custom logic to process the parameters for this option or this position. When an option or positional parameter with a custom IParameterConsumer is matched on the command line, picocli’s internal parser is temporarily suspended, @@ -8766,7 +8975,7 @@

    -

    Options, positional parameters and commands can be assigned a IParameterPreprocessor that implements custom logic to preprocess the parameters for this option, position or command. +

    Options, positional parameters and commands can be assigned an IParameterPreprocessor that implements custom logic to preprocess the parameters for this option, position or command. When an option, positional parameter or command with a custom IParameterPreprocessor is matched on the command line, picocli’s internal parser is temporarily suspended, and this custom logic is invoked.

    @@ -9527,7 +9736,7 @@

    -

    13.2.4. Injecting CommandSpec Into a IVersionProvider

    +

    13.2.4. Injecting CommandSpec Into an IVersionProvider

    As of picocli 4.2.0, IVersionProvider implementations can have @Spec-annotated fields. If such a field exists, picocli will inject the CommandSpec of the command that uses this version provider. @@ -9725,7 +9934,7 @@

    14.3.

    14.4. Option List

    -

    14.4.1. Unsorted Option List

    +

    14.4.1. Sorted Option List

    By default, the options list in the usage help message displays options in alphabetical order. Use the sortOptions = false attribute to display options in the order they are declared in your class.

    @@ -9759,7 +9968,31 @@

    1

    -

    14.4.3. Required-Option Marker

    +

    14.4.3. Sorted Synopsis

    +
    +

    By default, the synopsis of the usage help message displays options in alphabetical order. +Picocli 4.7.0 introduced a sortSynopsis = false attribute to let the synopsis display options in the order they are declared in your class, or sorted by their order attribute.

    +
    +
    +
    +
    @Command(sortSynopsis = false)
    +
    +
    +
    + + + + + +
    + + +Regardless of the sorting strategy, boolean short options are shown first as a single clustered group in the synopsis, followed by options that take parameters, unless the parser is configured to disallow clustered boolean short options. +
    +
    +
    +
    +

    14.4.4. Required-Option Marker

    Required options can be marked in the option list by the character specified with the requiredOptionMarker attribute. By default options are not marked because the synopsis shows users which options are required and which are optional. This feature may be useful in combination with the abbreviateSynopsis attribute. For example:

    @@ -9798,7 +10031,7 @@

    -

    14.4.4. Short and Long Option Columns

    +

    14.4.5. Short and Long Option Columns

    The default layout shows short options and long options in separate columns, followed by the description column.

    @@ -9830,14 +10063,14 @@

    It is possible to left-align all options by using a custom layout. -See LeftAlignOptions.java in the picocli-examples module for an example. +See LeftAlignOptions.java in the picocli-examples module for an example.

    -

    14.4.5. Long Option Column Width

    +

    14.4.6. Long Option Column Width

    The default layout shows short options and long options in separate columns, followed by the description column. The width of the long options column shrinks automatically if all long options are very short, @@ -9874,7 +10107,7 @@

    -

    The minimum value that can be specified for longOptionsMaxWidth is 20, the maximum value is the usage width minus 20.

    +

    The minimum value that can be specified for longOptionsMaxWidth is 20, the maximum value is the usage width minus 20.

    @@ -9888,7 +10121,7 @@

    14.5. Usage Wid

    Picocli 3.0 also introduced programmatic API for this via the CommandLine::setUsageHelpWidth and UsageMessageSpec::width methods.

    -

    End users can use system property picocli.usage.width to specify a custom width that overrides the programmatically set value.

    +

    End users can use the system property picocli.usage.width to specify a custom width that overrides the programmatically set value.

    The minimum width that can be configured is 55 characters.

    @@ -9901,7 +10134,7 @@

    CommandLine::setUsageHelpAutoWidth and UsageMessageSpec::autoWidth methods.

    -

    End users may enable this by setting system property picocli.usage.width to AUTO, and may disable this by setting this system property to a numeric value.

    +

    End users may enable this by setting the system property picocli.usage.width to AUTO, and may disable this by setting this system property to a numeric value.

    This feature requires Java 7.

    @@ -10084,7 +10317,7 @@
    -

    Each element of the attribute String array is displayed on a separate line.

    +

    Each element of the attribute String array is displayed on a separate line.

    @@ -10097,8 +10330,7 @@

    14.12. Ex
    Java
    -
    @Command(mixinStandardHelpOptions = true,
    -         exitCodeListHeading = "Exit Codes:%n",
    +
    @Command(exitCodeListHeading = "Exit Codes:%n",
              exitCodeList = {
                  " 0:Successful program execution",
                  "64:Usage error: user input for the command was incorrect, " +
    @@ -10113,8 +10345,7 @@ 

    14.12. Ex
    Kotlin
    -
    @Command(mixinStandardHelpOptions = true,
    -         exitCodeListHeading = "Exit Codes:%n",
    +
    @Command(exitCodeListHeading = "Exit Codes:%n",
              exitCodeList = [
                  " 0:Successful program execution",
                  "64:Usage error: user input for the command was incorrect,"  +
    @@ -10151,7 +10382,7 @@ 

    14.

    Version help may have format specifiers that format additional arguments passed to the printVersionHelp method.

    -

    See the java.util.Formatter javadoc for details.

    +

    See the java.util.Formatter JavaDoc for details.

    @@ -10765,7 +10996,7 @@

    enum class Lang { java, groovy, kotlin, javascript, frege, clojure }
     
    -class MyAbcCandidates : ArrayList<String?>(listOf("A", "B", "C"))
    +class MyAbcCandidates : ArrayList<String?>(listOf("A", "B", "C"))
     
     class ValidValuesDemo {
         @Option(names = ["-l"], description = ["Enum values: \${COMPLETION-CANDIDATES}"])
    @@ -11147,7 +11378,7 @@ 

    15.6.2. Windows

    Displaying colors on Windows Command Console and PowerShell requires a bit of extra work.

    -

    The easiest way to accomplish this is to use the Jansi library in your application.

    +

    The easiest way to accomplish this is to use the Jansi library in your application.

    @@ -11279,7 +11510,7 @@
    For Reference: 3rd Party Software

    In Windows version prior to 10, the Windows command console doesn’t support output coloring by default. -One option is for end users to install either Cmder, ConEmu, ANSICON or Mintty (used by default in GitBash and Cygwin) to add coloring support to their Windows command console.

    +One option is for end users to install either Cmder, ConEmu, ANSICON or Mintty (used by default in GitBash and Cygwin) to add coloring support to their Windows command console.

    @@ -11348,7 +11579,7 @@

    ConEmuANSI == OFF.

  • -

    ANSI is disabled when Picocli guesses the program’s output stream is not connected to a terminal: when System.console() returns null. This check is omitted if picocli guesses the program is running in a Windows Cygwin, MSYS or MSYS2 environment: when system property os.name starts with "Windows" and either environment variable TERM contains cygwin or starts with xterm or environment variable OSTYPE is defined.

    +

    ANSI is disabled when Picocli guesses the program’s output stream is not connected to a terminal: when System.console() returns null. This check is omitted if picocli guesses the program is running in a Windows Cygwin, MSYS or MSYS2 environment: when system property os.name starts with "Windows" and either environment variable TERM contains cygwin or starts with xterm or environment variable OSTYPE is defined.

  • ANSI is enabled when environment variable ANSICON is defined.

    @@ -11363,7 +11594,7 @@

    ).

  • -

    ANSI is enabled when picocli guesses the program is running in a Cygwin, MSYS or MSYS2 environment (either environment variable TERM contains cygwin or starts with xterm or environment variable OSTYPE is defined).

    +

    ANSI is enabled when picocli guesses the program is running in a Cygwin, MSYS or MSYS2 environment (either environment variable TERM contains cygwin or starts with xterm or environment variable OSTYPE is defined).

  • @@ -11630,7 +11861,7 @@

    -

    More examples for customizing the usage help message are here.

    +

    More examples for customizing the usage help message are here.

    @@ -11678,7 +11909,7 @@

    16.2. Custo

    This can be achieved in picocli by subclassing the Help.Layout class. -See the CustomLayoutDemo class in the picocli tests for how to achieve this.

    +See the CustomLayoutDemo class in the picocli tests for how to achieve this.

    @@ -11704,10 +11935,10 @@

    The Quick Guide has an example application featuring subcommands, with a detailed explanation.

  • -

    The picocli-examples code module has a subcommand section with several minimal code samples, explaining the use of subcommands both via methods and when defined in their own class.

    +

    The picocli-examples code module has a subcommand section with several minimal code samples, explaining the use of subcommands both via methods and when defined in their own class.

  • -

    The picocli-examples code module also shows subcommand examples in other languages, like Scala and Kotlin, as well as Java.

    +

    The picocli-examples code module also shows subcommand examples in other languages, like Scala and Kotlin, as well as Java.

  • @@ -11820,7 +12051,7 @@

    command methods section for more details and examples.

    -

    The picocli-examples module has an minimal example application, demonstrating the definition of subcommands via methods. This example was coded in Java, Kotlin and Scala.

    +

    The picocli-examples module has an minimal example application, demonstrating the definition of subcommands via methods. This example was coded in Java, Kotlin and Scala.

    @@ -12262,7 +12493,7 @@

    -

    The logging example in picocli-examples shows how this can be used to configure the Log4j log level based on a --verbose option, prior to execution.

    +

    The logging example in picocli-examples shows how this can be used to configure the Log4j log level based on a --verbose option, prior to execution.

    @@ -12806,7 +13037,7 @@

    You may be interested in the execute method to reduce error handling and other boilerplate code in your application. -See also the previous section, Executing Subcommands.

    +See also the section, Executing Subcommands.

    @@ -12900,7 +13131,7 @@

    By default, the usage help message only shows the subcommands of the specified command, and not the nested sub-subcommands. This can be customized by specifying your own IHelpSectionRenderer for the command list section. -The picocli-examples module has an example that shows how to accomplish this.

    +The picocli-examples module has an example that shows how to accomplish this.

    To get usage help for nested subcommands, either set mixinStandardHelpOptions = true in all commands in the hierarchy, and/or add picocli.CommandLine.HelpCommand to the subcommands of all commands. Then you can get help message for a nested (sub-)subcommand like this:

    @@ -12986,7 +13217,7 @@

    17.13.1. Example

    In the above command line invocation, the myapp top-level command is followed by its subcommand add. -Next, this is followed by another two occurences of add, followed by list and send-report. +Next, this is followed by another two occurrences of add, followed by list and send-report. These are all "sibling" commands, that share the same parent command myapp. This invocation is valid because myapp is marked with subcommandsRepeatable = true.

    @@ -13040,7 +13271,7 @@

    -

    is invoked, only the last two sub-subcommands subsub-B1 and subsub-B2 (who both have parent command subcmd-B) are executed by default. You can set a different execution strategy if this does not meet your needs.

    +

    is invoked, only the last two sub-subcommands subsub-B1 and subsub-B2 (who both have parent command subcmd-B) are executed by default. You can set a different execution strategy if this does not meet your needs.

    @@ -13091,7 +13322,7 @@

    18. Reuse

    18.1. Subclassing

    One way to reuse options and attributes is to extend the class where they are defined. -Picocli will walk the class hierarchy to check for annotations, so @Options, @Parameters and @Command attributes declared on a superclass are available in all subclasses.

    +Picocli will walk the class hierarchy to check for annotations, so @Option, @Parameters and @Command attributes declared on a superclass are available in all subclasses.

    Below is an example class, ReusableOptions, that defines some usage help attributes and a --verbose option that we want to reuse.

    @@ -13548,7 +13779,7 @@

    18.2.1.

    Mixins added with the @Mixin annotation can also be accessed via the map returned by CommandLine.getMixins.

    -

    The GitHub project has a full working example.

    +

    The GitHub project has a full working example.

    @@ -14122,7 +14353,7 @@

    -

    See also the logging example in picocli-examples for a way to modify only the Log4j ConsoleAppenders' log level from the specified verbosity.

    +

    See also the logging example in picocli-examples for a way to modify only the Log4j ConsoleAppenders' log level from the specified verbosity.

    -

    In order to get you started quickly, the picocli-examples module has a minimal i18n example, coded both in Java and Kotlin.

    +

    In order to get you started quickly, the picocli-examples module has a minimal i18n example, coded both in Java and Kotlin.

    19.1. Configuration

    @@ -14301,7 +14532,7 @@

    -

    When the descriptionKey is omitted, the fallback for options is any option name without the leading dashes, for example:

    +

    When the descriptionKey is omitted, the fallback for options is any option name without the leading dashes, for example:

    Java
    @@ -14325,7 +14556,7 @@

    -

    For positional parameters the fallback key is the paramLabel + [ index ], for example:

    +

    For positional parameters the fallback key is the paramLabel + [ index ], for example:

    @@ -14546,7 +14777,7 @@

    -
    java -cp "picocli-4.6.3.jar;myapp.jar" org.myorg.GreetingApp Sarah Lea
    +
    java -cp "picocli-4.7.0.jar;myapp.jar" org.myorg.GreetingApp Sarah Lea
    -
    java -cp "picocli-4.6.3.jar;myapp.jar" org.myorg.GreetingApp --locale=es Sarah Lea
    +
    java -cp "picocli-4.7.0.jar;myapp.jar" org.myorg.GreetingApp --locale=es Sarah Lea
    @@ -14577,7 +14808,7 @@

    Using the command line parameter --locale, one can also determine the language of the help output of your application. -The picocli-examples module has examples with fully implemented, localized help output, coded both in Java and Kotlin.

    +The picocli-examples module has examples with fully implemented, localized help output, coded both in Java and Kotlin.

    @@ -14773,7 +15004,7 @@

    -

    The above variable is expanded as follows. First, try to find key a in the command’s resource bundle. If a is not found in the resource bundle, get the value of environment variable b. If no environment variable b exists, get the value of system property c. Finally, no system property c exists, the value of the expression becomes X.

    +

    The above variable is expanded as follows. First, try to find key a in the command’s resource bundle. If a is not found in the resource bundle, get the value of environment variable b. If no environment variable b exists, get the value of system property c. Finally, if no system property c exists, the value of the expression becomes X.

    Another use case is creating idiomatic domain-specific languages for processing command line arguments. -For example, Groovy’s CliBuilder DSL is implemented using picocli’s programmatic API.

    +For example, Groovy’s CliBuilder DSL is implemented using picocli’s programmatic API.

    @@ -14988,7 +15219,7 @@

    Kotlin

    @@ -15053,7 +15284,7 @@

    var y // reset to null when option not specified - @Option(names = ["-x"], defaultValue = Option.NULL) + @Option(names = ["-x"], defaultValue = Option.NULL_VALUE) fun setX(x: String) { this.x = x } // retains value of previous parseArgs invocation when option not specified @@ -15086,12 +15317,13 @@

    21.3. @Command(description = "Concatenate FILE(s) to standard output.", mixinStandardHelpOptions = true, version = "4.1.3") - void cat(@Option(names = {"-E", "--show-ends"}) boolean showEnds, + int cat(@Option(names = {"-E", "--show-ends"}) boolean showEnds, @Option(names = {"-n", "--number"}) boolean number, @Option(names = {"-T", "--show-tabs"}) boolean showTabs, @Option(names = {"-v", "--show-nonprinting"}) boolean showNonPrinting, @Parameters(paramLabel = "FILE") File[] files) { // process files + return CommandLine.ExitCode.OK; } } @@ -15106,8 +15338,9 @@

    21.3. @Option(names = ["-n", "--number"]) number: Boolean, @Option(names = ["-T", "--show-tabs"]) showTabs: Boolean, @Option(names = ["-v", "--show-nonprinting"]) showNonPrinting: Boolean, - @Parameters(paramLabel = "FILE") files: Array<File>?) { + @Parameters(paramLabel = "FILE") files: Array<File>?): Int { // process files + return CommandLine.ExitCode.OK } } @@ -15188,7 +15421,7 @@

    2 @Command fun commit(@Option(names = ["-m", "--message"]) commitMessage: String?, @Option(names = ["--squash"], paramLabel = "<commit>") squash: String?, - @Parameters(paramLabel = "<file>") files: Array<File?>?) { + @Parameters(paramLabel = "<file>") files: Array<File?>?) { // ... implement business logic } } @@ -15390,7 +15623,7 @@

    21.5. Cus
    -

    If no factory is specified, a default factory is used. The default factory requires that the classes to instantiate have a public no-argument constructor: it instantiates the class by calling first calling clazz.newInstance(), and if that fails, clazz.getDeclaredConstructor().newInstance().

    +

    If no factory is specified, a default factory is used. The default factory requires that the classes to instantiate have a public no-argument constructor: it instantiates the class by first calling clazz.newInstance(), and if that fails, clazz.getDeclaredConstructor().newInstance().

    From version 4.0, picocli delegates all object creation to the factory, including creating Collection instances to capture multi-value @Option values. @@ -15598,7 +15831,7 @@

    21.

    Automatic indexes depend on the ability of Java reflection and Java annotation processors to iterate over fields in declaration order in the source code. Officially this is not guaranteed by the Java spec. -In practice this has worked in Oracle JVMs and OpenJDK from Java 6, but there is some risk this may not work in the future or on other JVM’s. +In practice this has worked in Oracle JVMs and OpenJDK from Java 6, but there is some risk this may not work in the future or on other JVMs. In general, for single-value positional parameters, using explicit indexes is the safer option. (Multi-value positional parameters can safely omit the index attribute.)

    @@ -16002,7 +16235,7 @@

    Slightly older, but a classic: when designing your command line application, -the GNU recommendations for command line interfaces and POSIX Utility Guidelines may be useful.

    +the GNU recommendations for command line interfaces and POSIX Utility Guidelines may be useful.

    Generally, many applications use options for optional values and parameters for mandatory values. @@ -16187,7 +16420,7 @@

    <dependency> <groupId>info.picocli</groupId> <artifactId>picocli-spring-boot-starter</artifactId> - <version>4.6.3</version> + <version>4.7.0</version> </dependency>

    @@ -16195,7 +16428,7 @@

    Gradle (Groovy)
    dependencies {
    -    implementation 'info.picocli:picocli-spring-boot-starter:4.6.3'
    +    implementation 'info.picocli:picocli-spring-boot-starter:4.7.0'
     }
    @@ -16203,7 +16436,7 @@

    Gradle (Kotlin)
    dependencies {
    -    implementation("info.picocli:picocli-spring-boot-starter:4.6.3")
    +    implementation("info.picocli:picocli-spring-boot-starter:4.7.0")
     }
    @@ -16797,7 +17030,7 @@

    22.4. Q import picocli.CommandLine.*; @TopCommand (3) -@Command (subcommands = MailCommand.HeaderCommand.class, requiredOptionMarker = '*') +@Command(subcommands = MailCommand.HeaderCommand.class, requiredOptionMarker = '*') public class MailCommand implements Runnable { (1) private Mail mail = new Mail(); @Inject Mailer mailer; // Quarkus mailer @@ -16974,7 +17207,7 @@

    22.4. Q
    Sending emails in a development and production systems

    If you are running Quarkus in DEV or TEST mode, mails are not actually sent, but printed on STDOUT and collected in a MockMailbox bean instead. -In a production system, to have to set the boolean configuration value quarkus.mailer.mock to true. Additionally to need to give further configuration values (STMP host name, … inside the file src/main/resources/application.properties. +In a production system, you have to set the boolean configuration value quarkus.mailer.mock to true. Additionally, you need to give further configuration values (SMTP host name, … inside the file src/main/resources/application.properties. Please refer to the Quarkus guide Sending Emails for details and additional information.

    @@ -17147,7 +17380,7 @@

    <

    24. OSGi Bundle

    -

    OSGi logo

    +

    OSGi logo

    From 4.0, the picocli JAR is an OSGi bundle with Bundle-Name: picocli and other appropriate metadata in the manifest.

    @@ -17161,10 +17394,7 @@

    25. Tracing

    Picocli 1.0 introduced support for parser tracing to facilitate troubleshooting.

    -

    System property picocli.trace controls the trace level. Supported levels are OFF, WARN, INFO, and DEBUG. The default trace level is WARN.

    -
    -
    -

    Specifying system property -Dpicocli.trace without a value will set the trace level to INFO.

    +

    Supported levels are OFF, WARN, INFO, and DEBUG. The default trace level is WARN.

      @@ -17185,6 +17415,14 @@

      25. Tracing

    +
    +

    25.1. Trace Level via System Property

    +
    +

    System property picocli.trace can be used to control the trace level.

    +
    +
    +

    Specifying system property -Dpicocli.trace without a value will set the trace level to INFO.

    +

    Example:

    @@ -17215,6 +17453,39 @@

    25. Tracing

    +
    +

    25.2. Tracer API

    +
    +

    From picocli 4.7.0, applications can programmatically set the trace level, and use tracing in custom components.

    +
    +
    +

    In addition to setting system property picocli.trace, applications can now change the trace level via the Tracer::setLevel method. For example:

    +
    +
    +
    +
    CommandLine.tracer().setLevel(CommandLine.TraceLevel.INFO);
    +
    +
    +
    +

    The new public method CommandLine.tracer() returns the singleton Tracer object that is used internally by picocli, and can also be used by custom component implementations to do tracing. For example:

    +
    +
    +
    +
    class MyIntConverter implements ITypeConverter<Integer> {
    +    public Integer convert(String value) {
    +        try {
    +            return Integer.parseInt(value);
    +        } catch (NumberFormatException ex) {
    +            CommandLine.tracer().info(
    +                    "Could not convert %s to Integer, returning default value -1", value);
    +            return -1;
    +        }
    +    }
    +}
    +
    +
    +
    +

    26. TAB Autocomplete

    @@ -17233,7 +17504,7 @@

    asciidoctor tool.

    -

    See the Generate Documentation section of the picocli-codegen README for details on how to generate and customize this documentation.

    +

    See the Generate Documentation section of the picocli-codegen README for details on how to generate and customize this documentation.

    To see some examples, the man pages for the picocli built-in tools were created with this tool:

    @@ -17332,7 +17603,7 @@

    -

    This assumes that the application uses the PrintWriter provided by CommandLine.getOut or CommandLine.getErr. +

    This assumes that the application uses the PrintWriter provided by CommandLine.getOut or CommandLine.getErr. Applications can get these writers via the @Spec annotation:

    -
    alias mycommand='java -cp "/path/to/picocli-4.6.3.jar:/path/to/myapp.jar" org.myorg.MainClass'
    +
    alias mycommand='java -cp "/path/to/picocli-4.7.0.jar:/path/to/myapp.jar" org.myorg.MainClass'
    @@ -17909,8 +18180,8 @@

    -

    GraalVM native images have some limitations and require some extra configuration -to be able to use features like reflection, resources (including resource bundles) and dynamic proxies.

    +

    GraalVM native images have some limitations and require some extra configuration +to be able to use features like reflection, resources (including resource bundles) and dynamic proxies.

    @@ -17918,12 +18189,12 @@

    The picocli-codegen module contains an annotation processor that generates the necessary configuration files under META-INF/native-image/picocli-generated/$project during compilation, -to be included in the application jar. The Annotation Processor section of the manual has details on configuring the annotation processor, and further information can be found in the picocli-codegen README +to be included in the application jar. The Annotation Processor section of the manual has details on configuring the annotation processor, and further information can be found in the picocli-codegen README file.

    By embedding these configuration files, your jar is instantly Graal-enabled: the -native-image tool +native-image tool used to generate the native executable is able to get the configuration from the jar. In most cases no further configuration is needed when generating a native image.

    @@ -17933,7 +18204,7 @@

    -
    path/to/native-image -cp picocli-4.6.3.jar --static -jar myapp.jar
    +
    path/to/native-image -cp picocli-4.7.0.jar --static -jar myapp.jar
    @@ -17967,6 +18238,38 @@

    See also this demo Gradle project and this demo Maven project that provide a simple complete CLI app, with build instructions, that developers can clone, and build to get the stand-alone executable.

    +
    +

    + + + + +
    + + +
    +

    Native images on Windows have the problem that the native image does not include the required dependency msvcr100.dll (for Java 8) or VCRUNTIME140.dll (with GraalVM 19.3 or later for Java 11). On Windows machines where this dependency is not in the PATH, the native image fails to start, and shows an error dialog "System Error: The program can’t start because VCRUNTIME140.dll is missing from your computer".

    +
    +
    +

    Many thanks to Matthew Mellon for suggesting to use pefrmdllembed as a workaround. Syntax:

    +
    +
    +
    +
    pefrmdllembed -impinj VCRUNTIME140.DLL your-native-image.exe your-native-image-fixed.exe
    +
    +
    +
    +
    +
    +

    Caveat for the above workaround:

    +
    +
    +

    If you embed MSVCR100.DLL or VCRUNTIME140.DLL in your exe rather than create an installer that installs a dependency, you will probably lose the ability of Windows to apply updates for vulnerabilities in the shared runtime that might impact the security of your application. Windows installer has magic to keep you from downgrading the DLL in %System32%, and, once it is installed, I believe Windows Update keeps it up-to-date.

    +
    +
    +
    +
    +

    @@ -17974,7 +18277,7 @@

    A really executable JAR is a JAR file that is also a shell script which executes the JAR by running it with java. -It thus functions as an exectuable, is portable across operating systems and architectures, +It thus functions as an executable, is portable across operating systems and architectures, and is still a valid JAR file that can be executed explicitly or otherwise used as a JAR.

    @@ -18005,6 +18308,10 @@

    29.8. jpackage

    @@ -18017,16 +18324,14 @@

    29.8. jpackage

    For further details, you may read the jpackage synopsis or study the Packaging Tool User’s Guide. -This InfoQ article may be of interest, too. -Gradle users may like these plugins: org.beryx Badass Runtime Plugin -and org.beryx Badass JLink Plugin.

    +This InfoQ article may be of interest, too.

    29.9. jbang

    jbang allows you to write scripts in Java that use external dependencies. -You use it with a //DEPS comment, similar to the @Grab annotation in Groovy.

    +You use it with a //DEPS comment, similar to the @Grab annotation in Groovy.

    Use jbang --init=cli helloworld.java to create an initial script with a picocli template. @@ -18040,7 +18345,7 @@

    29.10. JReleaserSnapcraft, Scoop, jbang, Docker, among others. Currently two different distribution types are supported: jlink, and standard zip/tar distributions. The latter can be generated with a combination of the appassembler-maven-plugin and -maven-assembly-plugin plugins if using Maven, or the +maven-assembly-plugin plugins if using Maven, or the application plugin if using Gradle.

    @@ -18111,7 +18416,7 @@

    30.1.2. G

    -
    @Grab('info.picocli:picocli-groovy:4.6.3')
    +
    @Grab('info.picocli:picocli-groovy:4.7.0')
     @GrabConfig(systemClassLoader=true)
     @Command(name = "myScript",
             mixinStandardHelpOptions = true, // add --help and --version options
    @@ -18197,7 +18502,7 @@ 

    30.1.2. G When upgrading scripts from picocli versions older than 4.0, just changing the version number is not enough! -Scripts should use @Grab('info.picocli:picocli-groovy:4.6.3'). The old artifact id @Grab('info.picocli:picocli:4.6.3') will not work, +Scripts should use @Grab('info.picocli:picocli-groovy:4.7.0'). The old artifact id @Grab('info.picocli:picocli:4.7.0') will not work, because the @picocli.groovy.PicocliScript annotation class and supporting classes have been moved into a separate module, picocli-groovy. @@ -18274,6 +18579,18 @@

    + + + + + +
    + + +From picocli version 4.7.0, this feature can be disabled by setting system property picocli.disable.closures to true. Disabling support for closures in annotations can improve the application startup time. +
    +

    -

    In order to get you started quickly, you may have a look at the Groovy examples folder of the picocli code repository.

    +

    In order to get you started quickly, you may have a look at the Groovy examples folder of the picocli code repository.

    @@ -18307,7 +18624,7 @@

    30.2. Kotlin

    30.2.1. Kotlin Annotation Syntax

    -

    Kotlin 1.2 (released Nov 28, 2017) officially supports array literals in annotations, allowing a more compact notation:

    +

    Kotlin 1.2 (released Nov 28, 2017) officially supports array literals in annotations, allowing a more compact notation:

    @@ -18374,7 +18691,7 @@

    -

    In order to get you started quickly, you may have a look at the Kotlin examples folder of the picocli code repository.

    +

    In order to get you started quickly, you may have a look at the Kotlin examples folder of the picocli code repository.

    @@ -18410,19 +18727,19 @@

    30.3. Scala

    -

    In order to get you started quickly, you may have a look at the Scala examples folder of the picocli code repository.

    +

    In order to get you started quickly, you may have a look at the Scala examples folder of the picocli code repository.

    -

    31. API Javadoc

    +

    31. API JavaDoc

    -

    Picocli API Javadoc can be found here.

    +

    Picocli API JavaDoc can be found here.

    @@ -18460,7 +18777,7 @@

    34. Mailing L

    35. License

    -

    Picocli is licensed under the Apache License 2.0.

    +

    Picocli is licensed under the Apache License 2.0.

    @@ -18483,15 +18800,13 @@

    37.1. Build too
    Gradle
    -
    implementation 'info.picocli:picocli:4.6.3'
    +
    implementation 'info.picocli:picocli:4.7.0'
    Gradle (Kotlin)
    -
    dependencies {
    -    implementation("info.picocli:picocli:4.6.3")
    -}
    +
    implementation("info.picocli:picocli:4.7.0")
    @@ -18500,46 +18815,46 @@

    37.1. Build too
    <dependency>
       <groupId>info.picocli</groupId>
       <artifactId>picocli</artifactId>
    -  <version>4.6.3</version>
    +  <version>4.7.0</version>
     </dependency>

    Scala SBT
    -
    libraryDependencies += "info.picocli" % "picocli" % "4.6.3"
    +
    libraryDependencies += "info.picocli" % "picocli" % "4.7.0"
    Ivy
    -
    <dependency org="info.picocli" name="picocli" rev="4.6.3" />
    +
    <dependency org="info.picocli" name="picocli" rev="4.7.0" />
    Grape
    @Grapes(
    -    @Grab(group='info.picocli', module='picocli', version='4.6.3')
    +    @Grab(group='info.picocli', module='picocli', version='4.7.0')
     )
    Leiningen
    -
    [info.picocli/picocli "4.6.3"]
    +
    [info.picocli/picocli "4.7.0"]
    Buildr
    -
    'info.picocli:picocli:jar:4.6.3'
    +
    'info.picocli:picocli:jar:4.7.0'
    JBang
    -
    //DEPS info.picocli:picocli:4.6.3
    +
    //DEPS info.picocli:picocli:4.7.0
    @@ -18547,7 +18862,7 @@

    37.1. Build too

    37.2. Source

    By using picocli in source form, you can avoid having an external dependency on picocli. -Picocli has only one source file: CommandLine.java. +Picocli has only one source file: CommandLine.java. This facilitates including picocli in your project: simply copy and paste the code of this file into a file called CommandLine.java, add it to your project, and enjoy!

    @@ -18556,8 +18871,8 @@

    37.2. Source

    @@ -18595,4 +18910,4 @@

    37.2. Source

    handleTocOnResize(); - + \ No newline at end of file diff --git a/docs/man/gen-manpage.html b/docs/man/gen-manpage.html index def3f109b..a155e907b 100644 --- a/docs/man/gen-manpage.html +++ b/docs/man/gen-manpage.html @@ -579,7 +579,7 @@

    Example

    -
    java -Duser.language=de -cp "myapp.jar;picocli-4.6.3.jar;picocli-codegen-4.6.3.jar" picocli.codegen.docgen.manpage.ManPageGenerator my.pkg.MyClass
    +
    java -Duser.language=de -cp "myapp.jar;picocli-4.7.0.jar;picocli-codegen-4.7.0.jar" picocli.codegen.docgen.manpage.ManPageGenerator my.pkg.MyClass
    @@ -587,8 +587,8 @@

    Example

    diff --git a/docs/man/gen-proxy-config.html b/docs/man/gen-proxy-config.html index 9cc2eae9c..6791d972f 100644 --- a/docs/man/gen-proxy-config.html +++ b/docs/man/gen-proxy-config.html @@ -460,7 +460,7 @@

    Description

    Generates a JSON file with the interface names to generate dynamic proxy classes for in the native image. The generated JSON file can be passed to the -H:DynamicProxyConfigurationFiles=/path/to/proxy-config.json option of the native-image GraalVM utility. -See https://www.graalvm.org/reference-manual/native-image/DynamicProxy/

    +See https://www.graalvm.org/22.2/reference-manual/native-image/dynamic-features/DynamicProxy/

    @@ -540,7 +540,7 @@

    Example

    -
    java -cp "myapp.jar;picocli-4.6.3.jar;picocli-codegen-4.6.3.jar" picocli.codegen.aot.graalvm.DynamicProxyConfigGenerator my.pkg.MyClass
    +
    java -cp "myapp.jar;picocli-4.7.0.jar;picocli-codegen-4.7.0.jar" picocli.codegen.aot.graalvm.DynamicProxyConfigGenerator my.pkg.MyClass
    @@ -548,8 +548,8 @@

    Example

    diff --git a/docs/man/gen-reflect-config.html b/docs/man/gen-reflect-config.html index 752c1ed43..100702712 100644 --- a/docs/man/gen-reflect-config.html +++ b/docs/man/gen-reflect-config.html @@ -460,7 +460,7 @@

    Description

    Generates a JSON file with the program elements that will be accessed reflectively for the specified @Command classes. The generated JSON file can be passed to the -H:ReflectionConfigurationFiles=/path/to/reflect-config.json option of the native-image GraalVM utility. -See https://www.graalvm.org/reference-manual/native-image/Reflection/

    +See https://www.graalvm.org/22.2/reference-manual/native-image/dynamic-features/Reflection/

    @@ -536,7 +536,7 @@

    Example

    -
    java -cp "myapp.jar;picocli-4.6.3.jar;picocli-codegen-4.6.3.jar" picocli.codegen.aot.graalvm.ReflectionConfigGenerator my.pkg.MyClass
    +
    java -cp "myapp.jar;picocli-4.7.0.jar;picocli-codegen-4.7.0.jar" picocli.codegen.aot.graalvm.ReflectionConfigGenerator my.pkg.MyClass
    @@ -544,8 +544,8 @@

    Example

    diff --git a/docs/man/gen-resource-config.html b/docs/man/gen-resource-config.html index 0e9aca03f..607004a4b 100644 --- a/docs/man/gen-resource-config.html +++ b/docs/man/gen-resource-config.html @@ -461,7 +461,7 @@

    Description

    Generates a JSON file with the resources and resource bundles to include in the native image. The generated JSON file can be passed to the -H:ResourceConfigurationFiles=/path/to/resource-config.json option of the native-image GraalVM utility. -See https://www.graalvm.org/reference-manual/native-image/Resources/

    +See https://www.graalvm.org/22.2/reference-manual/native-image/dynamic-features/Resources/

    @@ -545,7 +545,7 @@

    Example

    -
    java -cp "myapp.jar;picocli-4.6.3.jar;picocli-codegen-4.6.3.jar" picocli.codegen.aot.graalvm.ResourceConfigGenerator my.pkg.MyClass
    +
    java -cp "myapp.jar;picocli-4.7.0.jar;picocli-codegen-4.7.0.jar" picocli.codegen.aot.graalvm.ResourceConfigGenerator my.pkg.MyClass
    @@ -553,8 +553,8 @@

    Example

    diff --git a/docs/man/generate-completion.html b/docs/man/generate-completion.html index 511a0e407..6293a7905 100644 --- a/docs/man/generate-completion.html +++ b/docs/man/generate-completion.html @@ -487,8 +487,8 @@

    Options

    diff --git a/docs/man/index.html b/docs/man/index.html index 85026e577..b750082db 100644 --- a/docs/man/index.html +++ b/docs/man/index.html @@ -4,7 +4,7 @@ - + Picocli Built-In Tools