client.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import sys
  2. import time
  3. import client_controller
  4. from util import debug
  5. def fake_loading_bar(msg, delay=0.100):
  6. if len(msg) >= 32:
  7. raise AssertionError('Loading bar label too large')
  8. msg += ': '
  9. print(msg, end='')
  10. sys.stdout.flush()
  11. for _ in range(78 - len(msg)):
  12. if not debug:
  13. time.sleep(delay)
  14. print('#', end='')
  15. sys.stdout.flush()
  16. print('\n', end='')
  17. sys.stdout.flush()
  18. def load():
  19. print('Loading...')
  20. fake_loading_bar('Initializing fake loading bars')
  21. fake_loading_bar('Loading data from disk')
  22. fake_loading_bar('Loading available commands')
  23. fake_loading_bar('Updating indices')
  24. fake_loading_bar('Waiting')
  25. print('Done.\n\n')
  26. def welcome():
  27. print('''
  28. $$$$$$\ $$\
  29. $$ __$$\ $$ |
  30. $$ / $$ | $$$$$$\ $$$$$$$ | $$$$$$\ $$$$$$\ $$$$$$\ $$$$$$\
  31. $$ | $$ |$$ __$$\ $$ __$$ |$$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\
  32. $$ | $$ |$$ | \__|$$ / $$ |$$$$$$$$ |$$ | \__|$$$$$$$$ |$$ | \__|
  33. $$ | $$ |$$ | $$ | $$ |$$ ____|$$ | $$ ____|$$ |
  34. $$$$$$ |$$ | \$$$$$$$ |\$$$$$$$\ $$ | \$$$$$$$\ $$ |
  35. \______/ \__| \_______| \_______|\__| \_______|\__|
  36. To display an overview of available commands type \'help\'.
  37. ''')
  38. allowed_commands = ['help',
  39. 'login',
  40. 'register',
  41. 'depot',
  42. 'orders',
  43. 'news',
  44. 'activate_key',
  45. 'buy',
  46. 'sell',
  47. 'transactions',
  48. 'orders_on']
  49. def one_command():
  50. cmd = input('*> ').strip()
  51. cmds = cmd.split(';')
  52. for cmd in cmds:
  53. cmd = cmd.split()
  54. # cmd = [cmd.strip() for cmd in cmd]
  55. if cmd == []:
  56. continue
  57. if cmd[0] not in allowed_commands:
  58. print('Invalid command:', cmd[0])
  59. else:
  60. method_to_call = getattr(client_controller, cmd[0])
  61. # noinspection PyBroadException
  62. try:
  63. method_to_call(*cmd[1:])
  64. except TypeError:
  65. print('Invalid command syntax.')
  66. except Exception:
  67. print('An error occurred while executing a command.')
  68. if __name__ == '__main__':
  69. load()
  70. welcome()
  71. while True:
  72. one_command()