def execute_current(self, command_name: str) -> None: """ This method's job is to create a command for running/debugging current file/script and submit it to shell """ if not self.is_waiting_toplevel_command(): self.restart_backend(True, False, 2) filename = get_saved_current_script_filename() if not filename: # user has cancelled file saving return if is_remote_path(filename) or not self._proxy.uses_local_filesystem(): working_directory = None else: # changing dir may be required script_dir = os.path.dirname(filename) if get_workbench().get_option("run.auto_cd") and command_name[0].isupper(): working_directory = script_dir # type: Optional[str] else: working_directory = None args = self._get_active_arguments() self.execute_script(filename, args, working_directory, command_name)
def execute_current(self, command_name: str) -> None: """ This method's job is to create a command for running/debugging current file/script and submit it to shell """ if not self.is_waiting_toplevel_command(): self.restart_backend(True, False, 2) filename = get_saved_current_script_filename() if not filename: # user has cancelled file saving return if ( is_remote_path(filename) and not self._proxy.can_run_remote_files() or is_local_path(filename) and not self._proxy.can_run_local_files() ): self.execute_editor_content(command_name, self._get_active_arguments()) else: if get_workbench().get_option("run.auto_cd") and command_name[0].isupper(): working_directory = get_target_dirname_from_editor_filename(filename) else: working_directory = self._proxy.get_cwd() if is_local_path(filename): target_path = filename else: target_path = extract_target_path(filename) self.execute_script( target_path, self._get_active_arguments(), working_directory, command_name )
def execute_script( self, script_path: str, args: List[str], working_directory: Optional[str] = None, command_name: str = "Run", ) -> None: if working_directory is not None and get_workbench().get_local_cwd() != working_directory: # create compound command # start with %cd cd_cmd_line = construct_cd_command(working_directory) + "\n" next_cwd = working_directory else: # create simple command cd_cmd_line = "" next_cwd = get_workbench().get_local_cwd() if not is_remote_path(script_path) and self._proxy.uses_local_filesystem(): rel_filename = os.path.relpath(script_path, next_cwd) cmd_parts = ["%" + command_name, rel_filename] + args else: cmd_parts = ["%" + command_name, "-c", EDITOR_CONTENT_TOKEN] + args exe_cmd_line = construct_cmd_line(cmd_parts, [EDITOR_CONTENT_TOKEN]) + "\n" # submit to shell (shell will execute it) get_shell().submit_magic_command(cd_cmd_line + exe_cmd_line)