def c_opt(fp, ln, lt): links = load_links() # Load links dict settings = load_settings() # Load settigs dict # if link name not in links list if ln in links.keys(): print('Связка с таким именем существует.') return 1 # if link type 'NOTYPE' if lt == 'NOTYPE': # create files, update link c_path = create_file(ln + '.c') out_path = create_file(ln + '.out') link_info = ['c', c_path, out_path] links[ln] = link_info update_links(links) else: try: c_path = create_file(fp[C_SPEC]) out_path = create_file(ln + '.out') link_info = ['c', c_path, out_path] links[ln] = link_info update_links(links) except KeyError: print( 'Произошла ошбика создания связки. Неверно указано расширение создаваемого файла.' ) return 1 except: print( 'Произошла ошбика создания связки. Неверно указан файл или не удалось создать файл с таким именем.' ) return 1
def run(args, opts): settings = load_settings() # load settiongs from json tr = settings['text-reader'] # get text-reader links = load_links() # load links dict # dict 'opt_name' = > function opt_dict = {'-e': opt_e, '-c': opt_c, '-s': opt_s, '-o': opt_o, 'no_opt': no_opt} # if args list not empty and 1st argument in links list if args and args[0] in links.keys(): link = links[args[0]] # get link info # if opts list empty if not opts: opt_dict['no_opt'](tr, link) # else called opt func from optrions dict else: opt_dict[opts[0]](tr, link) else: print('Связки с таким именем не существует.')
def nasm_opt(fp, ln, lt): links = load_links() settings = load_settings() if ln in links.keys(): print('Связка с таким именем существует.') return 1 if lt == 'NOTYPE': asm_path = create_file(ln + '.asm') out_path = create_file(ln + '.out') link_info = ['nasm', asm_path, out_path] links[ln] = link_info update_links(links) else: try: asm_path = create_file(fp[NASM_SPEC]) out_path = create_file(ln + '.out') link_info = ['nasm', asm_path, out_path] links[ln] = link_info update_links(links) except KeyError: print( 'Произошла ошбика создания связки. Неверно указано расширение создаваемого файла.' ) return 1 except: print( 'Произошла ошбика создания связки. Неверно указан файл или не удалось создать файл с таким именем.' ) return 1
def _run_link(self, command): """ The method is responsible for starting the bundle passed for execution """ main_settings = load_settings() # Basic ASMR Settings link_setting = self.links[ command.name] # Settings of the transmitted link out_file_path = link_setting[-1] # Path to the out file ex_files = link_setting[1:-1] # Path to the execute files link_type = link_setting[0] # Type of the link # Checking the correctness of the paths to the link files if self._is_correct_link( ex_files) and link_setting[0] != 'nasm': # For not NASM print('Output:\n') os.system( encode_run(main_settings['compiler'], main_settings['compiler-flags'], ex_files, out_file_path)) return STRING_TO_CODE['EXIT_SUCCESS'] if self._is_correct_link( ex_files) and link_setting[0] == 'nasm': # For NASM print('Output:\n') file_path = os.path.abspath(ex_files[0]) file_name = file_path.split('/')[-1].split('.')[0] command = NASM_TEMPLATE.format(file_path, file_name, file_name, file_name, file_name, file_name) os.system(command) else: print('Incorrect data in link {}.\nCheck asmr salinks'.format( command.name)) return STRING_TO_CODE['INCORRECT_LINK_DATA']
def run(args, opts): settings = jsl.load_settings() links = jsl.load_links() type_dict = {'s':'Assembler', 'sc': 'Assembler + C', 'c': 'C', 'nasm': 'NASM'} opts_funcs = {'-a': a_flag, '-s': s_flag, '-sc': sc_flag, '-c': c_flag, '-nasm': nasm_flag} if opts: try: opts_funcs[opts[0]](links, type_dict) return 0 except KeyError: print('Такой опции не существует в команде SL. Введите asmr help sl') except IndexError: pass if args: if args[0] in links.keys(): link_info = links[args[0]] print(f'Связка {args[0]} ---> Тип: {type_dict[link_info[0]]}. Кол-во исполняемых файлов: {len(link_info) - 1} шт.') print(f'Исполняемые файлы:') for i, file in enumerate(link_info[1:]): print(f' #{i + 1}: {file}') return 0 else: print('Связки с таким именем не найдено.') return 1 print('Введите опцию или название связки.')
def run(args, opts): settings = load_settings() # load settings if opts: for opt in opts: # TEST NEW FLAG compiler = settings['compiler'] testc_file_path = os.path.abspath('./Tests/test.c') tests_file_path = os.path.abspath('./Tests/test.s') mtestc = os.path.abspath('./Tests/mul_test.c') mtests = os.path.abspath('./Tests/mul_test.s') command1 = f'{compiler} {opt} {testc_file_path}' command2 = f'{compiler} {opt} {tests_file_path}' command3 = f'{compiler} {opt} {mtestc} {mtests}' res1 = sbp.call(command1, shell=True) res2 = sbp.call(command2, shell=True) res3 = sbp.call(command3, shell=True) if str(res1) == 1: print( 'Возникли проблемы. Компилятор не может обрабатывать файлы С.' ) return 1 elif str(res2) == 1: print( 'Возникли проблемы. Компилятор не может обрабатывать файлы Assembler.' ) return 1 elif str(res3) == 1: print( 'Возникли проблемы. Компилятор не может обрабатывать файлы Assembler + C.' ) return 1 else: pass # Update flags settings['compiler-flags'] = opts save_settings(settings) print('Опции успешно установлены.') else: # reset flags settings['compiler-flags'] = [] save_settings(settings) print('Опции передаваемые компиляторы очищены.')
def run(args, opts): settings = load_settings() compiler = settings['compiler'] opts = settings['compiler-flags'] text_reader = settings['text-reader'] tmp = ''' Текущие настройки сборки связок: Компилятор: {} Передаваемые компилятору опции: {} Для редактирования файлов назначен редактор: {} ''' opt_string = f'[{opts[0]}' for opt in opts[1:]: opt_string += f', {opt}' opt_string += ']' print(tmp.format(compiler, opt_string, text_reader))