#
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
option.error.invalid.option="{0}" is not a recognized option. Use "{1}" or "{2}" to see a list of all supported options.

nashorn.options = Usage: jjs [option=value]* [filename.js]+ [-- options...]\n\
                \n\
                Valid options are:

#
# Localized meta descriptions
#
nashorn.options.param = param
nashorn.options.default = default

#
# Which option is "help".
#
nashorn.options.help.key = nashorn.option.help

#
# Which option is "xhelp".
#
nashorn.options.xhelp.key = nashorn.option.xhelp

#
# Which option is "D".
#
nashorn.options.D.key = nashorn.option.D

##
## Grammar: at least short or long form. Arguments are optional, in that case they are given as
##
## params - a description of the parameters for command line usage
## name - the name of the option, e.g. "--long-name"
## short_name - the short name of the option, e.g. "-l"
## type - the type of the option, currently allowed: boolean, integer, string, log, timezone. defaults to boolean if left out
## is_undocumented - should this option never appear in the online help. defaults to no.
## desc - description of what the option does
## default - default value of the option. e.g. debug.lines is true by default. Not set means option not available by default
## dependency - does this arg imply another arg, e.g. scripting -> anon-functions
## confict - does this arg conflict with another arg e.g trace && instrument
## value_next_arg - is the opton's value passed as next argument in command line?
##
## At least short_name or name needs to be in place for an argument descriptor to be valid.

nashorn.option.help = {                       \
    name="-help",                             \
    short_name="-h",                          \
    desc="Print help for command line flags." \
}

nashorn.option.xhelp = {                               \
    name="-xhelp",                                     \
    is_undocumented=true,                              \
    desc="Print extended help for command line flags." \
}

nashorn.option.anon.functions = {                \
    name="--anon-functions",                     \
    short_name="-af",                            \
    is_undocumented=true,                        \
    desc="Always allow functions as statements." \
}

nashorn.option.class.cache.size ={                            \
    name="--class-cache-size",                                \
    short_name="--ccs",                                       \
    desc="Size of the Class cache size per global scope.",    \
    is_undocumented=true,                                     \
    type=Integer                                              \
}

nashorn.option.classpath ={                                   \
    name="-classpath",                                        \
    short_name="-cp",                                         \
    desc="-cp path. Specify where to find user class files.", \
    value_next_arg=true,                                      \
    type=String                                               \
}

nashorn.option.compile.only = {       \
    name="--compile-only",			  \
    short_name="-co",                 \
    is_undocumented=true,             \
    desc="Compile without running.",  \
    type=Boolean                      \
}

nashorn.option.d = {                                             \
    name="--dump-debug-dir",                                     \
    short_name="-d",                                             \
    is_undocumented=true,                                        \
    params="<path>",                                             \
    desc="specify a destination directory to dump class files.", \
    type=String                                                  \
}

nashorn.option.doe                = {   \
    name="-dump-on-error",              \
    short_name="-doe",                  \
    desc="Dump a stack trace on errors."\
}

nashorn.option.empty.statements = {          \
    name="--empty-statements",               \
    is_undocumented=true,                    \
    desc="Preserve empty statements in AST." \
}

nashorn.option.early.lvalue.error = {                                      \
    name="--early-lvalue-error",                                           \
    is_undocumented=true,                                                  \
    desc="invalid lvalue expressions should be reported as early errors.", \
    type=Boolean,                                                          \
    default=true                                                           \
}

nashorn.option.fullversion = {                 \
    name="-fullversion",                       \
    short_name="-fv",                          \
    desc="Print full version info of Nashorn." \
}

nashorn.option.log = {                                                       \
    name="--log",                                                            \
    is_undocumented=true,                                                    \
    params="<module:level>,*",                                               \
    desc="Enable logging of a given level for a given number of sub systems. \
        [for example: --log=fields:finest,codegen:info]",                    \
    type=Log                                                                 \
}

nashorn.option.debug.lines = {                          \
    name="--debug-lines",                               \
    is_undocumented=true,                               \
    desc="Generate line number table in .class files.", \
    default=true                                        \
}

nashorn.option.debug.locals = {                           \
    name="--debug-locals",                                \
    is_undocumented=true,                                 \
    desc="Generate local variable table in .class files." \
}

nashorn.option.lazy.compilation = {                                                                      \
    name="--lazy-compilation",                                                                           \
    is_undocumented=true,                                                                                \
    desc="EXPERIMENTAL: Use lazy code generation strategies - do not compile the entire script at once." \
}

nashorn.option.loader.per.compile = {              \
    name="--loader-per-compile",                   \
    is_undocumented=true,                          \
    desc="Create a new class loader per compile.", \
    default=true                                   \
}

nashorn.option.no.syntax.extensions = {            \
    name="--no-syntax-extensions",                 \
    short_name="--nse",                            \
    is_undocumented=true,                          \
    desc="No non-standard syntax extensions",      \
    default=-anon-functions=false                  \
}

nashorn.option.package = {                                     \
    name="--package",                                          \
    is_undocumented=true,                                      \
    desc="Package to which generated .class files are added.", \
    params="<package>",                                        \
    type=String,                                               \
    default=""                                                 \
}

nashorn.option.parse.only = {       \
    name="--parse-only", 			\
    is_undocumented=true,           \
    desc="Parse without compiling." \
}

nashorn.option.profile.callsites = {   \
    name="--profile-callsites",        \
    short_name="-pcs",                 \
    is_undocumented=true,              \
    desc="Dump callsite profile data." \
}

nashorn.option.print.ast = {            \
    name="--print-ast",                 \
    is_undocumented=true,               \
    desc="Print abstract syntax tree."  \
}

nashorn.option.print.lower.ast = {              \
    name="--print-lower-ast",                   \
    is_undocumented=true,                       \
    desc="Print lowered abstract syntax tree."  \
}

nashorn.option.print.code = { \
    name="--print-code",      \
    is_undocumented=true,     \
    desc="Print bytecode."    \
}

nashorn.option.print.no.newline = {                     \
    name="--print-no-newline",                          \
    is_undocumented=true,                               \
    desc="Print function will not print new line char." \
}

nashorn.option.print.parse = {   \
    name="--print-parse",        \
    is_undocumented=true,        \
    desc="Print the parse tree." \
}

nashorn.option.print.lower.parse = {            \
    name="--print-lower-parse",                 \
    is_undocumented=true,                       \
    desc="Print the parse tree after lowering." \
}

nashorn.option.print.symbols = {   \
    name="--print-symbols",        \
    is_undocumented=true,          \
    desc="Print the symbol table." \
}

nashorn.option.D = {                                                          \
    name="-D",                                                                \
    desc="-Dname=value. Set a system property. This option can be repeated.", \
    type=String                                                               \
}

nashorn.option.strict = {              \
    name="-strict",                    \
    desc="Run scripts in strict mode." \
}

nashorn.option.scripting = {            \
    name="-scripting",                  \
    desc="Enable scripting features.",	\
    dependency="--anon-functions=true"  \
}

nashorn.option.timezone = {                    \
    name="-timezone",                          \
    short_name="-t",                           \
    params="<timezone>",                       \
    desc="Set timezone for script execution.", \
    type=TimeZone                              \
}

nashorn.option.stdout = {                                               \
    name="--stdout",                                                    \
    is_undocumented=true,                                               \
    type=String,                                                        \
    params="<output console>",                                          \
    desc="Redirect stdout to a filename or to another tty, e.g. stderr" \
}

nashorn.option.stderr = {                                               \
    name="--stderr",                                                    \
    is_undocumented=true,                                               \
    type=String,                                                        \
    params="<output console>",                                          \
    desc="Redirect stderr to a filename or to another tty, e.g. stdout" \
}

nashorn.option.trace.callsites = {                                              \
    name="--trace-callsites",                                                   \
    short_name="-tcs",                                                          \
    is_undocumented=true,                                                       \
    type=keyvalues,                                                             \
    params="[=[option,]*]",                                                     \
    desc="Enable callsite trace mode. Options are: miss [trace callsite misses] \
    enterexit [trace callsite enter/exit], objects [print object properties]"   \
}

nashorn.option.verify.code = {              \
    name="--verify-code",                   \
    is_undocumented=true,                   \
    desc="Verify byte code before running." \
}

nashorn.option.version = {                \
    name="-version",                      \
    short_name="-v",                      \
    desc="Print version info of Nashorn." \
}

