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()
Example #2
0
 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
Example #4
0
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