def __init__(self, session, contents, error=None): self.session = session self.filenames = [] self.tmp = tempfile() self.tmp_backup = tempfile() self.filenames.append(self.tmp) port = session.ui.run_config.port data = contents.encode("utf-8") with open(self.tmp, "w") as writer: writer.write(data) with open(self.tmp_backup, "w") as writer: writer.write(data) self.error = error if error is not None: self.error_tmp = tempfile() with open(self.error_tmp, "w") as writer: writer.write(error.encode("utf-8")) self.filenames.append(self.error_tmp) args = self.shell_escape([b"-o", b"--"] + list(self.filenames)) self.identifier = str(uuid.uuid4()) self.json_data = json.dumps({ "file_editor_finished": self.identifier}) + "\n" b64_data = self.json_data.encode("base64") b64_data = b64_data.replace(b" ", b"").replace(b"\n", b"") inner_command = self.base_inner_command % ( b" ".join(args), b64_data, port) inner_command = inner_command.replace(b"\\'", b"'\"'\"'") self.command = self.outer_command % inner_command logger.info("Starting terminal editor with id %r: %s", self.identifier, self.command)
def __init__(self, *a, **kw): _TerminalLauncher.__init__(self, *a, **kw) self.tempfile = tempfile() with open(self.tempfile, "w") as temp_writer: temp_writer.write(self.command) self.osascript(self.applescript.format(tempfile=self.tempfile))
def __init__(self, session, contents, error=None): self.session = session self.identifier = str(uuid.uuid4()) self.message = { "embedded_edit": { "identifier": self.identifier, "data": contents, "error": error } } self.logfile = tempfile() with open(self.logfile, "a") as writer: writer.write(json.dumps(self.message)) writer.write('\n') logger.info("Starting embedded editor (logfile %s)", self.logfile) self.session.source.sendmessage(self.message)
def osascript(self, code): temp_code = tempfile() with open(temp_code, "w") as code_writer: code_writer.write(code) subprocess.call([b"osascript", temp_code]) os.unlink(temp_code)