cli.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. """Console script for banana."""
  2. import argparse
  3. import sys
  4. import banana
  5. def get_codec(args):
  6. if args.banana:
  7. return banana.BananaCodec()
  8. if args.ananas:
  9. return banana.AnanasCodec()
  10. kwargs = {}
  11. if args.dictionary:
  12. kwargs["dictionary"] = args.dictionary
  13. if args.dictstart:
  14. kwargs["dictstart"] = args.dictstart
  15. if args.shiftend:
  16. kwargs["shiftend"] = args.shiftend
  17. return banana.Codec(**kwargs)
  18. def main_encode(args):
  19. print(get_codec(args).encode(args.num))
  20. def main_decode(args):
  21. print(get_codec(args).decode(args.word))
  22. def main_check(args):
  23. if get_codec(args).is_valid(args.word):
  24. if not args.quiet:
  25. print("yes")
  26. sys.exit(0)
  27. else:
  28. if not args.quiet:
  29. print("no")
  30. sys.exit(1)
  31. def main_random(args):
  32. print(get_codec(args).random(minlength=args.minlength))
  33. def main():
  34. parser = argparse.ArgumentParser(description="Convert dec number to banana")
  35. parser.add_argument("--ananas", action="store_true")
  36. parser.add_argument("--avocado", action="store_true")
  37. parser.add_argument("--banana", action="store_true")
  38. parser.add_argument("--ribes", action="store_true")
  39. parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs="+")
  40. parser.add_argument(
  41. "--dictstart", help="Set starting dictionary", type=int, default=0
  42. )
  43. parser.add_argument(
  44. "--shiftend", help="Set shift for ending dictionary", type=int, default=0
  45. )
  46. sub = parser.add_subparsers()
  47. encode = sub.add_parser("encode", help="Convert numbers to words")
  48. encode.add_argument("num", type=int)
  49. encode.set_defaults(func=main_encode)
  50. decode = sub.add_parser("decode", help="Convert words to numbers")
  51. decode.add_argument("word")
  52. decode.set_defaults(func=main_decode)
  53. check = sub.add_parser("check", help="Convert words to numbers")
  54. check.add_argument("word")
  55. check.add_argument("--quiet", "-q", action="store_true")
  56. check.set_defaults(func=main_check)
  57. rand = sub.add_parser("random", help="Generate random banana")
  58. rand.add_argument("--minlength", help="Set minimum length", type=int, default=6)
  59. rand.set_defaults(func=main_random)
  60. args = parser.parse_args()
  61. if not hasattr(args, "func"):
  62. print("You need to select one subcommand. \nUse --help", file=sys.stderr)
  63. # parser.print_help()
  64. sys.exit(1)
  65. args.func(args)
  66. if __name__ == "__main__":
  67. # pragma: no cover
  68. main()