private List<ConfigOption> createConfigOptions() {
        List<ConfigOption> configOptions = new ArrayList<ConfigOption>();

        ConfigOption sourceDir = new ConfigOptionBuilder( "sourceDir" )
                .setCommandLineOptionWithArgument(
                        new CommandLineOptionBuilder( "--sourceDir" ).setArgumentDelimiter( "=" ).setShortPrefix( "--dir" )
                                .setVisualPlaceholder( "path" ).build(),
                        new ToFile() )
                .setDescription( "the source directory where the JGiven JSON files are located (default: .)" )
                .setDefaultWith( new File( "." ) )
                .build();

        ConfigOption targetDir = new ConfigOptionBuilder( "targetDir" )
                .setCommandLineOptionWithArgument(
                        new CommandLineOptionBuilder( "--targetDir" ).setArgumentDelimiter( "=" ).setShortPrefix( "--todir" )
                                .setVisualPlaceholder( "path" ).build(),
                        new ToFile() )
                .setDescription( "the directory to generate the report to (default: .)" )
                .setDefaultWith( new File( "." ) )
                .build();

        ConfigOption title = new ConfigOptionBuilder( "title" )
                .setCommandLineOptionWithArgument(
                        new CommandLineOptionBuilder( "--title" ).setArgumentDelimiter( "=" ).setVisualPlaceholder( "string" ).build(),
                        new ToString() )
                .setDescription( "the title of the report (default: JGiven Report)" )
                .setDefaultWith( "JGiven Report" )
                .build();

        ConfigOption excludeEmptyScenarios = new ConfigOptionBuilder( "excludeEmptyScenarios" )
                .setCommandLineOptionWithArgument(
                        new CommandLineOptionBuilder( "--exclude-empty-scenarios" ).setArgumentDelimiter( "=" )
                                .setVisualPlaceholder( "boolean" ).build(),
                        new ToBoolean() )
                .setDescription( "(default: false)" )
                .setDefaultWith( false )
                .build();

        configOptions.addAll( Arrays.asList( sourceDir, targetDir, title, excludeEmptyScenarios ) );
        additionalConfigOptions( configOptions );
        return configOptions;
    }
Basic configuration for a report with an extendable interface
The configMap should always be in a valid state and have all possible flags, except the optional ones without a default (like --help)
For examples see {@link com.tngtech.jgiven.report.asciidoc.AsciiDocReportConfig}
jgiven-core/src/main/java/com/tngtech/jgiven/report/AbstractReportConfig.java