Beispiel #1
0
    def listFolderStrategies(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data
        folder = os.path.join(domain_data['solutions'], 'strategies')
        if not os.path.exists(folder):
            os.makedirs(folder)
            return {'do': 'listFolderStrategies', 'files': []}

        files = []
        for filename in sorted(os.listdir(folder)):
            if not filename.endswith('.' + domain_data['extension']):
                continue

            abs_filename = os.path.join(folder, filename)

            # if not os.path.isfile(abs_filename):
            #     continue

            abs_filename = os.path.join(folder, filename)

            f_stats = os.stat(abs_filename)
            t_changed = time.time() - f_stats.st_mtime

            with open(abs_filename) as fh:
                content = fh.read()

            files.append({
                'name': filename,
                'filename': abs_filename,
                'changed': int(t_changed),
                'content': content,
            })

        return {'do': 'listFolderStrategies', 'files': files}
Beispiel #2
0
    def initContent(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data
        # if not domain_data.get('key'):
        #     raise CheckiOClientConfigError('Domain is not configure. Please do $ checkio config')
        if not domain_data.get('solutions'):
            raise CheckiOClientConfigError('Solutions are not synchronized yet. Please do $ checkio sync -h')

        paths = solutions_paths(domain_data['solutions'], domain_data['extension'])
        if data['slug'] in paths:

            filename = paths[data['slug']]

            with open(filename, 'r', encoding='utf-8') as fh:
                content = code_for_sync(fh.read())

            return {
                'do': 'initContent',
                'filename': filename,
                'content': content,
                'slug': data['slug']
            }
        else:
            filename = gen_filename(data['slug'], data['station'])
            init_code_file(filename, 
                gen_env_line(data['slug']) + '\n' + data['content'])

            return {
                'do': 'initContent',
                'filename': filename,
                'slug': data['slug'],
                'isNew': True
            }
Beispiel #3
0
    def syncLocalContent(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data

        with open(data['filename'], 'r', encoding='utf-8') as fh:
            content = code_for_sync(fh.read())

        return {'do': 'syncLocalContent', 'content': content}
Beispiel #4
0
    def deleteStrategyFile(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data
        folder = os.path.join(domain_data['solutions'], 'strategies')
        filename = os.path.join(folder, data['name'])
        if os.path.exists(filename):
            os.remove(filename)

        return {'do': 'deleteStrategyFile'}
Beispiel #5
0
    def syncWebContent(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data
        delimiter = get_end_desc_line() + '\n'

        with open(data['filename'], 'r', encoding='utf-8') as fh:
            content = fh.read()
            if delimiter in content:
                description = content.split(delimiter)[0] + delimiter
            else:
                description = gen_env_line(data['slug']) + '\n'

        with open(data['filename'], 'w', encoding='utf-8') as fh:
            fh.write(description + data['content'])

        return {'do': 'syncWebContent'}
Beispiel #6
0
    def saveStrategyFile(data):
        conf.set_default_domain_by_inter(data['interpreter'])
        domain_data = conf.default_domain_data
        folder = os.path.join(domain_data['solutions'], 'strategies')
        if not os.path.exists(folder):
            os.makedirs(folder)

        name = data['name']
        filename = os.path.join(folder, name)
        with open(filename, 'w') as fh:
            fh.write(data['content'])

        return {
            'do': 'saveStrategyFile',
            'name': name,
            'filename': filename,
        }