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}
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 }
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}
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'}
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'}
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, }