|
11 | 11 | -V --version Show the package version
|
12 | 12 | """
|
13 | 13 |
|
14 |
| -import docopt |
| 14 | +import argparse |
15 | 15 |
|
16 | 16 | import dice
|
17 |
| -from dice.exceptions import DiceBaseException |
| 17 | +import dice.exceptions |
18 | 18 |
|
19 |
| -__version__ = "dice v{0} by {1}".format(dice.__version__, dice.__author__) |
| 19 | +__version__ = "dice v{0} by {1}.".format(dice.__version__, dice.__author__) |
20 | 20 |
|
| 21 | +parser = argparse.ArgumentParser(prog="dice", description="Parse and evaluate dice notation.", epilog=__version__) |
| 22 | +parser.add_argument('-m', '--min', action="store_true", help="Make all rolls the lowest possible result.") |
| 23 | +parser.add_argument('-M', '--max', action="store_true", help="Make all rolls the highest possible result.") |
| 24 | +parser.add_argument('-D', '--max-dice', action="store", type=int, metavar='N', help="Set the maximum number of dice per element.") |
| 25 | +parser.add_argument('-v', '--verbose', action="store_true", help="Show additional output.") |
| 26 | +parser.add_argument('-V', '--version', action="version", version=__version__, help="Show the package version.") |
| 27 | +parser.add_argument('expression', nargs='+') |
21 | 28 |
|
22 |
| -def main(argv=None): |
23 |
| - """Run roll() from a command line interface""" |
24 |
| - args = docopt.docopt(__doc__, argv=argv, version=__version__) |
25 |
| - verbose = bool(args["--verbose"]) |
26 | 29 |
|
27 |
| - f_roll = dice.roll |
28 |
| - kwargs = {} |
| 30 | +def main(args=None): |
| 31 | + """Run roll() from a command line interface""" |
| 32 | + args = parser.parse_args(args=args) |
| 33 | + f_kwargs = {} |
29 | 34 |
|
30 |
| - if args["--min"]: |
| 35 | + if args.min: |
31 | 36 | f_roll = dice.roll_min
|
32 |
| - elif args["--max"]: |
| 37 | + elif args.max: |
33 | 38 | f_roll = dice.roll_max
|
| 39 | + else: |
| 40 | + f_roll = dice.roll |
34 | 41 |
|
35 |
| - if args["--max-dice"]: |
36 |
| - try: |
37 |
| - kwargs["max_dice"] = int(args["--max-dice"]) |
38 |
| - except ValueError: |
39 |
| - print("Invalid value for --max-dice: '%s'" % args["--max-dice"]) |
40 |
| - exit(1) |
| 42 | + if args.max_dice: |
| 43 | + f_kwargs['max_dice'] = args.max_dice |
41 | 44 |
|
42 |
| - expr = " ".join(args["<expression>"]) |
| 45 | + f_expr = " ".join(args.expression) |
43 | 46 |
|
44 | 47 | try:
|
45 |
| - roll, kwargs = f_roll(expr, raw=True, return_kwargs=True, **kwargs) |
| 48 | + roll, kwargs = f_roll(f_expr, raw=True, return_kwargs=True, **f_kwargs) |
46 | 49 |
|
47 |
| - if verbose: |
| 50 | + if args.verbose: |
48 | 51 | print("Result: ", end="")
|
49 | 52 |
|
50 | 53 | print(str(roll.evaluate_cached(**kwargs)))
|
51 | 54 |
|
52 |
| - if verbose: |
| 55 | + if args.verbose: |
53 | 56 | print("Breakdown:")
|
54 | 57 | print(dice.utilities.verbose_print(roll, **kwargs))
|
55 |
| - except DiceBaseException as e: |
| 58 | + except dice.exceptions.DiceBaseException as e: |
56 | 59 | print("Whoops! Something went wrong:")
|
57 | 60 | print(e.pretty_print())
|
58 | 61 | exit(1)
|
0 commit comments