def __init__(self, settings): api_secret = settings["api_secret"] self.session = CodeWarsSession(api_secret) # self.session = codewarssession.CodeWarsSession(api_secret) self.parser = self.setup_cli_interface()
class CodeWarsCli: def __init__(self, settings): api_secret = settings["api_secret"] self.session = CodeWarsSession(api_secret) # self.session = codewarssession.CodeWarsSession(api_secret) self.parser = self.setup_cli_interface() def setup_cli_interface(self): parser = argparse.ArgumentParser(description='Do some code shit') subparser = parser.add_subparsers(dest=ACTION_KEY, help="does some shit and stuff") start_parser = subparser.add_parser("start", help="start training") start_parser.add_argument("language", metavar='language', help="Do somthign") start_parser.add_argument("strategy", metavar='strategy', help="Pick strategy", nargs='?', default="default") start_parser.add_argument("-i", "--id", metavar='id', help="Pick by id") submit_parser = subparser.add_parser("submit", help="submit stuff") submit_parser.add_argument("file", metavar='file', help="Pick file", nargs='?', default=None) submit_parser.add_argument("session", metavar='session_file', help="Specify solution_id", nargs='?', default=None) # test_parser = subparser.add_parser("test", help="test stuff") return parser def run(self): args = self.parser.parse_args() if args.action == START: self.start(args) elif args.action == SUBMIT: self.submit(args) elif args.action == TEST: self.test(args) else: print("Not arguments specified") def submit_current_challenge(self): return self.submit_code(current_code_file) def submit_code(self, codefile, finalize=False): code = self.read_code_file(codefile) self.session.change_current_code( code) # this is simulating saving in the sublime text editor # TODO: we should be able ti differentiate between current challenge and other ones submission = self.session.submit_current_challenge() pretty_print_response(submission) return submission def get_random_problem(self): print(self.session) return def read_code_file(self, codefile): with open(codefile, "r") as current_code: code = current_code.read() return code def create_current_problem_files(self, session): """ Creates the three following files for a given challenge 1. current_challenge.(ext) 2. current_problem.md 3. text_fixtures.(ext) TODO: Properly do extensions """ with open(current_code_file, "w+") as current_code: current_code.write(session.current_challenge.session.code) with open(current_problem, "w+") as problem_description: problem_description.write(session.current_challenge.description) with open(current_tests, "w+") as problem_description: problem_description.write(session.current_challenge.description) def finalize_code(self, session): print(session) return def start(self, args): self.session.start_next_challenge(args.language) self.create_current_problem_files(self.session) def submit(self, args): if args.file is None and args.session is None: output = self.submit_current_challenge() return output else: print("not supported yet") def test(self, args): return
class CodeWarsCli: def __init__(self, settings): api_secret = settings["api_secret"] self.session = CodeWarsSession(api_secret) # self.session = codewarssession.CodeWarsSession(api_secret) self.parser = self.setup_cli_interface() def setup_cli_interface(self): parser = argparse.ArgumentParser(description='Do some code shit') subparser = parser.add_subparsers(dest=ACTION_KEY, help="does some shit and stuff") start_parser = subparser.add_parser("start", help="start training") start_parser.add_argument("language", metavar='language', help="Do somthign") start_parser.add_argument("strategy", metavar='strategy', help="Pick strategy", nargs='?', default="default") start_parser.add_argument("-i", "--id", metavar='id', help="Pick by id") submit_parser = subparser.add_parser("submit", help="submit stuff") submit_parser.add_argument("file", metavar='file', help="Pick file", nargs='?', default=None) submit_parser.add_argument("session", metavar='session_file', help="Specify solution_id", nargs='?', default=None) # test_parser = subparser.add_parser("test", help="test stuff") return parser def run(self): args = self.parser.parse_args() if args.action == START: self.start(args) elif args.action == SUBMIT: self.submit(args) elif args.action == TEST: self.test(args) else: print("Not arguments specified") def submit_current_challenge(self): return self.submit_code(current_code_file) def submit_code(self, codefile, finalize=False): code = self.read_code_file(codefile) self.session.change_current_code(code) # this is simulating saving in the sublime text editor # TODO: we should be able ti differentiate between current challenge and other ones submission = self.session.submit_current_challenge() pretty_print_response(submission) return submission def get_random_problem(self): print(self.session) return def read_code_file(self, codefile): with open(codefile, "r") as current_code: code = current_code.read() return code def create_current_problem_files(self, session): """ Creates the three following files for a given challenge 1. current_challenge.(ext) 2. current_problem.md 3. text_fixtures.(ext) TODO: Properly do extensions """ with open(current_code_file, "w+") as current_code: current_code.write(session.current_challenge.session.code) with open(current_problem, "w+") as problem_description: problem_description.write(session.current_challenge.description) with open(current_tests, "w+") as problem_description: problem_description.write(session.current_challenge.description) def finalize_code(self, session): print(session) return def start(self, args): self.session.start_next_challenge(args.language) self.create_current_problem_files(self.session) def submit(self, args): if args.file is None and args.session is None: output = self.submit_current_challenge() return output else: print("not supported yet") def test(self, args): return