예제 #1
0
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
예제 #2
0
파일: edit.py 프로젝트: sttell/ASMR
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('Связки с таким именем не существует.')
예제 #3
0
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
예제 #4
0
    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']
예제 #5
0
파일: sl.py 프로젝트: sttell/ASMR
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('Введите опцию или название связки.')
예제 #6
0
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('Опции передаваемые компиляторы очищены.')
예제 #7
0
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))