Beispiel #1
0
def test_float_list_mixed():
    parser = clio.ArgParser()
    parser.add_float_list("float f")
    parser.parse(["--float", "1.1", "2.2", "-f", "3.3"])
    assert parser.len_list("float") == 2
    assert parser.get_str_list("float")[0] == 1.1
    assert parser.get_str_list("float")[1] == 3.3
Beispiel #2
0
def test_positional_args():
    parser = clio.ArgParser()
    parser.parse(["foo", "bar"])
    assert parser.has_args() == True
    assert parser.len_args() == 2
    assert parser.get_arg(0) == "foo"
    assert parser.get_arg(1) == "bar"
Beispiel #3
0
def cli():
    parser = clio.ArgParser(helptext, ark.meta.__version__)

    cmd_build = parser.add_cmd("build", build.callback, build.helptext)
    cmd_build.add_flag("clear", "c")
    cmd_build.add_str_opt("out", None, "o")
    cmd_build.add_str_opt("src", None, "s")
    cmd_build.add_str_opt("lib", None, "l")
    cmd_build.add_str_opt("inc", None, "i")
    cmd_build.add_str_opt("theme", None, "t")

    cmd_serve = parser.add_cmd("serve", serve.callback, serve.helptext)
    cmd_serve.add_flag("browser", "b")
    cmd_serve.add_str_opt("host", "localhost", "h")
    cmd_serve.add_int_opt("port", 8080, "p")

    cmd_init = parser.add_cmd("init", init.callback, init.helptext)
    cmd_init.add_flag("empty", "e")

    parser.add_cmd("clear", clear.callback, clear.helptext)
    parser.add_cmd("edit", edit.callback, edit.helptext)
    parser.add_cmd("watch", watch.callback, watch.helptext)

    ark.hooks.event('init_clio', parser)

    parser.parse()
    if not parser.has_cmd():
        parser.help()
Beispiel #4
0
def test_int_list_mixed():
    parser = clio.ArgParser()
    parser.add_int_list("int i")
    parser.parse(["--int", "123", "456", "-i", "789"])
    assert parser.len_list("int") == 2
    assert parser.get_str_list("int")[0] == 123
    assert parser.get_str_list("int")[1] == 789
Beispiel #5
0
def test_string_list_mixed():
    parser = clio.ArgParser()
    parser.add_str_list("string s")
    parser.parse(["--string", "foo", "bar", "-s", "baz"])
    assert parser.len_list("string") == 2
    assert parser.get_str_list("string")[0] == "foo"
    assert parser.get_str_list("string")[1] == "baz"
Beispiel #6
0
def test_command_present():
    parser = clio.ArgParser()
    cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None)
    parser.parse(["cmd"])
    assert parser.has_cmd() == True
    assert parser.get_cmd_name() == "cmd"
    assert parser.get_cmd_parser() == cmd_parser
Beispiel #7
0
def test_multi_options_shortform():
    parser = clio.ArgParser()
    parser.add_flag("bool1")
    parser.add_flag("bool2 b")
    parser.add_str("string1", "default1")
    parser.add_str("string2 s", "default2")
    parser.add_int("int1", 101)
    parser.add_int("int2 i", 202,)
    parser.add_float("float1", 1.1)
    parser.add_float("float2 f", 2.2)
    parser.parse([
        "--bool1",
        "-b",
        "--string1", "value1",
        "-s", "value2",
        "--int1", "303",
        "-i", "404",
        "--float1", "3.3",
        "-f", "4.4",
    ])
    assert parser.get_flag("bool1") == True
    assert parser.get_flag("bool2") == True
    assert parser.get_str("string1") == "value1"
    assert parser.get_str("string2") == "value2"
    assert parser.get_int("int1") == 303
    assert parser.get_int("int2") == 404
    assert parser.get_float("float1") == 3.3
    assert parser.get_float("float2") == 4.4
Beispiel #8
0
def cli():
    parser = clio.ArgParser(apphelp, meta.__version__)

    build_parser = parser.add_cmd("build", cmd_build, buildhelp)
    build_parser.add_flag("clear", "c")
    build_parser.add_str_opt("out", None, "o")
    build_parser.add_str_opt("src", None, "s")
    build_parser.add_str_opt("lib", None, "l")
    build_parser.add_str_opt("inc", None, "i")
    build_parser.add_str_opt("theme", None, "t")

    serve_parser = parser.add_cmd("serve", cmd_serve, servehelp)
    serve_parser.add_flag("browser", "b")
    serve_parser.add_str_opt("host", "localhost", "h")
    serve_parser.add_int_opt("port", 8080, "p")

    init_parser = parser.add_cmd("init", cmd_init, inithelp)
    init_parser.add_flag("empty", "e")

    clear_parser = parser.add_cmd("clear", cmd_clear, clearhelp)
    edit_parser = parser.add_cmd("edit", cmd_edit, edithelp)
    watch_parser = parser.add_cmd("watch", cmd_watch, watchhelp)

    hooks.event('init_clio', parser)

    parser.parse()
    if not parser.has_cmd():
        parser.help()
Beispiel #9
0
def test_float_greedy_list_shortform():
    parser = clio.ArgParser()
    parser.add_float_list("float f", True)
    parser.parse(["-f", "1.1", "2.2", "-f", "3.3"])
    assert parser.len_list("float") == 3
    assert parser.get_str_list("float")[0] == 1.1
    assert parser.get_str_list("float")[1] == 2.2
    assert parser.get_str_list("float")[2] == 3.3
Beispiel #10
0
def test_int_greedy_list_shortform():
    parser = clio.ArgParser()
    parser.add_int_list("int i", True)
    parser.parse(["-i", "123", "456", "-i", "789"])
    assert parser.len_list("int") == 3
    assert parser.get_str_list("int")[0] == 123
    assert parser.get_str_list("int")[1] == 456
    assert parser.get_str_list("int")[2] == 789
Beispiel #11
0
def test_string_greedy_list_shortform():
    parser = clio.ArgParser()
    parser.add_str_list("string s", True)
    parser.parse(["-s", "foo", "bar", "-s", "baz"])
    assert parser.len_list("string") == 3
    assert parser.get_str_list("string")[0] == "foo"
    assert parser.get_str_list("string")[1] == "bar"
    assert parser.get_str_list("string")[2] == "baz"
Beispiel #12
0
def test_condensed_options():
    parser = clio.ArgParser()
    parser.add_flag("bool b")
    parser.add_str("string s", "default")
    parser.add_int("int i", 101)
    parser.add_float("float f", 1.1)
    parser.parse(["-bsif", "value", "202", "2.2"])
    assert parser["bool"] == True
    assert parser["string"] == "value"
    assert parser["int"] == 202
    assert parser["float"] == 2.2
Beispiel #13
0
def parse():
    global parser

    # Root parser.
    parser = clio.ArgParser(helptext, ivy.__version__)

    # Register the 'build' command.
    cmd_build = parser.add_cmd("build", build.helptext, build.callback)
    cmd_build.add_flag("clear c")
    cmd_build.add_str("out o", None)
    cmd_build.add_str("src s", None)
    cmd_build.add_str("lib l", None)
    cmd_build.add_str("inc i", None)
    cmd_build.add_str("res r", None)
    cmd_build.add_str("theme t", None)

    # Register the 'clear' command.
    parser.add_cmd("clear", clear.helptext, clear.callback)

    # Register the 'init' command.
    parser.add_cmd("init", init.helptext, init.callback)

    # Register the 'serve' command.
    cmd_serve = parser.add_cmd("serve", serve.helptext, serve.callback)
    cmd_serve.add_flag("no-browser")
    cmd_serve.add_str("directory d", None)
    cmd_serve.add_str("host h", "localhost")
    cmd_serve.add_int("port p", 0)
    cmd_serve.add_str("b browser", None)

    # Register the 'watch' command.
    cmd_watch = parser.add_cmd("watch", watch.helptext, watch.callback)
    cmd_watch.add_flag("clear c")
    cmd_watch.add_str("out o", None)
    cmd_watch.add_str("src s", None)
    cmd_watch.add_str("lib l", None)
    cmd_watch.add_str("inc i", None)
    cmd_watch.add_str("res r", None)
    cmd_watch.add_str("theme t", None)
    cmd_watch.add_flag("view v")

    # Fire the 'cli' event. Plugins can use this event to register their own
    # custom commands and options.
    ivy.hooks.event('cli', parser)

    # Parse the application's command line arguments.
    parser.parse()
Beispiel #14
0
def test_multi_options_empty():
    parser = clio.ArgParser()
    parser.add_flag("bool1")
    parser.add_flag("bool2 b")
    parser.add_str("string1", "default1")
    parser.add_str("string2 s", "default2")
    parser.add_int("int1", 101)
    parser.add_int("int2 i", 202,)
    parser.add_float("float1", 1.1)
    parser.add_float("float2 f", 2.2)
    parser.parse([])
    assert parser.get_flag("bool1") == False
    assert parser.get_flag("bool2") == False
    assert parser.get_str("string1") == "default1"
    assert parser.get_str("string2") == "default2"
    assert parser.get_int("int1") == 101
    assert parser.get_int("int2") == 202
    assert parser.get_float("float1") == 1.1
    assert parser.get_float("float2") == 2.2
Beispiel #15
0
def test_command_with_options():
    parser = clio.ArgParser()
    cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None)
    cmd_parser.add_flag("bool")
    cmd_parser.add_str("string", "default")
    cmd_parser.add_int("int", 101)
    cmd_parser.add_float("float", 1.1)
    parser.parse([
        "cmd",
        "foo", "bar",
        "--string", "value",
        "--int", "202",
        "--float", "2.2",
    ])
    assert parser.has_cmd() == True
    assert parser.get_cmd_name() == "cmd"
    assert parser.get_cmd_parser() == cmd_parser
    assert cmd_parser.has_args() == True
    assert cmd_parser.len_args() == 2
    assert cmd_parser["string"] == "value"
    assert cmd_parser["int"] == 202
    assert cmd_parser["float"] == 2.2
Beispiel #16
0
def test_bool_list_mixed():
    parser = clio.ArgParser()
    parser.add_flag_list("bool b")
    parser.parse(["--bool", "-bb"])
    assert parser.len_list("bool") == 3
Beispiel #17
0
def test_bool_list_shortform():
    parser = clio.ArgParser()
    parser.add_flag_list("bool b")
    parser.parse(["-b", "-bb"])
    assert parser.len_list("bool") == 3
Beispiel #18
0
def test_command_absent():
    parser = clio.ArgParser()
    cmd_parser = parser.add_cmd("cmd", "helptext", lambda p: None)
    parser.parse([])
    assert parser.has_cmd() == False
Beispiel #19
0
def test_option_parsing_switch():
    parser = clio.ArgParser()
    parser.parse(["foo", "--", "--bar", "--baz"])
    assert parser.len_args() == 3
Beispiel #20
0
def test_positional_args_as_floats():
    parser = clio.ArgParser()
    parser.parse(["1.1", "11.1"])
    assert parser.get_args_as_floats()[0] == 1.1
    assert parser.get_args_as_floats()[1] == 11.1
Beispiel #21
0
def test_bool_list_longform():
    parser = clio.ArgParser()
    parser.add_flag_list("bool")
    parser.parse(["--bool", "--bool", "--bool"])
    assert parser.len_list("bool") == 3
Beispiel #22
0
def test_positional_args_list_syntax():
    parser = clio.ArgParser()
    parser.parse(["foo", "bar"])
    assert parser[0] == "foo"
    assert parser[1] == "bar"
Beispiel #23
0
def test_float_list_missing():
    parser = clio.ArgParser()
    parser.add_int_list("float")
    parser.parse([])
    assert parser.len_list("float") == 0
Beispiel #24
0
def test_positional_args_empty():
    parser = clio.ArgParser()
    parser.parse([])
    assert parser.has_args() == False
Beispiel #25
0
def test_unrecognised_shortform_option():
    parser = clio.ArgParser()
    with pytest.raises(SystemExit):
        parser.parse(["-f"])
Beispiel #26
0
def test_bool_option_dict_syntax():
    parser = clio.ArgParser()
    parser.add_flag("bool")
    parser.parse(["--bool"])
    assert parser["bool"] == True
Beispiel #27
0
def test_string_option_empty():
    parser = clio.ArgParser()
    parser.add_str("string", "default")
    parser.parse([])
    assert parser.get_str("string") == "default"
Beispiel #28
0
def test_bool_list_empty():
    parser = clio.ArgParser()
    parser.add_flag_list("bool")
    parser.parse([])
    assert parser.len_list("bool") == 0
Beispiel #29
0
def test_string_option_missing():
    parser = clio.ArgParser()
    parser.add_str("string", "default")
    parser.parse(["foo", "bar"])
    assert parser.get_str("string") == "default"
Beispiel #30
0
def test_unrecognised_longform_option():
    parser = clio.ArgParser()
    with pytest.raises(SystemExit):
        parser.parse(["--foo"])