cli.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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():
  32. parser = argparse.ArgumentParser(description="Convert dec number to banana")
  33. parser.add_argument("--ananas", action="store_true")
  34. parser.add_argument("--avocado", action="store_true")
  35. parser.add_argument("--banana", action="store_true")
  36. parser.add_argument("--ribes", action="store_true")
  37. parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs="+")
  38. parser.add_argument(
  39. "--dictstart", help="Set starting dictionary", type=int, default=0
  40. )
  41. parser.add_argument(
  42. "--shiftend", help="Set shift for ending dictionary", type=int, default=0
  43. )
  44. sub = parser.add_subparsers()
  45. encode = sub.add_parser("encode", help="Convert numbers to words")
  46. encode.add_argument("num", type=int)
  47. encode.set_defaults(func=main_encode)
  48. decode = sub.add_parser("decode", help="Convert words to numbers")
  49. decode.add_argument("word")
  50. decode.set_defaults(func=main_decode)
  51. check = sub.add_parser("check", help="Convert words to numbers")
  52. check.add_argument("word")
  53. check.add_argument("--quiet", "-q", action="store_true")
  54. check.set_defaults(func=main_check)
  55. args = parser.parse_args()
  56. if not hasattr(args, "func"):
  57. print("You need to select one subcommand. \nUse --help", file=sys.stderr)
  58. # parser.print_help()
  59. sys.exit(1)
  60. args.func(args)
  61. def bananarandom():
  62. parser = argparse.ArgumentParser(description="Generate random banana")
  63. parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs="+")
  64. parser.add_argument(
  65. "--dictstart", help="Set starting dictionary", type=int, default=0
  66. )
  67. parser.add_argument(
  68. "--shiftend", help="Set shift for ending dictionary", type=int, default=0
  69. )
  70. parser.add_argument("--minlength", help="Set minimum length", type=int, default=6)
  71. args = parser.parse_args()
  72. print(
  73. banana.bananarandom(
  74. args.dictstart, args.shiftend, args.minlength, args.dictionary
  75. )
  76. )
  77. if __name__ == "__main__":
  78. # pragma: no cover
  79. main()